Linux软件包依赖关系让很多使用Linux的人感到很麻烦。在安装Linux系统时,不是选择安装所有的软件包。在完成安装后,若再进行软件安装的话,就可能会遇到一些依赖关系的问题,如在安装某些编程软件包时,系统就可能会提示一些错误信息。说需要其他的一些软件包的支持。
遇到这种Linux软件包依赖关系的话,该如何处理呢?在谈这个具体的解决措施之前,我先跟大家说说在哪些情况下容易出现软件包的依赖关系问题。
一是在操作系统安装的时候,没有选择全部的软件包。大部分时候出于安全或者其他方面的原因,Linux系统管理员往往不会选择安装全部的软件包。而只是安装一些运行相关服务所必要的软件包。但是有时候系统管理员可能并不清楚哪些软件包是必须要装的,否则后续的一些服务将无法启动;而那些软件包则是可选的。由于在系统安装的时候很难一下子弄清楚这些内容,故在Linux系统安装完毕后,再部署其他一些软件包的时候,就容易出现这个问题。
二是在Linux服务器上追加其他的一些应用服务时,容易出现类似的问题。如有一次企业需要使用一个Oracle数据库,我就在原先的文件服务器上安装Oracle数据库。但是在Linux操作系统上安装Oracle服务器是一个很头疼的问题,需要安装不少的软件包。而我一开始部署Linux文件服务器的时候又不知道后来需要安装Oracle数据库,故不少的软件包都没有装。而且后来发现,不少的软件包其实在Linux安装盘中还没有,需要自己到网上去下。所以,如果要在原先已经部署好的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这种大型的应用软件就不怎么适用。因为安装这种大型的软件本身就比较花费时间。如果等到安装失败之后再根据错误提示来安装软件包的话,则重复来重复去会浪费很多的时间,而且也会让系统产生很多的垃圾文件。为此除非是一些小型的软件包,否则的话,***还是根据下面我要介绍的方法来做,以节省软件安装的时间。
二、参考官方的文档。
通常情况下,一些软件的官方文档会说明安装它们的软件需要哪些软件包。如在安装Oracle数据库时,就必须需要安装不少的软件包。到底需要安装哪些软件包,在Oracle的官方网站上都会有详细的说明。我在安装Oracle数据库时,就先安装这个说明,一一来验证Linux系统中是否安装了这些软件包。如果没有安装的话,就马上装上去。此时各位Linux系统管理员不要抱着侥幸心理,已经不安装不会有大问题,这是大错特错了。对于Oracle公司官方网站建议的软件包在Oracle数据库系统安装之前必须一五一十的安装上去。否则的话轻则导致数据库安装失败,重者的话会导致后续数据库运行不稳定。
其实不光是Oracle数据库系统,其他的一些应用软件对Linux系统都会有类似的要求。它们要求在安装它们的应用软件之前,Linux系统必须安装有某些软件包,否则的话安装就会失败。所以我建议各位Linux系统管理员,在安装这些软件之前,***先到官方网站上去寻找类似的文档,然后对照文档的内容去验证Linux系统是否安装了这些软件包。如此的话就可以避免软件包依赖关系的问题。另外,在网络上也可以寻找到很多有用的价值。有些安装过这个软件的Linux系统管理员,会把自己安装过程中系统遇到的软件包依赖关系列举出来,会一一说明需要先安装哪些软件包。这些网络上的文档虽然其专业性可能没有官方提供的文档那么专业。但是对我们来说也具有很大的参考价值。
三、从专业网络上查询。
为了正确安装某些软件包,需要安装一些文件。可是有时候系统管理员可能根据系统的提示还不能够确定到底安装哪些软件包才会有这些文件。特别是对于一些不常用的软件包或者系统管理员***次接触的软件包往往会遇到这种问题。此时,系统管理员就可以到一些专业的网站上去查询。这里我给大家介绍一个很不错的网站,即http://rpmfind.net。系统管理员只需要在这个网站搜索的地方输入需要的文件名字,如libgd.so,则搜索结果中就会显示需要安装哪个软件包才具有这个文件。找到这个软件包的名字之后,只需要从光盘或者网络上下载这个软件包进行安装即可。当然,在安装这些软件包的时候,可能还会遇到其他软件包依赖关系的问题。如安装php软件包需要libgd.so文件,而这个文件属于gb软件包。但是在安装gb软件包时,可能这个软件包跟其他软件包又具有依赖关系,又需要安装其他软件包才行。此时系统管理员就需要耐心的一一按顺序进行解决了。
可见大部分情况下,在遇到软件包依赖关系问题的时候,操作系统提供的文件名字与软件包名字都会有直接的联系。有可能文件的名字就是软件包的名字。但是有些时候文件的名字与软件包的名字会相差甚远。此时大部分系统管理员可能光凭文件名字无法找到对应的软件包。此时就需要借助笔者上面谈到的一些专业网站,去查询软件包的名字了。
另外我还有一个小建议。当系统管理员安装了某个软件之后,如果存在软件包之间的依赖关系,则***能够拿本子或者通过其他手段记录下来。因为在以后的工作中很有可能还会需要安装这些软件。如此的话,在下次安装的时候就不用这么麻烦了。可以对照以前的笔记直接安装需要的软件包。毕竟在同一个地方摔倒多次不是什么光彩的事情。
以上这些就是我解决Linux软件包依赖关系问题的绝招。系统管理员过掌握了这些招数的话,则绝大部们的软件包依赖关系问题会迎刃而解。
【编辑推荐】