乱用不同的Perl安装

Ren*_*ato 3 linux perl yum padre

我试图升级Perl并将我的计算机弄得一团糟我正在运行RHEL6.5,64bits,这就是事情:

  • 我安装了perl-5.10.1,工作得很好.这装好了,我可以从yum看到它
  • 我想安装Padre,一个Perl IDE,但至少需要v5.11 [我太近了!:(]
  • 在我可以访问的repos中没有更新版本的Perl(我有一个限制,我不能添加新的回购)
  • 我得到了老板的批准,从www.perl.org下载perl-5.20 .0并试图安装它

......一团糟开始了!

  • 首先,我用自己的id安装了新的perl,并将perl推送到我家的目录下的某个地方
  • 我用'perl -v'进行测试,可以看到我的env指向较新的安装,但是,yum从未认识到它(不是真正的问题)
  • 当我试图安装Padre时,看起来不知何故它已经硬编码了原始的perl(来自/ usr/bin)并仍然声称有更新的5.11.
  • 试图解决它,我确实再次安装了新的perl,现在使用root,使其在/ usr树下推送perl ...安装,但是将perl推送到/ usr/local/bin,而不是/ usr/bin
  • 再说一次,我还有一个perl安装,但Padre仍在寻找/ usr/bin上的那个

我放弃了Padre,并删除了与它相关的文件,以及我家主目录上安装的perl,但是我现在编写的一些perl脚本会抛出如下错误:

perl -cw "xmltest.pl" (in directory: /home/myid/scripts/xmltest.pl)
perl: symbol lookup error: /usr/lib64/perl5/auto/Data/Dumper/Dumper.so: undefined symbol: Perl_Istack_sp_ptr
Compilation failed.
Run Code Online (Sandbox Code Playgroud)

...和Data :: Dumper不是唯一的...每次我禁用其中一个模块,另一个模块以相同或相似的方式挂起

从我读到的内容来看,似乎这个问题与最初为一个perl版本安装的模块有关,并且被另一个版本调用,但是,我已经强制我使用的模块直接从CPAN重新安装,并且它们仍然失败

问题:如何安全地从当前的perl安装中解脱出来,并执行一个新的干净安装,能否使用它与这些版本冲突?

我主要担心的是我拥有的依赖于Perl的众多应用程序,而且我在卸载时没有破坏

任何帮助将非常感激.

jm6*_*666 7

你应该:

  1. 清理

    • ~/.profile从任何不需要的路径清除(注释掉),等等
    • 从您那里清理任何新的perl安装$HOME(确保移动到安全的地方)
    • 简而言之,尝试将您的环境恢复到以前的工作状态
  2. relog,(注销,登录)

  3. 修复你的系统perl.那是意味着,

    • 阅读@Sam Varshavchik的回答
    • 使用包管理器(5.10)从您的发行版重新安装它.
    • 这一步应该覆盖你造成的混乱.
    • 测试一下!
    • 在你确定之前不要继续,一切都像以前一样正常.

获得的经验教训:永远不要覆盖你的系统perl

  1. 学习

  2. 安装perlbrew

    • 运行安装命令 \wget -O - http://install.perlbrew.pl | bash
    • 应该没有错误完成
    • 按照说明如何修改您的启动文件,例如~/.profile...(您需要在末尾添加一行)
    • 检查你~/perl5/perlbrew/bin应该包含prelbrewpatchperl
  3. 重新记录

  4. 设置新的perl,运行

    • perlbrew init #init environment
    • perlbrew available #show你可以安装什么perl
    • perlbrew install 5.20.0 #will需要几分钟 - 取决于你的系统速度
    • perlbrew install-cpanm
    • perlbrew list #校验
    • perlbrew switch perl-5.20.0 #activate新安装的perl 5.20

检查您的安装

  • ~/perl5/perlbrew/bin你应该有3个脚本:prelbrew,patchperl,cpanm
  • perl -v 应该返回5.20
  • type cpanm - 应该回来 ~/perl5/perlbrew/bin/cpanm

你完成了.

  1. CPAN模块

您可以安装新模块cpanm,例如:

检查~/perl5/perlbrew/perls/perl-5.20.0/bin/新命令

您需要更新自己的 perl脚本的shebang行

#!/usr/bin/env perl
Run Code Online (Sandbox Code Playgroud)

我希望不要忘记任何事情,也许其他更有经验的perl-gurus会添加/编辑/纠正更多.

无论如何,在现实中,步骤5,6,7更容易听起来(通过阅读本文)并且可以在几分钟内完成.

  • 请@SamVarshavchik,了解perlbrew.`cpanm`对于perlbrew是本地的,并且整个`perlbrew`与系统perl完全隔离,(在自己的独立envorinment中运行,在它自己的目录树中)并且你不需要是`root`安装它.如果你不是root用户,那么就不能在系统中写入perl或者意外.当有人使用`cpanm`作为系统范围的perl(作为root,或使用`--sudo`)时,你的评论是可以的 - 但这不是'perlbrew'的情况.所以,你正在哭泣,但在错误的坟墓上... _;) (2认同)