linux perl 升级,科学网—一次Perl版本升级引发的吐槽大会 - 黄健的博文
一、心血来潮
告别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版本升级引发的吐槽大会 - 黄健的博文相关推荐
- linux卸载netcdf,科学网-Ubuntu中安装netcdf4以上方法-伍志元的博文
netcdf4以上(印象中应该是4.1.3以上)的版本将c和Fortran分开,也就是要先装netcdf-c才能装netcdf-fortran. 电脑出现故障,近期将zlib,hdf5,curl,ne ...
- nvidia显卡linux 7.2,科学网—悲喜录:服务器 CentOS 7.2 安装Nvidia显卡驱动(64bit) - 袁伟的博文...
先来一段网络上的安装步骤: ---------------------------------------------------------------- CentOS 7.0 Nvidia显卡安装 ...
- linux 后台计算,科学网-如何在Linux中做批处理和后台计算-张彦的博文
单个计算任务的提交 How to compute by Gaussian 03? 1. Upload "xxx.gjf" to your folder. 2. Perform &q ...
- linux子系统安装gromacs,科学网—Windows下GROMACS程序的编译 - 李继存的博文
2015-12-07 22:12:05 总的来说, Windows下的GROMACS程序用于模拟意义不大, 对于长时间的模拟, 我都是放在Linux服务器上进行的. 但将Windows下的GROMAC ...
- linux bsd命令,科学网—Linux/BSD下join命令使数据以tab为分隔符的方法 - 李雷廷的博文...
[join命令可以通过-t $'t'来把分隔符设为tab字符] 默认情况下,Linux/BSD下的join命令以空格为分隔符.即使你的输入文件是以tab为分隔符的,输出文件也会变成以一个空格为分隔的文 ...
- linux 调整shmmax,科学网—Ubuntu 9.10 中更改 linux kernal 中的shmmax大小 - 孙鹏的博文...
最近让Postmaster增加一个启动的辅助进程,这样子在启动Postmaster的时候申请的共享内存就增加了一些,这增加的一点点发现,Postmaster竟然启动不起来了,错误消息表明Postmas ...
- linux基因组文件,科学网-NGS基础 - 参考基因组和基因注释文件-陈同的博文
NGS基础 - 参考基因组和基因注释文件 同步滚动:关 参考基因组和基因注释文件获取 通常测序生成的reads要与参考基因组或参考转录组进行比对,或Pseudo-alignment.所以首先需要获取参 ...
- 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 ...
- linux编译blas,科学网—Linux下安装blas和lapack包小记 - 徐博伦的博文
系统是centOS6.5,机器上已有gfortran编译器 从网上搜索下载blas.cblas.lapack的tar压缩文件包 1.编译blas 先解压文件 tar xvf blas.tgz cd b ...
- linux 后台进程管理,科学网—linux相关操作之后台进程管理 - 郗强的博文
目录: 1.查找后台进程 2.杀死后台进程 3.启动后台进程 1.查找后台进程 ps 命令是相当强大地进程查看命令.运用该命令可以确定有哪些进程正在运行及其运行状态. 进程是否结束.进程有没有僵死.哪 ...
最新文章
- 计算机里面照片无法打卡,为什么电脑照片打不开_电脑照片打不开的解决方法...
- qsort归纳学习(c语言版本)
- linux 进程通信比较,浅析Linux进程通信的几种方式及其比较
- tfw文件如何导入cad_教你三维家3d设计软件如何导入cad文件
- c语言求佩尔方程的解设计思路,c语言版 佩尔方程求最小正整数解及第k解(矩阵快速幂)...
- [每日编程]求 largest Number - 给出一组非负整数,求这些非负整数可以拼接出的最大数字...
- 商业版《隋唐演义》三:收购瓦岗寨
- ERROR: Unexpected bus error encountered in worker. This might be caused by insufficient shared memor
- tp5 mysql异常捕获_tp5 ThinkPhp5 自定义异常处理类
- 天堂2芙蕾雅单机版mysql闪退_【图片】天堂2单机版-芙蕾雅。算是我这个老人对天堂2吧友的最后贡献吧!_天堂2吧_百度贴吧...
- 7-5 华氏度转摄氏度(四舍五入) (5分)
- 没有你不会的CAD?CAD知识整理下集
- 电商之 团购与B2C模式以及B2B2C模式对比
- MindManager思维导图画法教程
- 【第1164期】从前端技术到体验科技
- ApacheCN 翻译活动进度公告 2019.5.3
- 3.3V过压保护电路
- 光伏电子工程的设计与实施2022——单片机力控部分实现思路
- stm32f103mini IO
- emu8086汇编语言——简易学生成绩管理系统
热门文章
- 8421BCD码的加6修正的原因
- C++的64位整数[转]+gyy整理
- 白泽六足机器人_ros_v1——零件准备
- linux上删除rime方案_超强的输入法:rime的配置(linux)
- 优秀自我简介200字_优秀学生自我介绍200字范文
- 怎么对注册表中的垃圾文件进行清理?
- ID卡线圈和IC卡线圈的区别
- windows7添加打印机时,提示“本地打印机后台处理程序服务没有运行”
- 代码批量删除QQ日志和说说
- 移远4g LTE模块at指令集合