不同 Perl 安装造成的混乱

2024-05-01

我尝试升级 Perl,却把我的电脑搞得一团糟 我目前运行的是 RHEL6.5,64 位,事情是这样的:

  • 我安装了 perl-5.10.1,并且运行良好。这是安装好的, 我可以从百胜看到它
  • 我想安装 Padre,一个 Perl IDE,但这至少需要 v5.11 [我已经非常接近了! :( ]
  • 我可以访问的存储库中没有 Perl 的新版本(并且我有一个限制,无法添加新的存储库)
  • 我得到老板的批准从 www.perl.org 下载 perl-5.20 .0 并尝试安装它

...混乱开始了!

  • 首先,我使用自己的 id 安装了新的 perl,然后将 perl 推送到我的主目录下的某个位置
  • 我使用“perl -v”进行测试,可以看到我的环境指向较新的安装,但是,yum 从未识别过它(不是真正的问题)
  • 当我尝试安装 Padre 时,似乎不知何故它硬编码了原始 perl(来自 /usr/bin),并且仍然声称需要更新的版本(如 5.11)。
  • 为了修复它,我再次安装了新的perl,现在使用root,使其将perl推送到/usr树下...它安装了,但将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.

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

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

Question:我怎样才能安全地摆脱当前的 perl 安装,并执行新的全新安装,以便能够在没有这些版本冲突的情况下使用它?

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

任何帮助将不胜感激。


你应该:

  1. cleanup

    • 清理(​​注释掉)你的~/.profile来自任何不需要的路径等
    • 清除您的所有新安装的 Perl$HOME(一定要转移到安全的地方)
    • 简而言之,尝试返回您的环境进入之前的工作状态
  2. 重新登录,(注销,登录)

  3. 修复你的系统 perl。这意味着,

    • 阅读@Sam Varshavchik 的回答
    • 使用包管理器 (5.10) 从您的发行版重新安装它。
    • 此步骤应该会覆盖您造成的混乱。
    • 测试一下!
    • 在确保一切正常之前不要继续。

学过的知识:永远不要覆盖你的系统 perl

  1. learning

    • 通读perlbrew.pl
    • 再次重复上一步,尤其是使用
    • 主页
    • http://perlbrew.pl/Perlbrew-and-Friends.html http://perlbrew.pl/Perlbrew-and-Friends.html
    • https://metacpan.org/pod/App::perlbrew https://metacpan.org/pod/App::perlbrew
    • https://metacpan.org/pod/perlbrew https://metacpan.org/pod/perlbrew
  2. 安装 perlbrew

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

  4. 设置新的 perl,运行

    • perlbrew init#初始化环境
    • perlbrew available#显示你可以安装什么perl
    • perlbrew install 5.20.0#将需要几分钟 - 取决于您的系统速度
    • perlbrew install-cpanm
    • perlbrew list#查看
    • perlbrew switch perl-5.20.0#激活新安装的perl 5.20

检查您的安装

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

你完成了。

  1. CPAN模块

您可以使用以下命令安装新模块cpanm, like:

  • 应用

  • cpanm cpan 过时的 https://metacpan.org/pod/cpan-outdated
  • cpanm App::Ack https://metacpan.org/pod/App::Ack
  • cpanm Unicode::争斗 https://metacpan.org/pod/Unicode::Tussle
  • cpanm Perl::整洁 https://metacpan.org/pod/Perl::Tidy
  • cpanm Perl::评论家 https://metacpan.org/pod/Perl::Critic
  • 收藏品

  • cpanm 任务::驼鹿 https://metacpan.org/pod/Task::Moose
  • cpanm 任务::普拉克 https://metacpan.org/pod/Task::Plack
  • cpanm 任务::Unicode https://metacpan.org/pod/Task::Unicode
  • modules

  • cpanm 路径::小 https://metacpan.org/pod/Path::Tiny
  • cpanm 尝试::小 https://metacpan.org/pod/Try::Tiny
  • cpanm JSON https://metacpan.org/pod/JSON
  • cpanm YAML https://metacpan.org/pod/YAML
  • etc...

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

您将需要更新your ownPerl 脚本的 shebang 行

#!/usr/bin/env perl

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

无论如何,实际上,步骤 5、6、7 听起来要容易得多(通过阅读本文),并且可以在几分钟内完成。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

不同 Perl 安装造成的混乱 的相关文章

随机推荐

  • 快速查看生成器 iOS

    有没有办法扩展 iOS 上的快速查找框架来处理未知的文件类型 就像在 Mac 上一样 我不想切换到我的应用程序来预览文件 就像在电子邮件或 iMessage 中查看图像文件一样 我想删除必须选择使用哪个应用程序来打开文件的步骤 在 Mac
  • Oracle 10 中的本地临时表(适用于存储过程的范围)

    我是甲骨文新手 我需要在存储过程中处理大量数据 我正在考虑使用临时表 我正在使用连接池 并且该应用程序是多线程的 有没有一种方法可以为每次调用存储过程创建不同的表实例来创建临时表 以便来自多个存储过程调用的数据不会混淆 你说你是 Oracl
  • Visual Studio 代码调试器未连接到 SAM 本地

    根据 AWS 文档 我将像这样启动本地 SAM sam local start api d 5858 我的 launch json 中有以下内容 version 0 2 0 configurations name Attach to SAM
  • 如何更改“go build”的库路径

    我正在尝试与 goncurses 一起工作 在 Centos 6 上 ncurses 库很旧 5 7 想要 5 9 所以我从源代码构建了 ncurses 并将其安装到 usr lib usr include 等中 如何告诉 go get 针
  • 使用异步收集 Publisher 值

    我一直在为我们拥有的一些组合代码编写一些单元测试 我遇到了一些问题 我想我已经简化了这个测试中的各个部分 注意 这不是一个测试 这是我试图理解为什么其中一个测试不起作用 func test collectingPassthroughValu
  • 如何以 Express 方式传输响应?

    我一直在尝试让一个快速应用程序以流形式发送响应 var Readable require stream Readable var rs Readable app get report function req res res statusC
  • VideoView SeekTo 在不同设备上工作异常 - Android

    我在视频视图上使用此代码来寻求自定义位置 但它在三星设备上工作正常 但在索尼设备上 视频寻求开始位置 开始 我想让视频回到上次暂停的位置 创建视频视图 VideoView mVideoPlayer setVideoPath ViDpath
  • RS 232 中断信号

    我有一个RS232信号捕获设备 而且效果很好 我需要一些帮助来理解数据 基本上我们购买它是因为我们正在处理 80 年代末使用串行通信的机器控制器 尽管知道端口参数 但我们运气不佳 从我转储的数据来看 机器控制正在使用中断信号作为其协议的一部
  • 如何禁用 django-rest-framework 的管理风格可浏览界面?

    我在用django rest framework http django rest framework org 它提供了一个很棒的 Django 管理风格的可浏览的自文档 API 但任何人都可以访问这些页面并使用该界面添加数据 POST 我
  • 如何使用 Material-ui@next TextField 错误道具

    我想使用 Material UI Next 文本字段error props link https material ui next com api text field textfield 道具类型为boolean 之前版本的 Materi
  • 将日期添加到日历热图 R

    I m plotting a calender heat map using Paul Bleicher s calenderHeat R code https raw githubusercontent com iascchen VisH
  • 我可以使用 DataContract 序列化程序序列化 Dictionary 吗?

    我计划构建一个 WCF 服务 返回序列化为 JSON 的通用字典对象 不幸的是 序列化失败 因为对象可能总是不同的 KnownTypes 没有帮助 因为属性类型是 Dictionary 而且我不能说 KnownType 因为类可能总是不同
  • 在 .NET 中可以将数组或列表作为属性返回吗?

    我正在阅读 MSDN 上的一些文档 了解有关某些内容是否应该作为属性或方法实现的注意事项 我特别遇到了一条规则 对此我有疑问 如果 操作返回一个数组 请使用方法 而不是属性 页面在这里 在属性和方法之间进行选择 https msdn mic
  • 使用 serde 通过数值作为类型标识符对 json 进行反序列化

    我对 Rust 很陌生 并且有 OOP 背景 所以 也许我误解了一些 Rust 基础知识 我想用 serde 解析固定的 json 结构 该结构代表不同的消息类型之一 每条消息都有一个数字type属性来区分它 各个消息类型的确切结构大多不同
  • 仅隐藏输入字段的内容

    我有一个与输入字段重叠的跨度 当您在输入字段中键入内容时 它会更新其内容 尽管我将跨度完美地定位在输入文本上 但您仍然可以看到文本更加粗体并且字母更粗 field nr 1 with span nr 2 without 我尝试隐藏整个输入字
  • 如何在 git log 中查看提交的 git bisect 状态?

    我正在做 git bisect 到目前为止我发现了一些好的和坏的提交 我可以通过运行来确认git bisect log 但是 如果我为我的分支运行 git loggit log graph decorate full origin mast
  • Windows API 代码包 - ShellFile 不生成 PDF 位图

    使用之前堆栈溢出问题中的代码 System Drawing Bitmap image ShellFile f ShellFile FromFilePath fileLocation image f Thumbnail ExtraLargeB
  • 如何在 Postgres 中对包含语义版本的列进行排序

    有没有办法高效存储https semver org https semver orgPostgres 中的版本字符串 然后执行最新查询 例如假设列的值为 1 1 0 1 0 0 1 2 0 1 0 1 rc 1 B001 我想排序并获取最新
  • Socket IO聊天例子很慢

    我是 Node js 和 Socket IO 的新手 我想尝试一下解释的示例 https socket io get started chat https socket io get started chat 我做了我必须做的一切 它起作用
  • 不同 Perl 安装造成的混乱

    我尝试升级 Perl 却把我的电脑搞得一团糟 我目前运行的是 RHEL6 5 64 位 事情是这样的 我安装了 perl 5 10 1 并且运行良好 这是安装好的 我可以从百胜看到它 我想安装 Padre 一个 Perl IDE 但这至少需