不同 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 安装造成的混乱 的相关文章

  • PHP 从命令行启动 gui 程序,但 apache 不启动

    首先 我阅读了有类似问题的人的一些帖子 但所有答案都没有超出导出 DISPLAY 0 0 和 xauth cookies 这是我的问题 提前感谢您的宝贵时间 我开发了一个小库 它使用 OpenGL 和 GLSL 渲染货架 过去几天我将它包装
  • 将 PDF 转换为 600dpi 的 TIFF 和 jpg 96 dpi

    我想使用 ImageMagick 从 Python 脚本将 pdf 转换为 600 dpi 的 tiff 和 96 dpi 的 jpg 我使用 imagemagick 命令行完成了这项任务 但我想使用python中的Imagemagick将
  • 如何在shell中输出返回码?

    我正在尝试通过调用自定义 shell 脚本sh bin sh c myscript sh gt log txt 2 gt 1 echo 该命令的输出是创建的后台进程的 PID 我想指导 bin sh保存返回码myscript sh到某个文件
  • 使用 sh 运行 bash 脚本

    我有 bash 脚本 它需要 bash 另一个人尝试运行它 sh script name sh 它失败了 因为 sh 是他的发行版中 dash 的符号链接 ls la bin sh lrwxrwxrwx 1 root root 4 Aug
  • 有谁知道在哪里定义硬件、版本和序列号。 /proc/cpuinfo 的字段?

    我想确保我的 proc cpuinfo 是准确的 目前它输出 Hardware am335xevm Revision 0000 Serial 0000000000000000 我可以在代码中的哪里更改它以给出实际值 这取决于 Linux 的
  • Linux 中什么处理 ping?

    我想覆盖 更改 linux 处理 ping icmp echo 请求数据包的方式 这意味着我想运行自己的服务器来回复传入的 icmp 回显请求或其他 数据包 但为了使其正常工作 我想我需要禁用 Linux 的默认 ping icmp 数据包
  • 如何授予 apache 使用 NTFS 分区上的目录的权限?

    我在一台带有 20GB 硬盘的旧机器上运行 Linux Lubutu 12 10 我有一个 1 TB 外部硬盘 上面有一个 NTFS 分区 在该分区上 有一个 www 目录 用于保存我的网页内容 它在启动时自动安装为 media t515
  • 客户端浏览器关闭时服务器端 Perl CGI 脚本中断

    我已经尝试解决一个小问题很长一段时间了 但似乎我无法解决 我编写了一个 HTML 页面 它在提交表单时调用 perl CGI 脚本 该 CGI 在服务器端执行一定数量的任务 我让脚本将这些任务的步骤打印到 HTML 页面上的 iframe
  • 快速 Perl signint 处理程序

    收到 Ctrl C 时处理程序清理的最方便 最清晰的方法是什么 例如 当我的套接字服务器以这种方式被终止时 TCP 套接字永远不会关闭 我想要一个很好的衬里 我可以将其放在程序的顶部来设置 sigint 处理程序 或类似 atexit 的东
  • 在脚本内使用不带密码的 sudo

    由于某种原因 我需要作为用户在没有 sudo 的情况下运行脚本 script sh 该脚本需要 root 权限才能工作 我认为将 sudo 放入 script sh 中是唯一的解决方案 让我们举个例子 script sh bin sh su
  • BASH:将数据从平面文件导入模板

    我有一个平面记录文件 每行有 33 行 我需要将此文件格式化为模板中的规格 模板为 DOS 格式 源文件为 NIX 格式 该模板具有必须遵守的特定缩进和间距 我想到了几个选择 BASH 与经典的 nix 工具 sed awk grep 等
  • 是否可以创建一个脚本来保存和恢复权限?

    我正在使用 Linux 系统 需要对一组嵌套文件和目录进行一些权限实验 我想知道是否没有某种方法可以保存文件和目录的权限 而不保存文件本身 换句话说 我想保存权限 编辑一些文件 调整一些权限 然后将权限恢复到目录结构中 将更改的文件保留在适
  • 当 grep "\\" XXFile 我得到“尾随反斜杠”

    现在我想查找是否有包含 字符的行 我试过grep XXFile但它暗示 尾随反斜杠 但当我尝试时grep XXFile没关系 谁能解释一下为什么第一个案例无法运行 谢谢 区别在于 shell 处理反斜杠的方式 当你写的时候 在双引号中 sh
  • “make install”将库安装在 /usr/lib 而不是 /usr/lib64

    我正在尝试在 64 位 CentOS 7 2 上构建并安装一个库 为了这个目的我正在跑步 cmake DCMAKE BUILD TYPE Release DCMAKE INSTALL PREFIX usr DCMAKE C COMPILER
  • php exec 返回的结果比直接进入命令行要少

    我有一个 exec 命令 它的行为与通过 Penguinet 给 linux 的相同命令不同 res exec cd mnt mydirectory zcat log file gz echo res 当将命令直接放入命令行时 我在日志文件
  • 如何减去两个 gettimeofday 实例?

    我想减去两个 gettimeofday 实例 并以毫秒为单位给出答案 这个想法是 static struct timeval tv gettimeofday tv NULL static struct timeval tv2 gettime
  • Linux:如何设置进程的时区?

    我需要设置在 Linux 机器上启动的各个进程的时区 我尝试设置TZ变量 在本地上下文中 但它不起作用 有没有一种方法可以使用与系统日期不同的系统日期从命令行运行应用程序 这可能听起来很愚蠢 但我需要一种sandbox系统日期将被更改的地方
  • 在两次之间每分钟执行一次 Cronjob

    我需要在 crontab 中每分钟运行一个 bash 脚本8 45am and 9 50am每天的 Code 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 8 home pull sh gt ho
  • 使用 Grep 查找两个短语之间的文本块(包括短语)

    是否可以使用 grep 来高亮所有以以下内容开头的文本 mutablePath CGPathCreateMutable 并以以下内容结尾 CGPathAddPath skinMutablePath NULL mutablePath 这两个短
  • 如果在等待“read -s”时中断,在子进程中运行 bash 会破坏 tty 的标准输出吗?

    正如 Bakuriu 在评论中指出的那样 这基本上与BASH 输入期间按 Ctrl C 会中断当前终端 https stackoverflow com questions 31808863 bash ctrlc during input b

随机推荐

  • 快速查看生成器 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 但这至少需