1.命令作用
RPM软件包管理器(RPM Package Manager);该管理器功能强大,可用于构建、安装、查询、验证、更新以及删除单个软件包
2.命令语法
① QUERYING AND VERIFYING PACKAGES(查询和验证包):
rpm {-q|--query} [select-options] [query-options]
rpm {-V|--verify} [select-options] [verify-options]
② INSTALLING, UPGRADING, AND REMOVING PACKAGES(安装、升级和删除包**):
rpm {-i|--install} [install-options] PACKAGE_FILE ...
rpm {-U|--upgrade} [install-options] PACKAGE_FILE ...
rpm {-F|--freshen} [install-options] PACKAGE_FILE ...
rpm {-e|--erase} [--allmatches] [--justdb] [--nodeps] [--noscripts] [--notriggers] [--test] PACKAGE_NAME ...**
③ MISCELLANEOUS(其他参数):
rpm {--querytags|--showrc}
rpm {--setperms|--setugids} PACKAGE_NAME ...
3.参数详解
中括号{ }内的参数:
- -q, --query,查询选项,用于查询软件包是否安装;需要与其他参数一起使用,如与-a查看所有已安装的软件包
- -V, --verify,验证选项,用于验证软件包是否安装
- -i, --install,安装软件包
- -U, --upgrade,升级安装软件包(如升级的软件包未安装,也会安装)
- -F, --freshen,升级已安装的软件包(如升级的软件包未安装,是不会安装的)
- -e, --erase,删除(卸载)已安装软件包
- --querytags,显示已知的查询标签
- --showrc,显示最终的rpmrc及宏配置文件
- --setperms,设置一个包中文件的权限
- --setugids,设置一个包中文件的用户/组所有权
query/verify-options:
- -a, --all,查询已安装的所有软件包,验证所有软件包文件;需与-q或-v结合使用
- -f, --file,查询文件属于那个软件包,验证指定软件包文件;需与-q或-v结合使用
- -g, --group,查询/验证指定组名称中的软件包;如: rpm -qg "System Environment/Daemons"
- -p, --package,查询rpm软件包文件的相关信息,常与-q、-i、-l、-d、--requires结合使用;验证rpm软件包文件内的文件属性(权限、大小、MD5等)是否符合预期,常与-q结合使用,避免安装损坏或不兼容的包,无输出表示验证通过,输出异常标记(S.5....T.),S代表文件大小不一致,5代表MD5验证失败,T代表修改时间不符
- --pkgid,使用包标识符查询/验证包
- --hdrid,用头标识符查询/验证包
- --triggeredby,查询由该包触发的包
- --whatrequires,查询/核实那些需要依赖项的软件包
- --whatprovides,查询/核实提供依赖关系的软件包
- --nomanifest ,不要将非包文件当作清单文件进行处理
select-options:
- -c, --configfiles,列出所有配置文件;如: rpm -qc httpd
- -d, --docfiles,列出所有文档文件;如: rpm -qd httpd
- -i, --info,列出软件包中的描述性信息(与-q一起时可以使用-i,这里的-i是info,而不是install);如: rpm -qi httpd
- -L, --licensefiles,列出所有license文件
- --dump,导出基本文件信息;如: rpm -q --dump httpd
- -l, --list,列出软件包中的文件;如: rpm -ql httpd
- --queryformat=QUERYFORMAT,使用以下查询格式
- -s, --state,显示软件包中文件的状态;如: rpm -qs httpd
verify-options:
- --nofiledigest,不要验证文件摘要
- --nofiles,不要验证包中的文件
- --nodeps,不要验证软件包的依赖关系
- --noscript,不要执行验证脚本
install/upgrade/erase-options:
- --allfiles,安装所有文件,包括那些原本可能会被跳过的配置文件
- --allmatches,删除所有与<package>相匹配的包(如<package>指定多个包,通常会生成错误信息)
- --badreloc,在不可重定位的软件包情况下,搬迁文件;即强制重定位安装路径;需与--relocate结合使用
- -e, --erase=<package>+,删除(卸载)软件包
- --excludedocs,不要安装文档
- --excludepath=<path>,跳过前导组件<path>的文件
- --force,强制安装(--replacepkgs --replacefiles的简写),忽略软件包之间版本依赖关系,一般与-U/-F参数一起使用
- -F, --freshen=<packagefile>+,如果已经安装,则升级软件包
- -h, --hash,在安装包时打印散列标记(可以使用-v)
- --ignorearch,不要验证软件包架构
- --ignoreos,不要验证软件包的操作系统
- --ignoresize,安装前不要检查磁盘空间
- -i, --install,安装软件包
- --justdb,更新数据库,但不要修改文件系统
- --nodeps,不验证包的依赖关系,直接安装;即可能部分依赖未安装,可能导致不可用
- --nofiledigest,不要验证文件摘要
- --nocontexts,不要安装文件安全上下文
- --noorder,不要重新安排软件包的安装顺序以满足依赖关系要求
- --noscripts,不要执行包脚本程序段
- --notriggers,不要执行由该包触发的任何脚本片段
- --nocollections,不要执行任何收集操作
- --oldpackage,升级到软件包的旧版本(降级安装),--force参数强制安装时会自动完成降级安装;一般与-U/-F参数一起使用
- --percent,在安装包时打印百分比
- --prefix=<dir>,如果可重定位的话,将软件包重定位到<dir>
- --relocate=<old>=<new>,将文件从路径<old>重新定位到<new>
- --replacefiles,忽略不同版本软件包之间的文件冲突
- --replacepkgs,如果该软件包已存在,则重新安装它
- --test,不实际安装软件包,但会告知,软件包是否可正常安装
- -U, --upgrade=<packagefile>+,升级软件包
- --reinstall=<packagefile>+,重新安装软件包
Common options:
- -D, --define='MACRO EXPR',定义宏的值为 EXPR
- --undefine=MACRO,取消宏定义
- -E, --eval='EXPR',打印表达式EXPR的宏扩展内容
- --macros=<FILE:...>,读取指定的文件<FILE:...>,而不是默认的文件
- --noplugins,不启用任何插件
- --nodigest,不验证包的摘要信息
- --nosignature,不验证软件包的签名
- --rcfile=<FILE:...>,读取指定的文件<FILE:...>,而不是默认的文件
- -r, --root=ROOT,使用指定的ROOT作为顶级目录(默认是"/")
- --dbpath=DIRECTORY,使用目录DIRECTORY指定的数据库
- --querytags,显示已知的查询标签
- --showrc,显示最终的rpmrc和宏配置
- --quiet,提供较简略的输出结果
- -v, --verbose,提供更详细的输出结果
- --version,打印正在使用的rpm的版本号
Other options:
- --scripts,从已经安装软件包中列出安装/删除脚本片段
- --setperms,设置包中文件的权限
- --setugids,设置包中文件的用户/组所有权
- --conflicts,列出与此软件包冲突的功能
- --obsoletes,列出通过安装此软件包删除的其他软件包
- --provides,列出这个包提供的功能
- -R, --requires,列出软件包所必须的依赖关系
- --info,列出软件包中的描述性信息
- --changelog,列出此软件包的变更日志
- --xml,列出XML格式的元数据
- --triggers,从软件包中列出触发器脚本
- --last,按安装时间对软件包进行排序,时间最近的排在最前面
- --dupes,列出重复的软件包
- --filesbypkg,列出每个软件包中的所有文件
- --fileclass,列出包含类别的文件名
- --filecolor,按颜色列出文件名
- --fscontext,列出包含文件系统安全信息的文件名
- --fileprovide,用providers列出文件名
- --filerequire,列出带有require的文件名
- --filecaps,列出具有POSIX1.e功能的文件名
Help options:
- -?, --help,显示帮助信息
- --usage,显示简短的使用信息
4.常用用例
4.1.常用操作及其步骤
# 1.检查软件包是否存在
rpm -qa | grep iperf3 # 如无任何输出则表示系统没有安装iperf3服务
# 2.第1步,如果软件不存在,指定rpm软件包,安装iperf服务
rpm -ivh iperf3-3.1.7-2.el7.x86_64.rpm
# 3.第1步,如果软件存在,那么可能需要卸载重新安装,或者直接重新安装,或者更新安装,或者降级更新安装
# 3.1.卸载后重新安装
rpm -e iperf
rpm -ivh iperf3-3.1.7-2.el7.x86_64.rpm
# 3.2.直接重新安装
rpm -vh --reinstall iperf3-3.1.7-2.el7.x86_64.rpm
# 3.2.更新安装
rpm -Uvh iperf3-3.1.7-3.el7_9.x86_64.rpm
# 3.3.降级更新安装
rpm -Uvh --oldpackage iperf3-3.1.7-2.el7.x86_64.rpm
4.2.rpm相关查询
rpm -qa # 查看当前系统已经安装的全部rpm软件包
rpm -qa | grep iperf3 # 从全部rpm软件包中筛选iperf3,以查看iperf3软件包是否已经安装
rpm -q iperf3 # 查看指定软件包是否安装,如安装会返回软件包名称及其版本信息,如未安装会提示"package iperf3 is not installed"
rpm -qa iperf3 # 查看指定软件包是否安装,如安装会返回软件包名称及其版本信息,如未安装则不会返回任何信息(验证软件的完整性)
rpm -qi iperf3 # 查看iperf3软件包中的描述性信息
rpm -qg "System Environment/Daemons" # 查看指定组名称中的软件包
rpm -ql iperf3 # 列出已安装iperf3软件包中的文件
rpm -qpl iperf3-3.1.7-2.el7.x86_64.rpm # 列出未安装iperf3软件rpm包中的文件
rpm -qs iperf3 # 列出iperf3软件包中的文件,同时输出文件的状态
rpm -qc httpd # 列出httpd软件包的所有"配置文件"
rpm -qd iperf3 # 列出iperf3软件包的所有"文档文件"
rpm -qR iperf3 # 列出软件包所必须的依赖关系
rpm -q --whatrequires bash # 查询那些已经安装,且依赖bash软件包的软件包;如有信息输出,就不能卸载,可能会导致其他软件包不可用
rpm -q --whatprovides python3 # 查询提供python3命令的rpm软件包
rpm -q --whatprovides /usr/bin/python3 # 查询提供/usr/bin/python3命令的rpm软件包
rpm -q --scripts httpd # 从已经安装软件包中列出安装/删除脚本片段
rpm -q --changelog iperf3 # 列出此软件包的变更日志
rpm -qf /etc/httpd/conf/httpd.conf # 查询文件属于那个软件包
yum provides /bin/ls # 也可使用yum查看文件属于那个软件包
yum provides ls # 也可使用yum查看命令属于那个软件包
yum provides */libxslt.so.1 # 也可使用yum查看so文件属于那个软件包
4.3.rpm相关验证
rpm -Va # 验证系统中已经安装的所有软件包文件
rpm -Vp iperf3-3.1.7-2.el7.x86_64.rpm # 验证rpm软件包文件内的文件属性(权限、大小、MD5等)是否符合预期;无内容输出则通过验证;输出异常标记(S.5....T.),S代表文件大小不一致,5代表MD5验证失败,T代表修改时间不符
4.4.rpm安装
rpm -ivh iperf3-3.1.7-2.el7.x86_64.rpm # 直接安装
rpm -ivh --force iperf3-3.1.7-2.el7.x86_64.rpm # 强制安装
rpm -ivh --nodeps iperf3-3.1.7-2.el7.x86_64.rpm # 不验证包依赖关系进行安装
4.5.rpm升级/降级
rpm -Uvh iperf3-3.1.7-3.el7_9.x86_64.rpm
rpm -Uvh --oldpackage iperf3-3.1.7-2.el7.x86_64.rpm
4.6.rpm删除卸载
rpm -e iperf3 # 直接卸载软件包
rpm -e --force iperf3 # 强制卸载软件包
rpm -e --nodeps iperf3 # 不检查依赖卸载软件包
4.7.解压rpm文件
# 将package.rpm解压到当前目录
# -i 分别表示从压缩文件中提取文件
# -d 创建主要目录
# -m 保留文件修改时间
# -v 详细列举所处理的文件
rpm2cpio iperf3-3.1.7-2.el7.x86_64.rpm | cpio -idmv