在Linux系统中,软件包的依赖关系让人很是头疼。如在安装Linux系统时,不是选择安装所有的软件包。在安装完Linux系统后,若再进行软件安装的话,就可能会遇到一些依赖关系的问题,如在安装PHP软件包时,系统就可能会提示一些错误信息。说需要其他的一些软件包的支持。其实类似的情况在Windows中也会遇到。如有时候安装一些应用软件可能对浏览器的版本会有要求或者要求操作系统的补丁达到SP2以上等等。不过在微软操作系统上这种软件依赖关系要比在Linux系统中少见的多,而且处理起来也方便一些。
那么Linux操作系统中如果遇到这种软件包依赖关系的话,该如何处理呢?在谈这个具体的解决措施之前,我先跟大家说说在哪些情况下容易出现软件包的依赖关系问题。
一是在操作系统安装的时候,没有选择全部的软件包。大部分时候出于安全或者其他方面的原因,Linux系统管理员往往不会选择安装全部的软件包。而只是安装一些运行相关服务所必要的软件包。但是有时候系统管理员可能并不清楚哪些软件包是必须要装的,否则后续的一些服务将无法启动;而那些软件包则是可选的。由于在系统安装的时候很难一下子弄清楚这些内容,故在Linux系统安装完毕后,再部署其他一些软件包的时候,就容易出现这个问题。
二是在Linux服务器上追加其他的一些应用服务时,容易出现类似的问题。如有一次企业需要使用一个Oracle数据库,我就在原先的文件服务器上安装Oracle数据库。但是在Linux操作系统上安装Oracle服务器是一个很头疼的问题,需要安装不少的软件包。而我一开始部署Linux文件服务器的时候又不知道后来需要安装Oracle数据库,故不少的软件包都没有装。而且后来发现,不少的软件包其实在Linux安装盘中还没有,需要自己到网上去下。所以,如果要在原先已经部署好的Linux服务器中追加一些应用服务时,很容易出现这个软件包的依赖问题。
其实解决这个软件包的依赖问题说简单也不简单,说复杂也不复杂。我下面总结了几个方法,各位若有需要的话可以借鉴一下。
一、根据错误提示信息在安装光盘中寻找。
在安装软件包时如果遇到软件依赖关系问题时,通常情况下系统都会提示相关的信息。如提示“libgd.so.1.8 is needey by php-4.2.2-17”等等。这就表示安装PHP程序时,需要先安装libgd.so软件包。当遇到这个问题时,我建议系统管理员可以根据这个提示信息,先从Linux系统的安装盘中查找一下是否有这个软件包。
如上图所示,在Linux安装盘中的RPMS目录下面就存放着大量的软件包。通常情况下,像上面的libgd.so等常见的软件包都可以从这个光盘中找到。所以系统管理员根据系统的错误提示信息,就可以了解到安装某个软件之前先要安装那个软件包。然后从系统光盘中找到这个软件包,并进行安装即可。另外需要说明的是,向RedHat操作系统,如果采用的是CD安装盘,则其可能有很多张光盘。而这些软件包往往不是存储在一张CD光盘中的。不过可以肯定的是,每张光盘下都会有RPMS这个目录。当系统管理员不知道某个软件包存储在哪个盘中的话,则可以一张张的找过去。虽然比较麻烦一点,但是大部分情况下都会有收获的。
不过如果采用这个方法有一个限制。像安装Oracle这种大型的应用软件就不怎么适用。因为安装这种大型的软件本身就比较花费时间。如果等到安装失败之后再根据错误提示来安装软件包的话,则重复来重复去会浪费很多的时间,而且也会让系统产生很多的垃圾文件。为此除非是一些小型的软件包,否则的话,最好还是根据下面我要介绍的方法来做,以节省软件安装的时间。