第八章系统管理本章学习要求了解软件包的类型了解软件包的命名格式掌握使用RPM软件包掌握编译并安装软件8.1软件包的类型和命名格式8.1.1软件包的类型Linux系统下的软件包通常有三种类型:一是rpm软件包,它是后缀名为.rpm的文件,是由RedHatLinux提供的一种包封装格式,现在许多Linux发行版都使用它;二是dpkg软件包,它是后缀名为.deb的文件,是由DebainLinux提供的一种包封装格式;三是tar软件包,它是后缀名为.tar.gz、.tar、.tar.bz2的文件,是使用tar工具打包形成的。8.1.2软件包的命名格式命名一般都遵循名称-版本[-发行号][-平台].类型([]中的内容有的软件包没有)。如iptables-1.4.3.tar.bz2软件包,iptables为软件包的名称,1.4.3为iptables的版本号,.tar.bz2为软件包的类型,说明该软件包是一个tar包。fcitx-3.0.2-1.i386.rpm软件包,其中fcitx为软件包的名称,3.0.2为fcitx的版本号,1为fcitx的发行号,i386为此软件包运行的平台,它适用于Intel80X86平台,类型为rpm,说明是一个rpm软件包。8.1.3软件包的安装方式Linux系统下软件包的安装方式分为两种:一种是直接安装,即安装完这个程序后,用户就可以使用,但用户看不到源程序,而且用户下载这种类型的软件包时要注意这个软件包是否是适合于自己的使用平台,否则将无法正常安装。另一种是编译后安装,用户需要使用编译器将其编译为可执行文件。这在Windows系统中是没有的,因为Windows的思想是不开放源程序。通常.tar.gz、.tar、.tar.bz2类型的软件包都是源程序,需要编译后才能安装;而.rpm、.deb类型的软件包是可执行程序,可以直接安装。8.2使用RPM软件包RPM(TheRedHatPackageManager)是一个开放的软件包管理系统。它工作于RedHatLinux及其它的Linux和UNIX系统,可以被任何人使用。对于用户来说,RPM提供的众多功能使维护系统要比以往容易的多。安装、卸载和升级RPM软件包时均是只需一条命令即可完成,所有烦琐的细节问题无须用户费心。8.2.1rpm的设计目标RPM有5种基本的操作模式:安装、卸载、升级、查询和验证。RPM软件包的设计目标如下:软件包的可升级性功能强大的软件包信息查询系统验证保持软件包的原始特征8.2.2安装RPM软件包安装RPM软件包的命令格式如下:rpm-ivh[options]package-files其中-ivh为rpm命令在安装RPM软件包的常用选项;package-files为RPM软件包的路径文件名列表。-i,--install安装RPM软件包。-v在安装过程中显示安装过程的详细信息。-h表示hash,在安装过程中显示“#”来表示RPM软件包的安装进度。--replacepkgs在安装RPM软件包时,若软件包已被安装,系统将无法继续完成RPM软件包的安装。这时可以使用该选项,忽略错误信息,完成RPM软件包的安装。--nodepsRPM软件包可能依赖于其它软件包,也就是说要求在安装(卸载)了特定的软件包之后才能安装(卸载)该软件包。如果在用户安装(卸载)某个软件包时存在这种未解决的依赖关系。系统将无法继续完成RPM软件包的安装(卸载)。用户虽然可以使用该选项完成RPM软件包的安装(卸载),但并不保证安装(卸载)完后软件包能正常运行。卸载RPM软件包时,也可以使用该选项。安装/package/rpm/fcitx-3.0.2-1.i386.rpm软件包。要求在安装过程中显示安装过程的详细信息和安装进度。命令和执行结果如下所示:[root@localhost~]#rpm-ivh/package/rpm/fcitx-3.0.2-1.i386.rpmPreparing...##########################################[100%]1:fcitx##########################################[100%]安装/package/rpm/fcitx-3.0.2-1.i386.rpm软件包。要求在安装过程中显示安装过程的详细信息和安装进度。命令和执行结果如下所示:[root@localhost~]#rpm-ivh/package/rpm/fcitx-3.0.2-1.i386.rpmPreparing...##########################################[100%]1:fcitx##########################################[100%]用户在安装RPM软件包时,有时会出现如下信息:Preparing...##########################################[100%]Packagefcitx-3.0.2-1isalreadyinstalled若用户仍旧要安装该软件包,可以卸载系统中的该软件包后再进行安装,也可以使用--replacepkgs选项,忽略上述错误信息,继续进行安装。8.2.3卸载RPM软件包卸载RPM软件包的命令格式如下:rpm-epackage-name该命令用于卸载系统中已安装的RPM软件包。其中package-name为RPM软件包的名称,而不是软件包的文件名。卸载刚才安装的fcitx-3.0.2-1.i386.rpm软件包,package-name为fcitx,而不是fcitx-3.0.2-1.i386,也不是fcitx-3.0.2-1.i386.rpm。使用命令如下:[root@localhost~]#rpm-efcitx用户在卸载RPM软件包时,有时会出现该软件包与其它软件包有依赖关系,用户必须先卸载与它依赖的软件包后,才能再卸载该软件包。这时用户可一层层地卸载与它有依赖关系的软件包,最后再卸载该软件包,也可以使用--nodeps选项,强行卸载该软件包。8.2.4升级RPM软件包升级RPM软件包与安装RPM软件包十分类似。其命令格式如下:rpm-Uvhpackage-files在执行升级操作时,RPM软件包对当前系统中同一软件包的较低版本进行升级,软件包中的版本必须高于当前系统中同一软件包的版本,否则系统会提示该软件包已被安装。RPM软件包的升级其实是软件包的卸载与安装的综合。建议用户在升级RPM软件包时,使用-Uvh选项(U为大写),这样用户可以看到升级安装过程的详细信息,更可以了解软件包的升级进度。8.2.5查询RPM软件包查询RPM软件包的命令格式如下:rpm-q[options][package-name]上述命令为查询已安装的软件包的数据库。package-name为RPM软件包的名称,而不是RPM软件包的文件名。如查询fcitx软件包是否已被安装。使用命令和执行结果如下:[root@localhost~]#rpm-qfcitxfcitx-3.0.2-18.2.6验证RPM包验证RPM软件包是通过比较软件包中安装的文件和软件包中同一文件的信息。验证主要是比较文件的大小、MD5值、校验码、文件权限、类型、所有者和用户组等。验证RPM包的最简单方法是使用如下命令格式:rpm-Vpackage-name举例:验证包含ls文件的软件包。使用命令如下:[root@localhost~]#rpm-Vf/bin/ls根据RPM软件包文件名来验证安装了的软件包。使用命令如下:[root@localhost~]#rpm-Vpfcitx--3.0.2-1.rpm安装查询N判断新旧卸载版本旧退出升级版本新Y图8-2安装RPM软件包流程图8.3使用tar软件包压缩类型的软件包的安装过程要比RPM软件包要复杂,并且有时候会遇到一些异想不到的问题,但这种类型的软件包一般都比RPM软件包的版本要高。用户想要使用高版本的、增强功能的、漏洞少的软件包,就必须掌握压缩类型软件包的安装。8.3.1解压如httpd-2.2.11.tar.gz,使用tar工具解压后就会在当前目录下产生http-2.2.11目录。解压命令使用如下之一:[root@localhost~]#tar-zxvfhttpd-2.2.11.tar.gz[root@localhost~]#gzip-dhttpd-2.2.11.tar.gz|tar-xvf-8.3.2查看并阅读文档解压成功后,使用cd命令进入解压产生的目录,然后使用ls命令查看该目录中的文件,并阅读目录中附带的INSTALL、README等与安装有关的说明文档。这些文件中一般都包含有该软件包安装的步骤和配置信息。这类文件是压缩软件包安装成功的关键,因为安装注意事项、安装步骤、安装过程中遇到的问题,一般都可以从这些文件中找到。建议用户安装tar软件包时,应查看并认真阅读与安装相关的文档。8.3.3配置源代码解压形成的目录中,一般都有一个名为configure的脚本文件(部分软件会是Configure、config),该脚本文件是执行软件包安装的第一步,也是最为关键的一步。该脚本文件的命令格式使用如下:./configure[options]当运行configure时,它将确定本地系统的性能。由configure收集的数据用来创建makefile文件,make使用这些文件创建可执行文件和库文件。用户可以使用选项和环境变量来调整configure的行为。configure的常用options如下所示:--prefix=directory配置软件包安装的位置。不指定该选项时,软件包将被安装在/usr/local/目录下。为了将软件包安装到用户指定的位置,可以用要安装的目录路径名来替换directory。建议用户在安装软件包时使用该选项。--with-package用配置软件中的某个可选包的名字来替换package。如用命令configure--with-dll来配置windows模拟器wine的源代码,则该源代码将配置生成windows模拟支持的共享库。将httpd-2.2.11安装到/var/apache2目录下。配置源代码的命令使用如下:[root@localhosthttpd-2.2.11]#./configure--prefix=/var/apache28.3.4编译代码make工具最基本的功能就是通过makefile文件来描述源程序之间的相互关系并自动维护编译工作。其命令语法格式使用如下:make[options][target-file]target-file是指makefile文件中依赖行上的目标。当不指定target-file时,make将更新makefile中第1个依赖行上的目标。make常用的options为-ffile,使用file来替代makefile作为输入。而用户在编译代码时,一般不加任何选项,而直接使用make工具。编译httpd-2.2.11源代码。使用命令如下:[root@localhosthttpd-2.2.11]#make8.3.5安装应用软件使用makeinstall命令即可完成软件包的安装。完成安装后,用户就可以执行安装的应用程序了。若用户在使用./configure时没有指定软件安装的位置,则应用程序的可执行文件一般会存放在/usr/local/bin目录下,用户查找后执行即可;若用户在使用./configure时指定了软件安装的位置,安装成功后,会在指定的安装位置的目录下有一个bin目录,在此目录下,用户可以找到要执行的程序。安装httpd-2.2.11应用软件,并启动httpd程序。使用命令如下:[root@localhosthttpd-2.2.11]#makeinstall[root@localhosthttpd-2.2.11]#/var/apache2/bin/apachectl