Я работаю с SGE (Sun Grid Engine), чтобы отправить задания в сетку. Я также использую perlbrew
для управления моими установленными версиями Perl. я написал несколько коротких sh
сценариев, которые я использую, чтобы запустить скрипт на языке Perl, который требует определенной версии Perl (5.12.2), которые выглядят примерно так:Как я могу контролировать версию Perl, используемую при отправке заданий на сетку?
#!/bin/bash
#$-S /bin/bash
source /home/dave/.bash_profile
/home/dave/perl5/perlbrew/bin/perlbrew switch perl-5.12.2
/home/dave/scripts/proc_12.pl --in=/home/dave/in/in.store --dir=/home/dave/in/dir2 --params=/home/dave/in/params.p
Теперь, когда я представляю одно задание все работает хорошо, но когда я представляю много, я начинаю получать perlbrew
соответствующие сообщения об ошибках, как:
ln: creating symbolic link `current' to `perl-5.12.2': File exists
ln: creating symbolic link `/home/dave/perl5/perlbrew/bin/cpan' to `/home/dave/perl5/perlbrew/perls/current/bin/cpan': File exists
ln: creating symbolic link `/home/dave/perl5/perlbrew/bin/cpan2dist' to `/home/dave/perl5/perlbrew/perls/current/bin/cpan2dist': File exists
ln: cannot remove `/home/dave/perl5/perlbrew/bin/cpanp': No such file or directory
ln: cannot remove `/home/dave/perl5/perlbrew/bin/enc2xs': No such file or directory
ln: cannot remove `/home/dave/perl5/perlbrew/bin/find2perl': No such file or directory
Так что я предполагаю, что /home/dave/perl5/perlbrew/bin/perlbrew switch perl-5.12.2
линия вызывает проблемы.
Что я могу сделать?
Как я могу запустить свой скрипт с использованием perl-5.12.2 (по умолчанию 5.8.8)?
Помимо «не использовать perlbrew для этого» ответить другие, это действительно выглядит немного как вопрос, который можно решить с блокировкой во время perlbrew? Поскольку это находится в кластере, вас может заинтересовать File::SharedNFSLock. Предостережение: Я написал его. – tsee