絕大多數情況下, 提高主機内存容量, 是個好辦法,内存太小,就容易被強制kill掉。
這裡說一下另外一種情況, 小編這個可不是抄來的, 自身經驗哦...
某一天手抖不小心把安裝到一半的進程給停了, 從此之後yum update這個命令就癫癇了,因爲當時也考慮到事態不緊急,就丟到一邊。到今年一月份了想起來不能老是這樣子,得想辦法解決,於是乎打開日志看了看,沒有任何問題;上谷歌各種搜索,包括segmentfault討論區看個遍, 都是討論恢複rpm數據庫的, 還是沒能解決。
最後一氣之下刪了yum重新來, 具體步驟如下:
一、卸載yum源
# 終止yum進程 rm -f /var/run/yum.pid # 刪除報錯的臨時數據 rm -f /var/lib/rpm/__db* rpm -qa yum-3.4.3-150.el7.centos.noarch # 卸載組件 rpm -qa | grep yum | xargs rpm -e --nodeps rpm -qa yum
二、從centos官網上down來yum安裝包
1、centos7的話, 下載rpm包
wget http://mirror.centos.org/centos/7/os/x86_64/Packages/yum-3.4.3-150.el7.centos.noarch.rpm wget http://mirror.centos.org/centos/7/os/x86_64/Packages/yum-metadata-parser-1.1.4-10.el7.x86_64.rpm wget http://mirror.centos.org/centos/7/os/x86_64/Packages/yum-plugin-fastestmirror-1.1.31-40.el7.noarch.rpm
如果是centos6,應下載以下rpm包
wget http://mirror.centos.org/centos/6/os/x86_64/Packages/yum-3.2.29-81.el6.centos.noarch.rpm wget http://mirror.centos.org/centos/6/os/x86_64/Packages/yum-metadata-parser-1.1.2-16.el6.x86_64.rpm wget http://mirror.centos.org/centos/6/os/x86_64/Packages/yum-plugin-fastestmirror-1.1.30-40.el6.noarch.rpm
如果這個時候報404錯誤:ERROR 404: Not Found. 怎麽辦?這很正常,這幫孫子會把舊版本文档毫不留情地干掉,他們不會管你404。我們只能從這個網頁裡找其他版本的:
http://mirror.centos.org/centos/7/os/x86_64/Packages/
靈活運用,替代掉上文命令行當中沒有找到的包文档。
2、安裝
# 先檢查放到本地的包對不對 ls yum-* # 開始安裝 rpm -ivh yum-* rpm -qa yum # 系統顯示yum-版本號.centos.noarch.rpm
彈出error: Failed dependencies:的解決
給一家公司處理一台環境比較爛的主機, 遇到這個問題, 意思就是沒有依賴包, 可沒有yum的支持, 怎麽安裝依賴呢? 答案是使用rpm -ivh命令解決, 先不要胡思亂想了, 拿來主義, 到網上找列舉出來的包。例如筆者遇到的報錯問題就是:
error: Failed dependencies: python-urlgrabber >= 3.9.1-10 is needed by yum-3.2.29-81.el6.centos.noarch yum-metadata-parser >= 1.1.0 is needed by yum-3.2.29-81.el6.centos.noarch
信息解讀: 一個是版本太低, 首先如果你安裝了python-urlgrabber, 可能你安到的是3.9.1-9或者更低的版本, 如何判定呢?
先用命令找出含有python字樣的rpm安裝結果
rpm -qa | grep python
系統返回:
python-libs-2.6.6-52.el6.x86_64 abrt-addon-python-2.0.8-26.el6.centos.x86_64 newt-python-0.52.11-3.el6.x86_64 python-ethtool-0.6-5.el6.x86_64 python-urlgrabber-3.9.1-9.el6.noarch python-iniparse-0.3.1-2.1.el6.noarch rpm-python-4.8.0-47.el6.x86_64 python-iwlib-0.1-1.2.el6.x86_64 libxml2-python-2.7.6-17.el6_6.1.x86_64 libproxy-python-0.3.0-10.el6.x86_64 python-pycurl-7.19.0-8.el6.x86_64 python-2.6.6-52.el6.x86_64 dbus-python-0.83.0-6.1.el6.x86_64 libreport-python-2.0.9-21.el6.centos.x86_64
看到有python-urlgrabber字樣了吧, 果然是版本不夠, 那麽你需要先卸載掉它:
rpm -e python-urlgrabber-3.9.1-9.el6.noarch
然後再在搜索引擎上找到這個包, 也可以通過CentOS官方地址來找找看: http://mirror.centos.org/centos/6/os/x86_64/Packages/
之後用wget進來, 再用rpm命令安裝這個新包:
wget http://mirror.centos.org/centos/6/os/x86_64/Packages/python-urlgrabber-3.9.1-11.el6.noarch.rpm rpm -ivh python-url*
同理, yum-metadata-parser要求1.1.0 以上的, 筆者用rpm -qa | grep yum 沒找到這個包, 那麽直接在網上down這個包安裝即可:
wget http://mirror.centos.org/centos/6/os/x86_64/Packages/yum-metadata-parser-1.1.2-16.el6.x86_64.rpm rpm -ivh yum-metadata*
三、刪除/tmp沒用的緩存
進/tmp目錄裡面檢查, 把一些沒用的多餘的緩存文档清理一下,這個也是很重要的一個步驟。之後reboot服務器。重啓完畢後,再用yum update試試看, 是不是解決了?
好了, 方法就說到這裡, 筆者按照這個方法解決了困擾了一個月的問題,實測好用。