我perlbrew用来管理我的Perl环境.当我perlbrew按照文档第一次安装时,它安装了所有内容~/perl5/perlbrew,我现在觉得不合适.
文件说明:
目录〜/ perl5/perlbrew将包含所有安装perl可执行文件,库,文档,lib,site_libs.在文档中,该目录称为"perlbrew root".如果您需要将其设置为其他位置,因为您的HOME具有有限的配额,您可以通过在运行安装程序之前设置PERLBREW_ROOT环境变量来实现:
Run Code Online (Sandbox Code Playgroud)export PERLBREW_ROOT=/opt/perl5/perlbrew curl -kL http://install.perlbrew.pl | bash
问题:如何移动PERLBREW_ROOT目录/opt/perl5/perlbrew而不是~/perl5/perlbrew?
不幸的是,你不能简单地移动已安装的Perl.对于初学者来说,添加的路径@INC是硬编码的.我向您介绍四种解决方案,其中我推荐第三种解决方案.
但首先,我建议使用/opt/perlbrew而不是/opt/perl5/perlbrew因为不需要额外的水平.下面的代码段假设您遵循此建议.
从头开始,重新安装perl你的任何版本.
Con:对于每个构建,您还必须重新安装构建已安装的所有模块.这意味着您需要重新测试所有应用程序.这是耗时的,并非没有风险.
移动perlbrew目录,但尝试修复安装.
如果~并且/opt位于同一文件系统上,请按如下方式移动安装:
mv ~/perl5/perlbrew /opt/
# Adjust file ownership and permissions as desired.
Run Code Online (Sandbox Code Playgroud)
如果~并且/opt位于不同的文件系统上,请按如下方式移动安装:
( cd ~/perl5 ; tar c perlbrew ) | ( cd /opt ; tar x )
# Adjust file ownership and permissions as desired.
Run Code Online (Sandbox Code Playgroud)
然后,编辑由以下内容打印的每个文件中的路径:
for q in /opt/perlbrew/perls/* ; do
"$q/bin/perl" -le'
use Config;
require "Config_heavy.pl";
print $INC{"Config.pm"};
print $INC{"Config_heavy.pl"};
'
done
Run Code Online (Sandbox Code Playgroud)
您还需要编辑#!许多脚本的shebang()行.
骗局:很多工作(尽管不像第一个选项那么多),脆弱,不能保证工作.
创建未来的构建/opt/perlbrew,但将现有构建保留在原来的位置.
安装完成后perlbrew在/opt/perlbrew,运行以下命令:
cd /opt/perlbrew/perls
for q in ~/perl5/perlbrew/perls/* ; do
ln -s "$q"
done
Run Code Online (Sandbox Code Playgroud)
亲:超级简单快捷.随着时间的推移,您可以逐步淘汰~/perl5/perlbrew(通过删除不需要的构建,按照选项1替换它们,或根据选项2移动它们).
骗:每个应该有权访问的人/opt/perlbrew也需要访问你的~/perl5/perlbrew.
不要改变PERLBREW_ROOT.只需制作/opt/perlbrew一个符号链接.
ln -s ~/perl5/perlbrew /opt/perlbrew
Run Code Online (Sandbox Code Playgroud)
亲:超级简单快捷.
骗:每个应该有权访问的人/opt/perlbrew也需要访问你的~/perl5/perlbrew.