分类: LINUX
2016-10-21 20:05:46
原文地址:通过yum解决软件的依赖关系 作者:xuyuanchao_cnu
在安装libX11-dev的时候遇到如下问题。
[root@localhost Server]# rpm -ivh --aid libX11-devel-1.0.3-11.el5.i386.rpm
warning: libX11-devel-1.0.3-11.el5.i386.rpm: Header V3 DSA signature: NOKEY, key ID 37017186
error: Failed dependencies:
libXau-devel is needed by libX11-devel-1.0.3-11.el5.i386
libXdmcp-devel is needed by libX11-devel-1.0.3-11.el5.i386
xorg-x11-proto-devel >= 7.1-2 is needed by libX11-devel-1.0.3-11.el5.i386
需要依赖关系
A、强制安装 ----暴力型
使用rpm -i --force --nodeps 强制安装。忽略依赖关系。这种方法你可以先装A包,再装B包,再装C包。这样还是有点隐患的,感觉不是很踏实(虽然其实目前没发现什么不好)。安装后使用成功的前提是:你要搞清楚依赖关系,并且把这些包都装好。好处是:不用管它们的具体依赖关系先后顺序。
B、一次性全装上--- 一网打尽型
可以把依赖的几个包拷出来放在同一个文件夹里 然后 rpm -ivn *.rpm 这样也可以 前提也是一个都不能少。
C、 使用yum技术安装 --使用服务器方式
yum是一个服务器资源技术。通过在线下载服务器资源的方式。 缺点:太繁琐。要设置一堆的东西。优点:设置以后,很方便,需要的大多数资源都可以从服务器上找到。这点感觉很像maven2有木有?
参考:
D、使用redhat提供的解决方案,安装依赖关系库(强烈推荐)
例子:先安装rpmdb,之后使用
# rpm -ivh --aid samba*.rpm (一定要安装rpmdb后才可以用这种方式安装排除依赖关系)
该命令会自动把依赖关系中需要安装的包都安装上,包括:
cups-libs-1.1.17-13.3.6.rpm
samba-common-3.0.0-14.3E.i386.rpm
samba-3.0.0-14.3E.i386.rpm
samba-client-3.0.0-14.3E.i386.rpm
可以很简单地解决直接安装samba-3.0.0-14.3E.i386.rpm或者samba-client-3.0.0-14.3E.i386.rpm对samba-common-3.0.0-14.3E.i386.rpm 的依赖,而安装 sambacommon-3.0.0-14.3E.i386.rpm 出现对都libcups.so.2库文件的依赖,而且该库文件所在的rpm包无法很快确定
上述方法可以很快解决依赖关系
想要通过yum一劳永逸。
Yum可以从众多软件包仓库中搜索软件的依赖关系,因此可以减少由于依赖关系带来的问题。还有就是我们在使用图形界面时,在应用程序-添加删除软件下的浏览里是空的。如下图:
第一种方法:(推荐)
第一步:新建一个文件夹,并把光盘内的所有文件复制到这个文件夹里:
[root@localhost ~]# mkdir /yum
[root@localhost ~]# cp -rvf /misc/cd/* /yum
第二步:备份repodata文件。因为有四个文件夹里都有这个文件,所以都要备份。
[root@localhost ~]# mv /yum/Server/repodata /yum/Server/repodata.bak
[root@localhost ~]# mv /yum/VT/repodata /yum/VT/repodata.bak
[root@localhost ~]# mv /yum/Cluster/repodata /yum/Cluster/repodata.bak
[root@localhost ~]# mv /yum/ClusterStorage/repodata /yum/ClusterStorage/repodata.bak
第三步:安装工具包:
[root@localhost ~]# rpm -ivh /yum/Server/createrepo-0.4.11-3.el5.noarch.rpm
第四步:生成仓库数据库:
[root@localhost ~]# createrepo -g /yum/Server/repodata.bak/comps-rhel5-server-core.xml /yum/Server/
[root@localhost ~]# createrepo -g /yum/VT/repodata.bak/comps-rhel5-vt.xml /yum/VT/
[root@localhost ~]# createrepo -g /yum/Cluster/repodata.bak/ /yum/Cluster
[root@localhost ~]# createrepo -g /yum/ClusterStorage/repodata.bak/comps-rhel5-cluster-st.xml /yum/ClusterStorage/
第五步:查看仓库数据文件:
[root@localhost ~]# ls /yum/Server/repodata/
comps-rhel5-server-core.xml //这个文件软件包组的分类。
filelists.xml.gz other.xml.gz primary.xml.gz //这三个文件为软件包列表文件。
repomd.xml //这个文件为MD5校验信息。
在/yum/VT /yum/Cluster /yum/ClusterStorage下面都有这几个文件,作用和这一样。如果想更新软件包,只需把下载完的软件包放在Server或者其他三个目录里,再使用第四步重新生成数据库文件即可。
第六步:客户端配置:主要修改下面红色的部分:
[root@localhost ~]# cp /etc/yum.repos.d/rhel-debuginfo.repo /etc/yum.repos.d/chenbin.repo
[root@localhost ~]# vi /etc/yum.repos.d/chenbin.repo
[rhel-Server]
name=Red Hat Enterprise Linux $releasever - $basearch - Debug
baseurl=file:///yum/Server
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
[rhel-VT]
name=Red Hat Enterprise Linux $releasever - $basearch - Debug
baseurl=file:///yum/VT
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
[rhel-Cluster]
name=Red Hat Enterprise Linux $releasever - $basearch - Debug
baseurl=file:///yum/Cluster
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
[rhel-ClusterStorage]
name=Red Hat Enterprise Linux $releasever - $basearch - Debug
baseurl=file:///yum/ClusterStorage
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
第七步:查看:如图,已经出现软件列表了。
如果在上图中的编辑里选择软件存储库,就出现下图:
如果把这里的勾去掉,再次打开就没有软件列表了,同时在/etc/yum.repos.d/chenbin.repo配置文件下的enabled=0。
清除一下yum安装时的缓存:
[root@localhost ~]# yum clean all
安装一个软件试试:
[root@localhost ~]# rpm -ivh /yum/Server/httpd-2.2.3-22.el5.i386.rpm
warning: /yum/Server/httpd-2.2.3-22.el5.i386.rpm: Header V3 DSA signature: NOKEY, key ID 37017186
error: Failed dependencies:
libapr-1.so.0 is needed by httpd-2.2.3-22.el5.i386
libaprutil-1.so.0 is needed by httpd-2.2.3-22.el5.i386
因为依赖关系,所以不能安装。用如下命令安装:
[root@localhost ~]# yum install /yum/Server/httpd-2.2.3-22.el5.i386.rpm
系统会自动安装完成。Yum缷载如下:
[root@localhost ~]# yum remove httpd。
1.4总结:YUM常用命令:
1.安装软件包:
yum install package
yum localinstall package 从本机目录安装软件包
yum groupinstall group 安装某个组件的全部软件包
2.更新软件包:
yum update package
yum check-update 列出所有可更新的软件包
yum list updates mysql* 查找mysql的更新
yum update 更新所有可更新的软件包
yum update mysql* 更新所有mysql的软件包
yum groupupdate group 更新某个组件的所有软件包
yum list 列出所有已安装和仓库中可用的软件包
yum list available 列出仓库中所有可用的软件包
yum list updates 列出仓库中比当前系统更新的软件包
yum list installed 列出已安装的软件包
yum list recent 列出新加入仓库的软件包
yum info 查询软件包信息
3.删除软件包:
yum remove package
yum groupremove group 删除某个组件的全部软件包
4.清除软件包
yum clean packages 清除遗留在缓存里的包文件
yum clean metadata 清除遗留在缓存里的元数据
yum clean headers 清除遗留在缓存里的头文件
yum clean all 清除包文件,元数据,头文件
5.搜索软件包:
yum search package
yum info package 查找一个软件包的信息
yum list package 列出包含指定信息的软件包
yum list installed 列出已安装的软件包
yum list extras 列出不是通过软件仓库安装的软件包
yum list *ttp* 列出标题包含ttp的软件包
yum list updates 列出可以更新的软件包
6.查找特定文件是由什么软件包提供的:
yum whatprovides filename
例子:
yum whatprovides httpd.conf
可用选项
–disalberepo=lib 禁用某个软件仓库
–enalberepo=lib 启用某个软件仓库
-C 禁用使用本机缓存的元数据
例子:
yum –disalberepo=livna|–enalberepo=livna install mplayer
yum -C info httpd
目前依旧无法用yum install来安装软件。