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
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) libperl.so.1 => not found 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)
看来这个库在升级的过程中没有了。从名字来看,与perl相关。管他三七二十一,先重新emerge一下vim吧。不幸的是,编译vim-core的时候,出错。NND,硬着头皮看出 错信息,感觉是autoconf导致的编译失败(),于是查看autoconf包,发现有两个solt,2.1和2.5。稀里糊涂的决定,先干掉一个吧(杯具的开始): # emerge -C =sys-devel/autoconf-2.65
干掉的很顺利,以后的麻烦却源源不绝。 查看autoconf版本的方法: roamin9@matrix ~ $ WANT_AUTOCONF=2.1 autoconf --version
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
看着perl-cleaner自动的找到了需要修复的软件包,万分欢喜,谁曾想它也需要emerge autoconf,出错是注定的了。到现在为止,问题好像已经成了一个圈了。
看看autoconf的编译失败的日志,忽然间看到"@bolin"的字样提示。@bolin是在我的内核名字中包含的字符串,会不会perl认为@bolin是一个模块名,找不到而引起的错 误呢?