在linux上,一个软件包通常由二进制程序库文件配置文件帮助文件组成。
其中:
二进制程序一般都放在/bin,/sbin,/usr/bin,/usr/sbin,/usr/local/bin和/usr/local/sbin这几个目录下边;

库文件都放在/lib,/lib64,/usr/lib,/usr/lib64,/usr/local/lib和/usr/local/lib64这些目录下;

配置文件一般都是放在/etc这个目录下;

而最基本的man帮助文件则是放在/usr/share/man这个目录下的。

在CentOS上,软件的安装方式一般有四种:
通用二进制编译:由志愿者把开发完成的源代码编译成二进制文件,打包后发布在网络上,大家都可以通过网络进行下载,到本地之后,经过解压配置就可以使用。

软件包管理器:使用包管理工具安装,有时候必须要解决软件包之间的依赖问题,例如rpm和deb等。

软件包前端管理工具:可以自动解决软件包依赖关系,例如yum和apt-get等。

源码包安装:从网络上下载软件的源码包到本地计算机,用gcc等编译工具编译成二进制文件后才能使用,有时必须要解决库文件的缺失问题。

CentOS上默认使用的软件包格式是rpm程序包

RPM最初是由RedHat公司开发的一种软件包管理工具,最初它的全称是Redhat Package Manager,现在包括SUSE在内的很多linux发行版都使用这种软件管理工具,使得rpm成为linux的软件包管理标准,所以现在它的全称为Rpm Package Manager.

rpm包的管理器包括软件,以及查询,校验,安装,升级,卸载,数据库管理等功能。

一个rpm程序包的格式为:
httpd-2.2.15-59.el7.x86_64.rpm

其中:
httpd是程序包的名称
2.2.15是版本
59.el7是发布许可
x86_64表示适用于AMD/Intel 64位体系结构构键的计算机

RPM程序包的管理命令-rpm
1、查询RPM程序包的信息:
(1)查询已安装的RPM程序包的信息

命令 说明
rpm -q 程序包名称 查询指定程序包是否安装
rpm -q 程序包名称 查询指定程序包是否安装
rpm -qa 显示当前系统中所有rpm程序包列表
rpm -qi 程序包名称 查看指定程序包的名称、版本、许可协议、用途描述等详细信息
rpm -ql 程序包名称 显示指定的程序包在当前系统中安装的所有目录、文件列表
rpm -qf 文件名或目录 查看指定的文件或目录是由哪个程序包所安装的
(2)查询未安装的RPM程序包
命令 说明
rpm -qpi 程序包名称 查看指定程序包的名称、版本、许可协议等
rpm -qpl 程序包名称 查看该软件包转呗要安装的所有目标目录、文件列表

2、rpm安装、升级、卸载RPM程序包

使用rpm命令实现操作是,基本的命令选项如下:

选项 作用
-i 在当前系统中安装一个新的RPM程序包
-e 卸载指定名称的程序包
-U 检查并升级系统中的某个软件包,若该软件包未安装,则等同于“-i”选项
-F 检查并更新系统中某个软件包,若该软件包未安装,则放弃安装
--force 强制安装某个程序包
--nodeps 忽略依赖关系安装某个程序包
-h 在安装或升级软件过程中,以“#”号显示安装进度
-v 显示软件安装过程中的详细信息

安装:
rpm -ivh 程序包名称
centos系统之rpm包管理
注:程序包要写绝对路径,这里本机使用本地系统镜像文件中的程序包。

卸载:
rpm -e 程序包名称
可以结合--nodeps忽略依赖关系。

3、维护RPM数据库
RPM数据库用于记录Linux系统中安装、卸载、升级应用程序的相关信息,由RPM包管理系统自动完成维护,一般不需要用户干预。

当RPM数据库发生损坏(误删文件、非法关机、病毒破坏等导致),且Linux系统无法自动完成修复是,将导致无法使用rpm命令正常安装、卸载及查询软件包。

这时客户以使用rpm命令:
rpm --rebuilddb 或者 rpm --initdb
对RPM数据库进行重建。