【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

posted on 2019-08-16 17:27  天心人  阅读(4595)  评论(0编辑  收藏  举报