今天嘗試在Cent OS 7上配置ftp服務器,中間想卸載一個程序,百度了一下,可以用人“rpm -e package-name”刪除,事實也就是可以刪除,然后,再裝其他軟件時就一直報警告“RPM 數據庫已被非 yum 程序修改。”,英文版是“Warning: RPMDB altered outside of yum.”。
上網搜了下,大部分都說無關緊要,而且我的操作也的確沒有什么高危動作,但是,作為一個負責半個愛鑽研的人,怎么可以不明不白就放棄呢?其實是一個高度強迫症患者。怎么看都不舒服,果斷再去百度,找啊找,漫天的水;放棄百度,連上VPN,去Google,不得不說,有差距。
參考鏈接:鳥哥的Linux私房菜:http://vbird.dic.ksu.edu.tw/linux_server/linux_basic/0520rpm_and_srpm.php
下面說一下我的認識:
yum提供了在線下載安裝軟件(rpm包)的功能,同時它和rpm維持着一個rpmdb(rpm數據庫),這個數據庫記錄着rpm包的基本信息。當你使用yum命令時,yum程序通過從網絡獲取版本列表,然后對比rpm數據庫中本地版本列表,給出安裝/更新/已安裝等的說明。在用rpm命令安裝程序時,可能會出現rpm包的依賴問題。換句話說,就是你要安裝A,那好,我先看看你有沒有安裝B。如果你安裝過了B,你就可以安裝A;否則,要么你先去安裝B再來安裝A,要么就不要裝A。這還不算完,有可能B還要求你先安裝C和D。yum提供了這一部分的功能,使你不必人工進行這些繁瑣的工作。
參考鏈接:http://illiterat.livejournal.com/7834.html
至於上面的警告的問題,不必太過驚慌。首先yum的新特征是要成為系統中用戶對程序進行管理的接口,這要求yum知道系統中所有的對軟件包的操作(yum history)。其次是由於rpm常常被濫用。人們常常直接用rpm去解決一些問題,但這往往會帶來更多問題,而且看起來好像是yum的錯。推薦就只用yum或者說yum的API進行安裝/更新/刪除軟件包。如果你不喜歡yum,你也可以完全不用yum。如果你會用到但不僅只用到yum的話,又不喜歡看到這個警告,你可以去“yum.conf”里把“history_record”設置為“false”。
像我這種強迫症怎么甘心用上面的解決方法自欺欺人呢?
於是我就測試了下,發現,yum重新安裝剛才卸載的那個軟件(用rpm卸載的,導致上面警告的軟件),然后再用yum remove卸載一次,就會解決這個警告。嘻嘻……