在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 程序包名称
注:程序包要写绝对路径,这里本机使用本地系统镜像文件中的程序包。
卸载:
rpm -e 程序包名称
可以结合--nodeps忽略依赖关系。
3、维护RPM数据库
RPM数据库用于记录Linux系统中安装、卸载、升级应用程序的相关信息,由RPM包管理系统自动完成维护,一般不需要用户干预。
当RPM数据库发生损坏(误删文件、非法关机、病毒破坏等导致),且Linux系统无法自动完成修复是,将导致无法使用rpm命令正常安装、卸载及查询软件包。
这时客户以使用rpm命令:
rpm --rebuilddb 或者 rpm --initdb
对RPM数据库进行重建。