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是一个模块名,找不到而引起的错
误呢?

 

使用上了OpenVPN

2009年11月09日 10:31

 

     使用上了yegle同学提供的OpenVPN服务,速度稳定,感觉良好,好久上网没有这么爽快了 :)

   

第一次打补丁

2009年7月13日 05:52

  说来汗颜,使用Gentoo也有一段时间了,却一直没有自己的Overlay。如果遇到出问题的包,只能……等待。恩 ,懒!

  今天搞Fluxbox的时候,觉得它自带的fbrun不是很好用,于是想尝试一下别人提到的gmrun。无奈RP不高,Portage报告编译失败,遂有此文。记录下我第一次给包打补丁的过程,开始。

  在Gentoo系统中,当包编译失败时,可以去它的bug系统中查查,说不定会有惊喜。这不,我就在此处发现了和我相似的问题。从描述中了解到他找到了解决的办法,并给出了patch。欣喜过后,想起来自己从来没有给包打过补丁,NNDT。

  其实,Gentoo的包管理机制很适合对软件包进行定制,建造自己的软件仓库,当然包括给“不乖”的软件包打上补丁。我是这样做的:

  1,建立自己的Overlay。   

在layman下新建目录,以后你自己的包就存放在这里
$sudo mkdir -pv /usr/local/portage/layman/roamin9
修改layman下的make.conf,加入自己的overlay
$sudo vi /usr/local/portage/layman/make.conf
    PORTDIR_OVERLAY="
    /usr/local/portage/layman/roamin9
    $PORTDIR_OVERLAY"

 

  2,下载patch文件,存入相应ebuild下的files目录下

 

在自己的overlay中,目录结构要与Portage中的相同
$sudo cp -rf /usr/portage/x11-misc/gmrun /usr/local/portage/layman/roamin9/x11-misc
存放patch文件
$sudo cp ./gtkcompletionline.cc.patch /usr/local/portage/layman/roamin9/x11-misc/gmrun/files/
修改相应版本的ebuild文件,添加
$sudo vi /usr/local/portage/layman/roamin9/x11-misc/gmrun/gmrun-0.9.2.ebuild
    epatch "${FILESDIR}"/gtkcompletionline.cc.patch
重新生成ebuild
$ebuild gmrun-0.9.2.ebuild digest
  OK,重新emerge软件包,看到patch已打上,编译过程顺利完成 :)