一、心血来潮

告别Windows系统,在日常办公、学习、研究、写作中都使用Deepin Linux华为定制版已将近一年了。我在工作中使用Perl较为频繁。该定制版Linux系统自带的Perl是5.24版,而最新的Perl已经是5.32版。Perl当前的帮主南瓜王Sawyer X几个月前说要在该最新版基础上推出Perl7云云,所以一时心血来潮,按官网指南,略加发挥:wget https://www.cpan.org/src/5.0/perl-5.32.0.tar.gz

tar -xzf perl-5.32.0.tar.gz

cd perl-5.32.0

./Configure -des -Dprefix=/usr

make

make test

sudo make install

下载Perl5.32源代码,并在本地编译安装了。各种测试,返回

All tests successful.

Elapsed: 690 sec

u=7.88  s=4.43  cu=408.77  cs=25.14  scripts=2465  tests=1208438

......我又把/usr/bin目录内老版本的perl删除了,测试,一切正常。

二、乐极生悲

后来在使用sudo apt-get install来安装应用程序时,才发现apt-get各种吐槽,最为常见的是:Can't locate Debconf/Db.pm in @INC (you may need to install the Debconf::Db module)......虽然应用程序也能安装上,而且应用程序也能工作,但安装过程的各种吐槽让人不胜其烦。搜索了一下,Debconf目录和Db.pm都是有的,但在/usr/share/perl5目录里。仔细看了一下,Deepin Linux华为定制版的Perl库目录应该在/usr/share/perl5和/usr/share/perl/5.24.1。而perl -V返回我升级后的@INC为:/usr/lib/perl5/site_perl/5.32.0/x86_64-linux

/usr/lib/perl5/site_perl/5.32.0

/usr/lib/perl5/5.32.0/x86_64-linux

/usr/lib/perl5/5.32.0

问题应该就出在这里了。我这也才知道常用的apt-get也需要Perl配合才能完美工作。

三、祸不单行

听说perlbrew很擅长管理一台机器上多个版本的Perl和各种Perl模块。于是sudo apt-get install perlbrew,在apt-get的疯狂吐槽后,whereis perlbrew显示,我要的多版本Perl安装管理利器是安装成功了的。于是perlbrew回车看看,结果:Can't locate App/perlbrew.pm in @INC (you may need to install the App::perlbrew module) ......比其他应用程序还惨,不光安装过程吐槽,安装好的perlbrew罢工了。看样子,apt-get把相关模块安装到了/usr/share/perl5目录去了。当初就应该先安装perlbrew ,再用perlbrew来安装最新版本的Perl5.32;现在反过来想让perlbrew来擦屁股,谁愿意呀。

四、道高一尺

不就是/usr/share/perl5不在@INC里吗?修改.bashrc,加入注释与指令各一句如下:# Add Deepin Linux Perl Library

export PERL5LIB=/usr/share/perl5

然后source .bashrc,再运行perlbrew,果然正常工作了。一不做,二不休。su root,对/etc/profile如法炮制,这下应该好了吧。

五、魔高一丈

安装生物信息常用软件clustalw,sudo apt-get install clustalw。结果依旧是apt-get的吐槽Can't locate Debconf/Db.pm in @INC (you may need to install the Debconf::Db module)......。奇怪了,普通用户perl -V和切换到root用户perl -V,库目录都有/usr/share/perl5。但就是sudo perl -V没有,依旧是老的那四个。于是visudo,仔细研究了一下,望文生义,把Defaults       env_reset注释掉,保存后,问题依旧。只好把.bashrc、profile、etc/sudoers等都恢复了,另想办法。

六、从头再来

心若在梦就在,天地之间还有真爱。看成败,人生豪迈,只不过是从头再来 。再次一不做,二不休,重新进入源代码目录。运行./Configure,交互式慢慢配置编译选项。大部分地方都按默认回车即可。其中一处交互有问是否添加其他库目录,狠一点,直接输入/usr/share/perl5:/usr/share/perl/5.24.1。还有一处,List of earlier versions to include in @INC? 也不要none了。后续又是make,make test, sudo make install。完了perl -V,显示  @INC:/usr/lib/perl5/site_perl/5.32.0/x86_64-linux

/usr/lib/perl5/site_perl/5.32.0

/usr/lib/perl5/5.32.0/x86_64-linux

/usr/lib/perl5/5.32.0

/usr/lib/perl5/site_perl

/usr/share/perl5

/usr/share/perl/5.24.1

正好系统里还没有安装pymol和R。于是,sudo apt-get install pymol r-base,顺利安装两个软件,apt-get没有丝毫抱怨了。

七、额外收获

在./Configure交互配置过程中,有一处交互让我恍然大悟,解决了最近的一点困惑。Historically Perl has provided a final fallback of the current working directory '.' when searching for a library. This, however, can lead to problems when a Perl program which loads optional modules is called from a shared directory. This can lead to executing unexpected code.

Exclude . from @INC by default?

以前Perl脚本自己所在目录内的模块都能自动找到,现在不行了。编译perl时,配置里默认是不包含.在库目录数组里的。现在需要在脚本里明示才行了。

转载本文请联系原作者获取授权,同时请注明本文来自黄健科学网博客。

链接地址:http://blog.sciencenet.cn/blog-204973-1256372.html

上一篇:悟空虫

下一篇:无花果蝉院

linux perl 升级,科学网—一次Perl版本升级引发的吐槽大会 - 黄健的博文相关推荐

  1. linux卸载netcdf,科学网-Ubuntu中安装netcdf4以上方法-伍志元的博文

    netcdf4以上(印象中应该是4.1.3以上)的版本将c和Fortran分开,也就是要先装netcdf-c才能装netcdf-fortran. 电脑出现故障,近期将zlib,hdf5,curl,ne ...

  2. nvidia显卡linux 7.2,科学网—悲喜录:服务器 CentOS 7.2 安装Nvidia显卡驱动(64bit) - 袁伟的博文...

    先来一段网络上的安装步骤: ---------------------------------------------------------------- CentOS 7.0 Nvidia显卡安装 ...

  3. linux 后台计算,科学网-如何在Linux中做批处理和后台计算-张彦的博文

    单个计算任务的提交 How to compute by Gaussian 03? 1. Upload "xxx.gjf" to your folder. 2. Perform &q ...

  4. linux子系统安装gromacs,科学网—Windows下GROMACS程序的编译 - 李继存的博文

    2015-12-07 22:12:05 总的来说, Windows下的GROMACS程序用于模拟意义不大, 对于长时间的模拟, 我都是放在Linux服务器上进行的. 但将Windows下的GROMAC ...

  5. linux bsd命令,科学网—Linux/BSD下join命令使数据以tab为分隔符的方法 - 李雷廷的博文...

    [join命令可以通过-t $'t'来把分隔符设为tab字符] 默认情况下,Linux/BSD下的join命令以空格为分隔符.即使你的输入文件是以tab为分隔符的,输出文件也会变成以一个空格为分隔的文 ...

  6. linux 调整shmmax,科学网—Ubuntu 9.10 中更改 linux kernal 中的shmmax大小 - 孙鹏的博文...

    最近让Postmaster增加一个启动的辅助进程,这样子在启动Postmaster的时候申请的共享内存就增加了一些,这增加的一点点发现,Postmaster竟然启动不起来了,错误消息表明Postmas ...

  7. linux基因组文件,科学网-NGS基础 - 参考基因组和基因注释文件-陈同的博文

    NGS基础 - 参考基因组和基因注释文件 同步滚动:关 参考基因组和基因注释文件获取 通常测序生成的reads要与参考基因组或参考转录组进行比对,或Pseudo-alignment.所以首先需要获取参 ...

  8. linux内核 gpu,科学网—Intel GPU虚拟化方案 KVMGT 正式进入Linux 内核 4.10 - 戚正伟的博文...

    Linus Torvalds 在内核邮件列表上宣布释出 Linux 4.10.Linux 4.10 的主要特性包括:加入了 GPU虚拟化方案 Intel GVT-g for KVM (a.k.a. K ...

  9. linux编译blas,科学网—Linux下安装blas和lapack包小记 - 徐博伦的博文

    系统是centOS6.5,机器上已有gfortran编译器 从网上搜索下载blas.cblas.lapack的tar压缩文件包 1.编译blas 先解压文件 tar xvf blas.tgz cd b ...

  10. linux 后台进程管理,科学网—linux相关操作之后台进程管理 - 郗强的博文

    目录: 1.查找后台进程 2.杀死后台进程 3.启动后台进程 1.查找后台进程 ps 命令是相当强大地进程查看命令.运用该命令可以确定有哪些进程正在运行及其运行状态. 进程是否结束.进程有没有僵死.哪 ...

最新文章

  1. 计算机里面照片无法打卡,为什么电脑照片打不开_电脑照片打不开的解决方法...
  2. qsort归纳学习(c语言版本)
  3. linux 进程通信比较,浅析Linux进程通信的几种方式及其比较
  4. tfw文件如何导入cad_教你三维家3d设计软件如何导入cad文件
  5. c语言求佩尔方程的解设计思路,c语言版 佩尔方程求最小正整数解及第k解(矩阵快速幂)...
  6. [每日编程]求 largest Number - 给出一组非负整数,求这些非负整数可以拼接出的最大数字...
  7. 商业版《隋唐演义》三:收购瓦岗寨
  8. ERROR: Unexpected bus error encountered in worker. This might be caused by insufficient shared memor
  9. tp5 mysql异常捕获_tp5 ThinkPhp5 自定义异常处理类
  10. 天堂2芙蕾雅单机版mysql闪退_【图片】天堂2单机版-芙蕾雅。算是我这个老人对天堂2吧友的最后贡献吧!_天堂2吧_百度贴吧...
  11. 7-5 华氏度转摄氏度(四舍五入) (5分)
  12. 没有你不会的CAD?CAD知识整理下集
  13. 电商之 团购与B2C模式以及B2B2C模式对比
  14. MindManager思维导图画法教程
  15. 【第1164期】从前端技术到体验科技
  16. ApacheCN 翻译活动进度公告 2019.5.3
  17. 3.3V过压保护电路
  18. 光伏电子工程的设计与实施2022——单片机力控部分实现思路
  19. stm32f103mini IO
  20. emu8086汇编语言——简易学生成绩管理系统

热门文章

  1. 8421BCD码的加6修正的原因
  2. C++的64位整数[转]+gyy整理
  3. 白泽六足机器人_ros_v1——零件准备
  4. linux上删除rime方案_超强的输入法:rime的配置(linux)
  5. 优秀自我简介200字_优秀学生自我介绍200字范文
  6. 怎么对注册表中的垃圾文件进行清理?
  7. ID卡线圈和IC卡线圈的区别
  8. windows7添加打印机时,提示“本地打印机后台处理程序服务没有运行”
  9. 代码批量删除QQ日志和说说
  10. 移远4g LTE模块at指令集合