【RPM依賴】解決RPM包依賴的幾種方法
前言:常用RPM的朋友們都知道,RPM簡單易用,但是它的依賴關系是最頭疼的!
有時候比方說A包需要B包,B包需要C包,C包需要A包,好了。這就是最常見的死鎖了(類似數據庫有木有?)。
這個時候有以下幾種方式可以解決:
A、強制安裝 ----暴力型
# rpm -ivh--force --nodepsgcc-c++-4.1.2-42.el5.i386.rpm
warning: gcc-c++-4.1.2-42.el5.i386.rpm: Header V3 DSA signature: NOKEY, key ID 37017186
Preparing... ########################################### [100%]
1:gcc-c++ ########################################### [100%]
使用rpm -ivh --force --nodeps 強制安裝。忽略依賴關系。這種方法你可以先裝A包,再裝B包,再裝C包。這樣還是有點隱患的,感覺不是很踏實(雖然其實目前沒發現什么不好)。安裝后使用成功的前提是:你要搞清楚依賴關系,並且把這些包都裝好。好處是:不用管它們的具體依賴關系先后順序。
B、一次性全裝上--- 一網打盡型
可以把依賴的幾個包拷出來放在同一個文件夾里 然后 rpm -ivn *.rpm 這樣也可以 前提也是一個都不能少。
#rpm -ivn *.rpm
# yum -y localinstall *.rpm
C、 使用yum技術安裝 --使用服務器方式
yum是一個服務器資源技術。通過在線下載服務器資源的方式。
缺點:太繁瑣。要設置一堆的東西。優點:設置以后,很方便,需要的大多數資源都可以從服務器上找到。
yum deplist PACKAGE_NAME 列出一個包所有的依賴
如果沒有yum源,我們要離線在一台服務器上安裝httpd,那么可以把所有依賴打包:
#export LANG=en_US.utf-8
# yum deplist httpd | grep provider | awk '{print $2}' | sort | uniq
# yumdownloader $(yum deplist httpd | grep provider | awk '{print $2}' | sort | uniq)
#yumdownloader httpd
然后在安裝服務器上:
#yum -y localinstall httpd
注:注意軟件包的版本
檢查系統是否已安裝某個軟件包:
#rpm -q --qf '%{NAME}-%{VERSION}-%{RELEASE}(%{ARCH})\n' PACKAGE_NAME
D、自建倉庫
# yum -y install createrepo
#mkdir -p /var/ftp/pub/localrepo
#mv -f oracle_depspackage/*/var/ftp/pub/localrepo
#touch /etc/yum.repos.d/localrepo.repo
#echo "[localrepo]" >> /etc/yum.repos.d/localrepo.repo
#echo "name=Unixmen Repository" >> /etc/yum.repos.d/localrepo.repo
#echo "baseurl=file:///var/ftp/pub/localrepo" >> /etc/yum.repos.d/localrepo.repo
#echo "gpgcheck=0" >> /etc/yum.repos.d/localrepo.repo
#echo "enabled=1" >> /etc/yum.repos.d/localrepo.repo
#createrepo -v /var/ftp/pub/localrepo
#yum clean all