简介
在主机中安装了CentOS操作系统以后,就具有了提供应用程序和网络服务的平台。然而随操作系统一起安装的软件包毕竟只有少数,实现的功能也比较有限,当需要为主机提供更多的功能时安装新的应用程序就成为必然工作。本章将学习如何在CentOS系统中安装和管理应用程序。
本章重点
使用rpm工具安装、查询及卸载软件包
通过源代码编译安装软件包
1. Linux应用程序基础
本节将对Linx操作系统中应用程序的一些基本知识进行介绍,内容包括Linux命令与应用程的关系、应用程序的组成部分、软件包的封装类型等。
1.1 Linux命令与应用程序的关系
在Linux操作系统中,一直以来命令和应用程序并没有特别明确的区别,从长期使用习惯来看可以通过以下描述来对两者进行区别。
应用程序命令的执行文件大多比较小,通常放置在 /bin 和 /sbin目录中。对于内部命令.常集成在Bash程序内,而不是独立地执行文件;命令文件一般在安装操作系统时一起安装,用于辅助操作系统本身的管理:命令行大多适用于“命令字 选项 参数”形式的一般格式;命令只在字符操作界面中运行。
应用程序的执行文件通常放在 /usr/bin, /usr/sbin和 /usr/local/bin、/usr/local/sbin中;应用程序一般需要在操作系统之外另行安装,提供相对独立于操作系统的功能,有时候等同于“软件”的概念;应用程序一般没有固定的执行格式,运行方式由程序开发者自行定义;应用程序可能会用到图形界面,形式多样;有些应用程序提供的执行文件,能够使用像Linux命令一样的运行格式,所以也经常被称为程序命令。
本章中讲解的应用程序被视为将软件包安装到系统中后产生的各种文档,其中包括可执行文件配置文件,用户手册等内容,这些文档被组织为一个有机的整体,为用户提供特定的功能。因此安装完一个软件包以后,可能会向系统中复制大量的数据文件,并进行相关设置。在Linux操作系统中,典型的应用程序通常由以下几部分组成。
普通的可执行程序文件:一般保存在usrbin目录中,普通用户即可执行。
服务器程序、管理程序文件:一般保存在usrsbin目录中,只有管理员能执行。
配置文件:一般保存在etc目录中,配置文件较多时会建立相应的子目录。
日志文件:一般保存在varlog目录中。
关于应用程序的参考文档等数据:一般保存在srsharedoo录中。
执行文件及配置文件的man手册页:一般保存在usrhareman目录中。
下面以CentOS中已经安装的postix软件包(一款邮件服务器程序)为例,展示服务器应用程序的文件组成。执行"pm-al postix"命令,可以查看postix软件包在系统中安装的目录和文件清单(关于rpm命令的详细用法将在下节详细讲解),具体操作如下:
[root@localhost ~]# rpm-ql postfix
……//略部分内容
/etc/postfix/main.cf //配置文件
/etc/sasl2/smtpd.conf...... //省略部分内容
/usr/bin/mailg.postfix //普通用户能够执行的程序文件
/usr/bin/newaliases.postfix ..... //省略部分内容
/usr/lib/systemd/system/postfix.service //启动服务程序的脚本文件
/usr/sbin/postfix //管理员用户才能执行的程序文件
/usr/sbin/postmap.... //省略部分内容
/usr/share/man/man5/postconf.5.gz // man手册页文件
/usr/share/man/man1/mailq.postfix.1.gz.... //省略部分内容
1.2软件包的封装类型
对于各种应用程序的软件包,在封装时可以采用各种不同的类型,不同类型的软件包其安装方法也各不相同。常见的软件包封装类型如下所述。
RPM软件包:这种软件包文件的扩展名为 ".rpm",只能在使用RPM (RPM Peckage Menger, RPM软件包管理器)机制的Linux操作系统中安装,如RHEL, Fedora, CentOS等。RPM软件包一般针对特定版本的操作系统量身定制,因此依赖性较强。安装RPM软件包需要使用操作系统中的rpm命令。
DEB软件包:这种软件包文件的扩展名为 ".deb".只能在使用DPKG (Debian Package, Debian包管理器)机制的Linux操作系统中进行安装,如Debien. Uuntu等。安装DEB软件包需使用操作系统中的dpkg命令。
源代码软件包:这种软件包是程序员开发完成的原始代码, 一般被制作成 “ .tar. gz” 或 ”.tar.bz2" 等格式的压缩包文件,因多数使用tar命令打包而成,所以经常被称为 "TarBall” 。安装源代码软件包需要使用相应的编译工具,如Linux中的C语言编译器gcc。因此,在安装操作系统的时候尽量勾选 "开发工具" 一项来安装基本的编译环境。
附带安装程序的软件包:这种软件包的扩展名不一,但仍以TarBall格式的居多。软件包中会提供用于安装的可执行程序或脚本文件,如intall.sh、setup等 ,有时候会以 ".bin" 格式的单个安装文件形式出现。安装时只需运行安装文件就可以根据向导程序的提示完成安装操作。
开放源代码的自由软件绝大多数选择以TaBall的形式发布,而RPM软件包. DEB软件包等则使用了二进制的文件格式,代码相对比较封闭。存本章的后续内容中,主要介绍RPM软件包和源代码软件包编译这两种安装方式。在实验案例中会提供少量附带安装程序的软件包进行练习,但在理论部分中不再进行讲解。
2.使用RPM软件包管理工具
RPM软件包是各种Linux发行版本中应用较广泛的软件包之一。RPM软件包以其强大的功能得到多数Linux发行版本的支持和广大Linux使用者的拥护。在本节中将学习RPM软件包的常用管理操作。
2.1 RPM概述
RPM软件包管理机制最早由Red Hat公司提出,后来随着版本的升级逐渐融入更多的优秀特性成为众多Linax发行版中公认的软件包管理标准。在其官方站点http://www.rpm.org中,可以了解到关于RPM包管理机制的详细资料。
RPM软件包管理器通过建立统一的文件数据库,对在Linux操作系统中安装、卸载、升级的各种.rpm软件包进行详细的记录,并能够自动分析软件包之间的依赖关系,保持各应用程序在一个协调、有序的整体环境中运行。
使用RPM机制封装的软件包文件拥有约定俗成的命名格式,一般使用软件名一软件版本一发布次数、操作系统类型、硬件架构类型,pm的文件名形式 如 “ bash-4.2.46-20.el7_2.x86_64.rpm” .其中硬件平台通常为 “i386” 或 ”i686” 等,表示适用于Intel公司的处理器. ”x86_64” 表示适用于64位的系统,如果是 "noarch" 表示不区分硬件架构(支持不同硬件体系的处理器)。
CentOS的DVD安装光盘携带的大部分软件包都在Packages目录中,通过该目录中的文件可以素悉RPM软件包的一般命名格式。例如,以下操作用于查看DVD光盘设备中携带的bash和fontcontig-devel软件包(分别是Shell解释器.字体配置和定制库).一般情况下, CentOS 启动后安装光盘会自动挂载到系统的/run/media/root/CentOS\7\x86_64/Packages/ 目录下。
[root@localhost~]# cd /run/media/root/Centos\7\ x86_64/Packages/
//切换至光盘自动挂载位置(目录)
[root@localhost Packages]# 1s-ih bash* fontconfig-devel*
-rw-rw-r--. 2 root root 1011K Aug 2 2016 bash-4.2.46-20.e172:x86_64.rpm
-rw-rw-r--. 2 root root 86K Jul 3 2014 bash-completion-2.1-6.el7.noarch.rpm
-rw-rw-r-- 2 root root 129K Nov 20 12:44 fontconfig-devel-2.10.95-10.el7.x86_64. rpm
使用RPM软件包管理命令
在CentOS系统中, rpm命令是实现RPM软件包管理的主要工具。本小节将学习使用rpm命令安装、卸载软件包及查询RPM相关信息的方法。
1. rpm命令的格式
使用rpm命令能够实现几乎所有对RPM软件包的管理功能,执行"man rpm"命令可以获得关于rpm命令的详细帮助信息,具体操作如下:
[root@localhost ~]# man rpm
rpm(8) Red Hat Linux rpm(8)
NAME
rpm - Red Hat 包管理器
总览
rpm [选项]
描述
rpm是一个很有用的包管理器,可以用于生成,安装,查询,核实,更新以及卸载单个软件包.
一个包通常包括一个文件档以及关于包 的信息, 比如名字, 版本, 描述等.
必须选取下列基本模式中一个: 初始化数据库,重新生成数据库,生成包,重新编译包,从Tar包生成RPM包, 查询,
显示查询标签,安装,更新,卸载,核实,签名检查,再签名,添加签名,设置所有者和组以及显示配置.
数据库维护:
rpm -i [--initdb]
rpm -i [--rebuilddb]
生成:
rpm [-b|t] [package_spec]+
rpm [--rebuild] [sourcerpm]+
rpm [--tarbuild] [tarredsource]+
查询:
rpm [--query] [queryoptions]
rpm [--querytags]
维护已安装的包:
rpm [--install] [installoptions] [package_file]+
rpm [--freshen|-F] [installoptions] [package_file]+
rpm [--uninstall|-e] [uninstalloptions] [package]+
rpm [--verify|-V] [verifyoptions] [package]+
……//省略部分内容
从rpm命令的手册页信息中可以看出,rpm命令具有非常强大的功能,结合不同的命令选项及子选项主要可以实现以下三类功能。
查询、验证PPM软件包的相关信息。
安装、升级、卸载PPM软件包。
维护RPM数据库信息等综合管理操作。