解决Linux 软件包的依赖关系
刚才看见有人讨论Linux软件包的依赖问题,软件的依赖关系确实是一个比较令人头痛的问题,尤其是对新手来讲。我个人而言,解决这种依赖关系中要有三个方法。(以下皆以Fedora为例)
1.尽量安装软件源上已经有的安装软件
这听起来似乎是废话一样,但实际上有很多时候我们从网上随意下载一个软件包,然后费尽心思解决了依赖关系以后,却可能不经意间发现――原来这个软件在系统的软件源上有现成的,我们只要yum install filename,系统就可以自动分析和解决依赖关系,并且将所需的软件搞定了。这种事情常有发生,但很好解决,我们只要下载安装软件之前看看软件源上是否已经有我们所想要的软件就可以了。
当然,我们不能只依赖系统自带的源,那个源上的软件并非十分丰富,我们需要Livna以及Freshrpms上的源。现以Livna源为例,联网之后,终端输入:
sudo rpm -ivh [url]http://rpm.livna.org/livna-release-8.rpm[/url]
sudo rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-livna
即可。
这样就可以轻松使用Livna上丰富的软件源了。至于Freshrpms和Fedora_cn的源,安装方法类似,如果有不懂的可以去Google一下。
2.使用yum localinstall
如果我们想安装的软件在源上没有找到,那我们可以先从其他地方把软件包下载下来,然后尝试使用yum localinstall这个命令来进行安装。利用这个命令,系统可以自动分析依赖关系,然后去下载相应的软件包以解决依赖关系。
这个方法和上一种的不同之处在于,这一种方法采用本地已经下载好的软件包,并以此为基础,分析其以依赖关系,然后从软件源上下载相应的包来解决依赖。而上一种方法中,不但用来解决依赖关系的包是从源上下载的,我们真正想要安装的软件包也是从源上下载的。就这么点区别。
配置好了前面提到的几个软件源后,这个方法很多情况下都能高完美的解决问题。但是如果还是解决不了,那么我们就只好采用最后一种方法了。
3.善用网络搜索
网上有很多网站提供rpm搜索查询服务,比如rpm find等等。但是我更喜欢的是rpm search,其网址为 [url]http://rpm.pbone.net[/url]。这个网站不但提供了rpm软件包的搜索,还提供了根据所需的.so文件来搜索相应软件包的功能。
比如我们下载的软件在安装的时候需要某个so文件,那我们可以在Rpm Search 上根据这个文件的名字来进行搜索。在搜索时,我们还可以定义所查询到OS(操作系统)类型,例如Fedora 7, Fedora 8, CentOS 等等。这个详细查询的地址为:[url]http://rpm.pbone.net/index.php3/stat/2/simple/2[/url] 。搜索出结果后,我们可以下载安装了。当然,安装的过程中我们还可能遇见新的依赖关系,这时候我们需要重新考虑上述的几种方法。
总之,尽量使用第1、2两种方法,实在不行就利用Rpm Search进行手动查询安装,熟练以后,Linux软件包的依赖关系并不太难。我这里是以Fedora为例,其他的版本的Linux在操作上略有不同,但是原理是一样的。大家可以多多尝试。
?