最近公司要開發(fā)新的產(chǎn)品,在本地搭建了一下服務(wù)端的開發(fā)環(huán)境,安裝centos5.5,安裝了一些編譯php需要的庫文件gd,libxml,zlib等等,n多操作后,再使用yum時發(fā)現(xiàn)如下錯誤:
[root@home ~]# yum update
Setting up Update Process
Setting up repositories
Segmentation fault
[root@home ~]# strace yum update
last lines of strace :
_llseek(6, 0, [0], SEEK_CUR) = 0
read(6, "<?xml version=\"1.0\" ?><repomd xm"..., 8192) = 3846
read(6, "", 4346) = 0
--- SIGSEGV (Segmentation fault) @ 0 (0) ---
+++ killed by SIGSEGV +++
google大神和百度大神了n次,基本都是一樣的解決方案(1、yum clean all 2、修改源 3、修改yum.conf),照此執(zhí)行,但并不能解決我的問題,有點絕望,但上天不負(fù)有心人,找到了這個 http://bugs.centos.org/view.php?id=4702&nbn=1
給了我們(我和我的同事)一些啟發(fā),原來是我們安裝的zlib1.2.5時指定了安裝目錄(./configure -prefix=/usr)對yum產(chǎn)生了影響,所以總結(jié)如下:
1、安裝完系統(tǒng)后,運行一次#yum update(yum產(chǎn)生了緩存) ,然后再安裝zlib1.2.5,之后如果不執(zhí)行#yum clean all,則一直可以使用yum,不會報段錯誤
2、如果在執(zhí)行yum前已經(jīng)安裝了zlib1.2.5,則需要做如下處理
#cd /usr/lib
#ln -sf libz.so.1.2.3 libz.so
#ln -sf libz.so.1.2.3 libz.so.1但此后zlib就使用了舊版本,在成功執(zhí)行了yum后,還需要將軟連接更改
#cd /usr/lib
#ln -sf libz.so.1.2.5 libz.so
#ln -sf libz.so.1.2.5 libz.so.1
至此,問題解決了!