第七章  Linux的软件安装及编译系统核心
7.1  Linux软件的包装方式及安装方法
一、Linux软件的包装方式
Linux的软件套件包装方式有这么三种:①用rpm程序RPMRed Hat Package Manager)包装,文件名结尾是linux完全安装.rpm,这是Red Hat派系的发行套件的软件包装格式。②以tar+gzip制作,文件名结尾为.或是.tgz,这是Slackware派系的包装格式。③软件包装方式为Deb套件,使用dpkg程序包装,文件名结尾为.deb,这类是GNU/Linux Debian的,因此,如果你在网上看到任何的软件文件名结尾是rpm..tgz或是.deb都可以肯定这可能是for Linux的软件套件。但是因为UNIX平台很多,Linux也支持各种平台,所以我们还不能绝对地肯定它是for Linux on Intel x86平台的软件。所以取得任何的rpm..tgz.deb的软件套件,必须辩别其是否为for Linux on Intel x86平台的软件,以及是用什么library编译的,才能正确地在你的Linux上使用,下面介绍几个软件的辩识要点。
1RPM套件的平台辨识方法
Red Hat 目前支持的平台有x86(i386)Sparcalpha三个平台,所以当你看到软件文件名为 软件名-3.0.5-15.i386.rpm时,就知道这个软件是for Linux on Intel x86平台的binary软件。这里版本为3.0.5,发行序号是15i386则代表该软件支持的平台。
如果你看到的文件名为 软件名-3.0.5-15.src.rpm时,代表这是包装为RPM套件格式的软件源代码,不管用那一种平台安装Red Hat都可以安装,麻烦的是必须要你自己先编译才能使用。
2tarBall套件的平台辨识方法
tar GNU gzip包装软件源代码的方式,是全世界UNIX通用的包装方式之一,不管你使用哪一种Linux发行套件,或者任何其他的UNIX版本,都可以直接安装以tarball包装的软件,这是tarball的好处之一。另一个好处便是,tarball格式软件容易得到,因为软件的发展人员写好程序后,把它包装为tarball以利于在各种平台的UNIX/Linux上流通,所以用tarball包装的软件版本都是最新的,而且最容易取得。RMP套件或是Deb软件套件,都是先取得tarball软件源代码后,进行编译再将其包装为RPM或是Deb格式的。最新的tarball的好处是,你可以编译属于自己系统的软件,编译软件时,可以调整编译参数为系统进行最佳化,使编译出
来的二进制执行文件可以更稳定、更快速、更适合在你的机器下执行,达到最佳执行效率。但是自己编译软件时,有时操作会出错,要让一个初学者出问题的原因,那可不容易,而且编译软件也要花很多时间,所以RPM软件套件越来越流行了,不过要更深入地学习Linux,编译软件的功夫是不可少的。
tarball软件的辨识方式,依压缩的命名惯例判断为:文件名-版本号-发行序号. ,但也不全是这样。最直接的方式是将该软件解压缩(tar zxvf ,阅读软件的readmeinstallName.lsm之类的文件,按照软件说明的方法来进行。
另外,也有人将编译好的软件包装为tarball套件,命名上则通常会加上bin字眼代表其为二进制文件,但也不是一抓来就用的,因为各类型Linux的发行版之间较为混乱,使用的GNU C Library不统一。
3Deb套件平台辨识方法
大部分的Linux软件都包装为RPM或是tarball格式,仅有Debian GNU/Linux独具一格,使用Deb软件套件格式,文件名如 tkpgp_1.11-2.deb,必须使用dpkg或是dselect程序安装。
4.注意软件使用的C Library版本
目前Linux最大的问题在于各个发行版使用不同的GNU C Library版本,另一个是Linux发行版内部的新旧版本问题,如Red Hat4.2版的libc5直接改为Red Hat5.0glibc2,所以任何旧版的Red Hatlibc5软件都不能使用在5.0以后的版本上,解决问题的办法是寻新版的软件,或是拿旧版软件的源代码在新版的Red Hat上重新编译,若编译成功即可使用。
总之,不管你使用哪一种Linux软件套件格式,首先要注意的就是使用的GNU C Library是否符合你使用的Linux发行版本,以及你使用的硬件平台是什么,不能随意拿了软件就安装,否则烦人的软件执行错误(segmentation fault)会出现在你的屏幕前。
二、RPMRed Hat Package Manager)软件安装法
一般,执行RPM指令,即可安装文件名以.rpm为结尾的文件,如rpm –i 文件名,但是系统必须安装cpio程序,才能使用rpm套件(Red Hat已默认安装cpio)。
1RPM软件的安装
拿到RPM软件套件,文件名类似于 xanim-27064-3.i386.rpm ,安装时打入以下命令:
#rpm –ivh xanim-27064-3.i386.rpm
-i 表示安装软件套件,-v 使安装时有软件名称出现,-h使安装时有“#”出现,也可以在正式安装之前用--test选项测试安装。
2.安装RPM套件时会发生的问题
A)该软件已经安装
出现的提示:
foo n is already installed
error :xxxxx-nnnnn-n cannot be installed
当你一定要重装时,加上选项-replacepkgs
B)版本相冲突或不兼容
出现的提示:
foo /usr/bin/foo conflicts with file from bar-1.0-1
error :xxxxx-nnnnn-n cannot be installed
解决方法:必须先删除旧软件才能安装新版软件,或是加上--force参数强制安装,但不保证能正确执行。
C)互有依赖性的RPM软件套件
RPM 套件之间常常存在关相互依赖的情况,如安装KDE套件一定要先安装Qt Library才能执行。
出现的提示:
failed dependencies:foo is needed by bar-1.0-1
解决方法:先安装该软件依赖的软件。强制安装这个套件,可以加上--nodeps选项,但不保证能正确执行。
3.移除RPM套件
加上-e选项即可移除RPM套件,如:#rpm –e xxxxx xxxxx是软件的名称),移除RPM套件时,也可能会遇到软件的互相依赖性的问题,这就是说该软件被其他的软件所需要,不能被移除,若一定要移除,可以加上参数 --nodeps 强制移除。但这可能造成其他软件无法正常执行。
4.升级RPM套件
对于以前已经安装过的软件套件,到它的新版本后,必须用 –u 选项以升级方式安装,装好后,发现新软件不如旧软件好用,又可以加上 --oldpackage 选项强制安装旧版的软件。