perl升级引发的一系列惨案
2010年2月21日 18:01
过年回来,习惯性的emerge -avuDN world升级gentoo,升级过程中出现编译问题,当时没有太在意。和谐,和谐,先正常用吧。可接下来发生的事情把我折腾的够呛。
首先是VIM不能用了。提示说找不到一个共享库:
vi: error while loading shared libraries: libperl.so.1: cannot open shared object file: No such file or directory
$ ldd /usr/bin/vim
roamin9@matrix ~ $ ldd /usr/bin/vim
1 2 3 4 5 6 7 8 9 | linux-gate.so.1 => (0xb780b000) libncurses.so.5 => /lib/libncurses .so.5 (0xb77a8000) libacl.so.1 => /lib/libacl .so.1 (0xb779f000) libgpm.so.1 => /lib/libgpm .so.1 (0xb7798000) <span style= "color: rgb(255, 0, 0); " >libperl.so.1 => not found< /span > libutil.so.1 => /lib/libutil .so.1 (0xb7793000) libc.so.6 => /lib/libc .so.6 (0xb764a000) libpython2.6.so.1.0 => /usr/lib/libpython2 .6.so.1.0 (0xb74f0000) <br type = "_moz" > |
1 2 3 4 | 看来这个库在升级的过程中没有了。从名字来看,与perl相关。管他三七二十一,先重新emerge一下vim吧。不幸的是,编译vim-core的时候,出错。NND,硬着头皮看出 错信息,感觉是autoconf导致的编译失败(<img alt= "" src= "http://roamin9.is-programmer.com/javascripts/fckeditor/editor/images/smiley/chito/3.gif" >),于是查看autoconf包,发现有两个solt,2.1和2.5。稀里糊涂的决定,先干掉一个吧(杯具的开始): # emerge -C =sys-devel/autoconf-2.65 <br type = "_moz" > |
1 2 3 | 干掉的很顺利,以后的麻烦却源源不绝。 查看autoconf版本的方法: roamin9@matrix ~ $ WANT_AUTOCONF=2.1 autoconf --version |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | Autoconf version 2.13 roamin9@matrix ~ $ WANT_AUTOCONF=2.5 autoconf --version autoconf (GNU Autoconf) 2.65 Copyright (C) 2009 Free Software Foundation, Inc. License GPLv3+ /Autoconf : GNU GPL version 3 or later <http: //gnu .org /licenses/gpl .html>, <http: //gnu .org /licenses/exceptions .html> This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Written by David J. MacKenzie and Akim Demaille. 在gentoo中,是通过变量WANT_AUTOCONF来控制autoconf的版本,在编译中来使用不同的autoconf。软件包sys-devel /autoconf-wrapper 来做切换的事情。 干掉autoconf-2.65后,发现两个solt的autoconf是必须的,于是想要把autoconf-2.65重新装上,可总是编译出错。问题在哪呢??? 看了下elogv中perl相关的日志,又google了好几下,原来perl升级后,是需要用perl-cleaner来处理一下的。 # perl-cleaner --all |
1 | 看着perl-cleaner自动的找到了需要修复的软件包,万分欢喜,谁曾想它也需要emerge autoconf,出错是注定的了。到现在为止,问题好像已经成了一个圈了。 |
1 2 3 | 看看autoconf的编译失败的日志,忽然间看到 "@bolin" 的字样提示。@bolin是在我的内核名字中包含的字符串,会不会perl认为@bolin是一个模块名,找不到而引起的错 误呢?<br> <br type = "_moz" > |