CentOS系统的程序包管理:rpm
2019-07-27 15:38
33 查看
版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_44983653/article/details/97397837
CentOS系统的程序包管理:rpm
概述
CentOS系统上使用rpm命令管理程序包:包括 安装、卸载、升级、查询、校验、数据库维护 等。
rpm 命令格式:
# rpm [OPTIONS] [PACKAGE_FILE]
rpm 常用 OPTIONS:
安装:-i, --install 升级:-U, --update, -F, --freshen 卸载:-e, --erase 查询:-q, --query 校验:-V, --verify 数据库维护:--builddb, --initdb
rpm包安装
命令格式:
# rpm {-i|--install} [install-options] PACKAGE_FILE ...
一些短选项可以合并在一起,比如常用的组合如下:
# rpm -ivh PACKAGE_FILE ...
选项说明:
# GENERAL OPTIONS: -v:verbose,详细信息 -vv:更详细的输出
# [install-options]: -h # hash marks,输出进度条;每个#表示2%的进度 --test # 测试安装,检查并报告依赖关系及冲突消息等(不真正执行安装,即dry run模式) --nodeps # 忽略依赖关系;不建议使用 --replacepkgs # 重新安装 --nosignature # 不检查包签名信息,不检查来源合法性 --nodigest # 不检查包完整性信息 --noscripts # 不执行程序包脚本 # rpm可以自带脚本执行,一共有四类,如下: preinstall:安装过程开始之前运行的脚本 # %pre, --nopre postinstall:安装过程完成之后运行的脚本 # %post, --nopost preuninstall:卸载过程真正开始执行之前运行的脚本 # %preun, --nopreun postuninstall:卸载过程完成之后运行的脚本 # %postun, --nopostun
示例:
[root@LeeMumu packages]# rpm -i tree-1.6.0-10.el7.x86_64.rpm [root@LeeMumu packages]# rpm -ql tree /usr/bin/tree /usr/share/doc/tree-1.6.0 /usr/share/doc/tree-1.6.0/LICENSE /usr/share/doc/tree-1.6.0/README /usr/share/man/man1/tree.1.gz
[root@LeeMumu packages]# rpm -ivh wget-1.14-18.el7.x86_64.rpm Preparing... ################################# [100%] package wget-1.14-18.el7_6.1.x86_64 (which is newer than wget-1.14-18.el7.x86_64) is already installed file /usr/bin/wget from install of wget-1.14-18.el7.x86_64 conflicts with file from package wget-1.14-18.el7_6.1.x86_64 file /usr/share/man/man1/wget.1.gz from install of wget-1.14-18.el7.x86_64 conflicts with file from package wget-1.14-18.el7_6.1.x86_64
rpm包升级
rpm包升级命令常用以下两种命令格式:
# rpm {-U|--upgrade} [install-options] PACKAGE_FILE ... # rpm {-F|--freshen} [install-options] PACKAGE_FILE ...
其中区别:
- upgrade:安装有旧版程序包,则“升级”;如果不存在旧版程序包,则“安装”。
- freshen:安装有旧版程序包,则“升级”;如果不存在旧版程序包,则不执行升级操作。
常用的命令组合:
# rpm -Uvh PACKAGE_FILE ... # -U:升级或安装 # rpm -Fvh PACKAGE_FILE ... # -F:升级
常用的选项:
# [install-options]: --oldpackage:降级 --force:强制升级
升级注意事项:
- 不要对内核做升级操作;Linux支持多内核版本并存,因此,直接安装新版本内核。
- 如果某原程序包的配置文件安装后曾被修改过,升级时,新版本的程序提供的同一个配置文件不会覆盖原有版本的配置文件,而是把新版本的配置文件重命名(FILENAME.rpmnew)后提供。
rpm包卸载
语法格式:
# rpm {-e|--erase} [--allmatches] [--nodeps] [--noscripts] [--test] PACKAGE_NAME ...
常用选项:
--allmatches # 卸载所有匹配指定名称的程序包的各版本 --nodeps # 忽略依赖关系 --test # 测试卸载,dry run模式
rpm包查询
语法格式:
# rpm {-q|--query} [select-options] [query-options]
常用选项:
[select-options] PACKAGE_NAME # 查询指定的程序包是否已经安装,及其版本 -a, --all # 查询所有已经安装过的包 -f FILE # 查询指定的文件由哪个程序包安装生成 -p, --package PACKAGE_FILE # 用于实现对未安装的程序包执行查询操作 --whatprovides CAPABILITY # 查询指定的CAPABILITY由哪个程序包提供 --whatrequires CAPABILITY # 查询指定的CAPABILITY被哪个包所依赖
[query-options] --changelog # 查询rpm包的changlog -l, --list # 程序安装生成的所有文件列表 -i, --info # 程序包相关的信息,版本号、大小、所属的包组,等 -c, --configfiles # 查询指定的程序包提供的配置文件 -d, --docfiles # 查询指定的程序包提供的文档 --provides # 列出指定的程序包提供的所有的CAPABILITY -R, --requires # 查询指定的程序包的依赖关系 --scripts # 查看程序包自带的脚本片断
常用组合:
# -qi PACKAGE # -qf FILE # -qc PACKAGE # -ql PACKAGE # -qd PACKAGE # -qpi PACKAGE_FILE # -qpl PACKAGE_FILE # -qpc PACKAGE_FILE
[root@LeeMumu ~]# rpm -qi httpd Name : httpd Version : 2.4.6 Release : 89.el7.centos Architecture: x86_64 Install Date: Sat 27 Jul 2019 03:34:19 AM EDT Group : System Environment/Daemons Size : 9817301 License : ASL 2.0 Signature : RSA/SHA256, Mon 29 Apr 2019 11:45:07 AM EDT, Key ID 24c6a8a7f4a80eb5 Source RPM : httpd-2.4.6-89.el7.centos.src.rpm Build Date : Wed 24 Apr 2019 09:48:37 AM EDT Build Host : x86-02.bsys.centos.org Relocations : (not relocatable) Packager : CentOS BuildSystem <http://bugs.centos.org> Vendor : CentOS URL : http://httpd.apache.org/ Summary : Apache HTTP Server Description : The Apache HTTP Server is a powerful, efficient, and extensible web server.
[root@LeeMumu ~]# rpm -ql httpd /etc/httpd /etc/httpd/conf /etc/httpd/conf.d ... ... /etc/httpd/conf.d/welcome.conf
rpm包校验
语法格式:
# rpm {-V|--verify} [select-options] [verify-options]
S file Size differs M Mode differs (includes permissions and file type) 5 digest (formerly MD5 sum) differs D Device major/minor number mismatch L readLink(2) path mismatch U User ownership differs G Group ownership differs T mTime differs P caPabilities differ
包来源合法性验正及完整性验证:
- 完整性验证:SHA256
- 来源合法性验证:RSA
公钥加密方式:
- 对称加密:加密、解密使用同一密钥
- 非对称加密:密钥是成对儿的
获取并导入信任的包制作者的密钥
# rpm -K|checksig rpmfile # 检查包的完整性和签名 # rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 # RPM-GPG-KEY-CentOS-7 # CentOS 7发行版光盘提供 # rpm -qa “gpg-pubkey*”
验证:
- 安装此组织签名的程序时,会自动执行验正
- 手动验正:rpm -K PACKAGE_FILE
rpm数据库
-
数据库路径如下,查询操作都是通过此处的数据库进行的。
# /var/lib/rpm
-
重建命令:
# rpm {--initdb|--rebuilddb} [--dbpath DIRECTORY] [--root DIRECTORY] # initdb: 初始化 # 初始化数据库,当前无任何数据库可实始化创建一个新的;当前有时不执行任何操作 # rebuilddb:重建已安装的包头的数据库索引目录 # 重新构建,通过读取当前系统上所有已经安装过的程序包进行重新创建
rpm获取帮助
- CentOS 6:man rpm
- CentOS 7:man rpmdb
相关文章推荐
- CentOS系统的程序包管理:yum
- 19.文件系统――程序包管理概述及rpm包合法性验证(rpm --import -K --checksig)
- Centos系统管理常用的rpm包名称
- Linux系统程序包管理工具-RPM
- CentOS-rpm与yum程序包管理
- centos系统之rpm包管理
- Linux系统程序包的管理功能相关命令rpm与yum的使用
- rpm、yum、编译安装轻松管理centos7程序包
- Linux系统程序包管理工具 RPM
- centos系统上的二进制格式软件包的安装及管理(rpm和yum)
- rpm包管理功能全解(CentOS系统)
- CentOS 6.4 Linux vsftpd shell管理系统脚本完整版
- 禅道管理系统 linux centos 安装
- CentOS的软件包的管理之rpm和yum
- Linux程序包管理 rpm/yum
- centos -- 系统service的管理
- CentOS程序包管理、下
- CentOS 6.4安装SVN版本管理系统
- centos(4)-rpm软件管理