标签: perlbrew

如何控制提交网格作业时使用的Perl版本?

我正在使用SGE(Sun Grid Engine)向网格提交作业.我还perlbrew用来管理我安装的Perl版本.我写了一些简短的sh脚本,用于运行perl脚本,需要特定的Perl版本(5.12.2),如下所示:

#!/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
Run Code Online (Sandbox Code Playgroud)

现在,当我提交单个作业时,一切正常,但是当我提交很多时,我开始收到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
Run Code Online (Sandbox Code Playgroud)

所以我猜这/home/dave/perl5/perlbrew/bin/perlbrew switch perl-5.12.2 …

bash grid perl sungridengine perlbrew

5
推荐指数
1
解决办法
784
查看次数

是否存在非全局等价的perlbrew?

我现在正在使用perlbrew来管理perl的多个版本,但perlbrew是全局的.如果我perlbrew switch perl-5.10.1在任何shell中,那么所有shell和脚本现在将使用perl版本5.10.1.没有孤立.有没有办法让perlbrew开关在shell本地,或者是否有类似的工具能够在本地更改活动perl?

environment perl multiple-versions perlbrew

5
推荐指数
2
解决办法
492
查看次数

使用perlbrew可以按架构进行多次安装吗?

我希望能够安装多个版本的Perl,但我也需要通过架构来安装它们.

我知道我可以使用perlbrew来获得版本安装:5.10.1,5.12.3,5.16.0等.我找不到通过架构,Solaris-sparc,Solaris-x86,Linux安装的方法-i686,Linux-x86_64等

做一个手动安装,我可以做到这一点

做手动安装并不是什么大不了的事,但perlbrew使管理等方面更容易.

编辑:正如在评论中提到的,我正在使用跨各种平台安装的通用主目录NFS.

architecture perl multiple-versions perlbrew

5
推荐指数
1
解决办法
671
查看次数

Perlbrew列表和错误的版本号

我安装了两个版本的Perl --as(只用主编号命名版本)

  • 5.20.0安装为5.20
  • 5.20.0 安装线程为 5.20t

这是输出 perlbrew list

* 5.20 (5.20.0)
  5.20t (5.20.0)
Run Code Online (Sandbox Code Playgroud)

然后我将Perl升级为5.20.1使用

$ perlbrew upgrade-perl
Upgrading 5.20 to 5.20.1
Installing /Users/corti/perl5/perlbrew/build/perl-5.20.1 into ~/perl5/perlbrew/perls/5.20

This could take a while. You can run the following command on another shell to track the status:

  tail -f ~/perl5/perlbrew/build.perl-5.20.1.log

5.20 is successfully installed.
Run Code Online (Sandbox Code Playgroud)

Perl似乎正确升级(v5.20.1):

$ perl -version

This is perl 5, version 20, subversion 1 (v5.20.1) built for darwin-2level

Copyright 1987-2014, Larry Wall

Perl …
Run Code Online (Sandbox Code Playgroud)

perl perlbrew

5
推荐指数
1
解决办法
697
查看次数

如何使用plenv或perlbrew将编译选项传递给perl

我有一台机器在Windows上使用Ubuntu上的Bash运行Windows 10.它使用某种没有适当硬链接支持的FUSE文件系统.

因此,典型的perl编译失败.如果我想编译,我需要做:

echo "dont_use_nlink='define'" >> Policy.sh
./Configure -des
make
make install
Run Code Online (Sandbox Code Playgroud)

我理想的是能够使用perlbrewplenv管理我的perls并将dont_use_nlink参数传递给我构建的任何perl.有没有办法做到这一点?

perl perlbrew plenv

5
推荐指数
1
解决办法
456
查看次数

perlbrew 应用程序的 systemd 服务?

我的同事编写了一个名为“Newlands”的 Dancer psgi 应用程序,它使用了 perlbrew。我正在尝试使用 systemd 让应用程序在系统启动时启动。我有这个服务文件:

[Unit]
Description=Newlands
After=network-online.target

[Service]
Type=forking
User=newlands
WorkingDirectory=/home/newlands/working/newlands
PIDFile=/home/newlands/newlands.pid
ExecStartPre=/bin/bash -c 'env > /tmp/newlands.environment'
ExecStartPre=/bin/mkdir -p /tmp/newlands/newlands/session/
ExecStart=/usr/local/bin/starman --host 127.0.0.1 --listen :5000 --env production --preload-app --workers 12 --daemonize --error-log /var/log/newlands/newlands.error.log --pid /home/newlands/newlands.pid bin/newlandia.psgi
EnvironmentFile=-/tmp/newlands.environment
Restart=always

[Install]
WantedBy=multi-user.target
Run Code Online (Sandbox Code Playgroud)

然而,即使使用 ExecStartPre 技巧(我从http://tech.akom.net/archives/93-Getting-a-systemd-unit-to-read-your-.bashrc-file-for-its-environment获得) .html,修改后不使用 --login 选项),与 perlbrew 相关的环境变量都没有正确设置。因此,当 @INC 在库实际所在的 /home/newlands/.perlbrew/libs/perl-5.20.1@newlands 中不包含任何内容时,我最终会出现错误,指示在 @INC 中找不到缺少的库。

当实际以 newlands 用户身份登录时, /tmp/newlands.environment 处的输出文件似乎仍然与“env”的输出有很大不同。我想获取 /opt/perlbrew/etc/bashrc 或类似的东西,但我知道这是不可能的。

有小费吗?谢谢!

perl perlbrew dancer systemd

5
推荐指数
1
解决办法
850
查看次数

在 Big Sur 上使用 perlbrew 安装 perl 时出错

我正在尝试使用 perlbrew 在我的 macOS 环境中安装 perl 版本 5.33.4。我无法理解为什么它在安装过程中失败。

我开始使用 安装\curl -L https://install.perlbrew.pl | bashperlbrew,然后在我的 zshenv 中添加了这一行:source ~/perl5/perlbrew/etc/bashrc并开始使用perlbrew install perl-5.33.4命令安装 perl 。我也尝试过不同的 perl 版本,但问题是一样的。

这是记录的错误:

# Failed test 20 - array should contain one result or more: libc => () at t/DynaLoader.t line 127
#      got "0"
# expected >= "1"
../ext/DynaLoader/t/DynaLoader.t ..................................... 
Failed 1/44 subtests 


Test Summary Report
-------------------
../ext/DynaLoader/t/DynaLoader.t                                   (Wstat: 0 Tests: 44 Failed: 1)
  Failed test:  20
Files=2652, Tests=1183275, 624 wallclock secs …
Run Code Online (Sandbox Code Playgroud)

macos perl perlbrew

5
推荐指数
1
解决办法
778
查看次数

Perlbrew安装perl需要永远,只需安装已编译的perl

perlbrew install perl编译并运行所有需要永久安装在我的机器上的测试(> 60分钟).是否可以使用perlbrew安装pre-built-test-run perl,就像apt-get那样可以节省时间?

perl perlbrew

4
推荐指数
1
解决办法
398
查看次数

Perl - Local :: lib不能始终在@INC中找到本地路径 - 与perlbrew冲突?

我没有对系统的root访问权限,所以我使用local :: lib安装perl模块,我使用bootstrapping方法安装它:

perl Makefile.PL --bootstrap=~/foo
make test && make install
echo '[ $SHLVL -eq 1 ] && eval "$(perl -I$HOME/perl5/lib/perl5 -Mlocal::lib)"' >>~/.bash_profile
Run Code Online (Sandbox Code Playgroud)

然后我成功安装了cpanm并使用cpanm来安装模块FAST.但是,当我尝试使用fasgrep函数时,我收到以下错误:

% fasgrep
Can't locate FAST.pm in @INC (@INC contains: /usr/local/lib64/perl5 /usr/local/share/perl5 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5) at /home/dpearton/perl5/bin/fasgrep line 5.
Run Code Online (Sandbox Code Playgroud)

我已经检查过FAST.pm在本地lib中是可用的,但系统似乎并没有在那里寻找它.

根据路径变量,它应该在正确的位置寻找:

$ echo PATH=$PATH ; env|sort|grep PERL
PERL5LIB=/home/dpearton/perl5/lib/perl5:/home/dpearton/perl5/lib/perl5
PERLBREW_BASHRC_VERSION=0.73
PERLBREW_HOME=/home/dpearton/.perlbrew
PERLBREW_ROOT=/home/dpearton/perl5/perlbrew
PERL_LOCAL_LIB_ROOT=/home/dpearton/perl5
PERL_MB_OPT=--install_base "/home/dpearton/perl5"
PERL_MM_OPT=INSTALL_BASE=/home/dpearton/perl5
Run Code Online (Sandbox Code Playgroud)

我甚至将导出PER5LIB = $ HOME/perl5/lib/perl5添加到我的.bash_profile中它仍然无效.

我很擅长使用p​​erl.问题可能是我还安装了perlbrew吗?如果是这样,我怎样才能对prelbrew进行"干净"的卸载?

perl perlbrew locallib

4
推荐指数
1
解决办法
259
查看次数

为什么Perlbrew会在Mac OS X Lion上推出bash?

当我跑...

perlbrew switch perl-5.16.0

......我明白了......

A sub-shell is launched with perl-5.16.0 as the activated perl. Run 'exit' to finish it.

...然后出现一个bash提示符.

这是预期的行为吗?如果没有,我该如何解决?

perl perlbrew

3
推荐指数
1
解决办法
950
查看次数