Linux程序包管理之rpm

第十五章、Linux程序包管理之rpm

目录

  • 程序包管理器的基本功能
  • 如何获取程序包
  • rpm命令的使用

rpm全称为redhat package manager,是Redhat公司的包管理工具;软件包以.rpm为后缀结尾;

15.1、程序包管理器的基本功能

讲编译好的应用程序的各组成文件打包成一个或多个程序包文件,从而更方便实现程序包的安装、升级、卸载、查询、等操作;

15.2、如何获取程序包

1、系统发行版的光盘或官方的文件服务器;例如:http://mirrors.aliyun.com
2、项目的官方站点
3、第三方组织
	(a)EPEL
	(b)搜索引擎
		http://pkgs.org
		http://rpmfind.net
		http://rpm.pbone.net
4、自己动手,制作rpm包

15.3、rpm命令

使用格式

rpm [OPTION] [PACKAGE_FILE]
	安装:-i 
	升级:-U,-F
	卸载:-e
	查询:-q
	校验:-V
	数据库维护:--builddb, --initdb	

15.3.1、安装

使用格式

rpm -ivh PACKAGE_FILE

常用选项

-v:详细信息
-h:显示进度条,由50个#号组成,每个#表示%2进度
--test:测试安装,检查并报告依赖关系及冲突消息;
--nodeps:忽略依赖关系;
--repacepkgs:重新安装;

示例

[root@www Packages]# rpm -ivh tree-1.6.0-10.el7.x86_64.rpm
准备中...                          ################################# [100%]
正在升级/安装...
   1:tree-1.6.0-10.el7                ################################# [100%]
# 重新安装
[root@www Packages]# rpm -ivh --replacepkgs tree-1.6.0-10.el7.x86_64.rpm
准备中...                          ################################# [100%]
正在升级/安装...
   1:tree-1.6.0-10.el7                ################################# [100%]
# 测试安装
[root@www Packages]# rpm -ivh --test php-5.4.16-36.el7_1.x86_64.rpm
错误:依赖检测失败:
	httpd-mmn = 20120211x8664 被 php-5.4.16-36.el7_1.x86_64 需要
	php-common(x86-64) = 5.4.16-36.el7_1 被 php-5.4.16-36.el7_1.x86_64 需要
	php-cli(x86-64) = 5.4.16-36.el7_1 被 php-5.4.16-36.el7_1.x86_64 需要
	httpd 被 php-5.4.16-36.el7_1.x86_64 需要
# 忽略依赖关系安装
[root@www Packages]# rpm -ivh --nodeps php-5.4.16-36.el7_1.x86_64.rpm
准备中...                          ################################# [100%]
正在升级/安装...
   1:php-5.4.16-36.el7_1              ################################# [100%]

15.3.2、升级

使用格式

rpm -Uvh PACKAGE_FILE
rpm -Fvh PACKAGE_FILE

常用选项

-U:升级或安装,如果程序已经安装则升级,如果未安装则安装程序包;
-F:升级
--oldpackage:降级
--force:强制升级

注意:

1、不要对内核做升级操作,Linux支持多内核版本并存,因此,直接安装新内核;

2、如果某程序包的配置文件安装后曾被修改过,升级时,新版本的程序提供的同一个配置文件不会覆盖原有版本的配置文件,而是把新版本的配置文件重命名(FILENAME.rpmnew)后提供;

15.3.3、卸载

使用格式

rpm -e PACKAGE_FILE

常用选项

--nodeps:卸载时忽略依赖关系;
--test:测试卸载,但不真正执行;

示例

[root@www Packages]# rpm -q php
php-5.4.16-36.el7_1.x86_64
[root@www Packages]# rpm -e php
[root@www Packages]# rpm -q php
未安装软件包 php

15.3.4、查询

使用格式

rpm {-q|--query} [select-options] [query-options]

常用选项

[select-options]

PACKAGE_NAME:查询指定的程序包是否已经安装,及其版本;
-a:查询所有已安装上的包;
-f FILE:查询指定的文件由哪个程序包安装生成;
-p PACKAGE_FILE:用于实现对未安装的程序包执行查询操作;
--whatprovides CAPABILITY:查询指定的CAPABILITY由那个程序包提供;
--whatrequires CAPABILITY:查询指定的CAPABILITY被哪个包所依赖;

[query-options]

--changelog:查询rpm包的chagelog,每次rpm包升级都做了哪些改动;
-l:程序包安装生成的所有文件列表;
-i:程序包相关的信息,版本号,大小,所属的包组等;
-c:查询指定的程序包提供的配置文件;
-d:查询指定的程序包提供的帮助文档;
--provides:列出指定的程序包提供的所有CAPABILITY;
-R:查询指定的程序包的依赖关系;
--scripts:查询程序包自带的脚本片段;

常用方法组合

rpm -qi PACKAGE_FILE
rpm -ql PACKAGE_FILE
rpm -qc PACKAGE_FILE
rpm -qd PACKAGE_FILE
rpm -qpl PACKAGE_FILE
rpm -qpi PACKAGE_FILE
rpm -qpc PACKAGE_FILE

15.3.5、校验

使用格式

rpm -V PACKAGE_NAME

15.3.6、包来源合法性验证

导入信任的包制作者的密钥

对于centos发行版来说使用

[root@www ~]# rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

验证

1、安装此组织签名的程序时会自动验证;

2、手动验证:rpm -K PACKAGE_FILE

15.3.7、数据库重建

rpm管理器数据库路径:/var/lib/rpm

获取帮助

centos6: man rpm
centos7: man rpmdb

使用格式

rpm {--initdb | --builddb}
--initdb:初始化数据库,当前无任何数据库可初始化创建一个新的,当前有时不执行任何操作;
--rebuilddb:重新构建,通过读取;
原文地址:https://www.cnblogs.com/wangenzhi/p/6234852.html