Linux / Unix命令 :rpm
名称
rpm - RPM软件包管理器
概要
查询和验证包裹:
rpm { -q | --query } [ select-options ] [ query-options ]
rpm { -V | --verify } [ select-options ] [ verify-options ]
rpm --import PUBKEY ...
rpm { -K | --checksig } [ --nosignature ] [ --nodigest ]
PACKAGE_FILE ...
安装,升级和删除软件包:
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 ] [ --nodeps ] [ --noscripts ]
[ --notriggers ] [ --repackage ] [ --test ] PACKAGE_NAME ...
杂:
rpm { --initdb | --rebuilddb }
rpm { --addsign | --resign } PACKAGE_FILE ...
rpm { --querytags | --showrc }
rpm { --setperms | --setugids } PACKAGE_NAME ...
选择选项
[ PACKAGE_NAME ] [ -a, - all ] [ -f, - 文件 文件 ]
[ -g, - group GROUP ] { -p, - package PACKAGE_FILE ]
[ --fileid MD5 ] [ --hdrid SHA1 ] [ --pkgid MD5 ] [ --tid TID ]
[ --querybynumber HDRNUM ] [ - PACKAGE_NAME ]
[ - 提供 能力 ] [ - 需要 能力 ]
查询选项
[ --changelog ] [ -c, - configfiles ] [ -d, - docfiles ] [ --dump ]
[ --filesbypkg ] [ -i, - info ] [ --last ] [ -l, - list ]
[ - 提供 ] [ --qf, - queryformat QUERYFMT ]
[ -R, - requires ] [ --scripts ] [ -s, - state ]
[ - 触发器, - triggerscripts ]
验证选项
[ --nodeps ] [ --nofiles ] [ --noscripts ]
[ --nodigest ] [ --nosignature ]
[ --nolinkto ] [ --nomd5 ] [ --nosize ] [ --nouser ]
[ --nogroup ] [ --nomtime ] [ --nomode ] [ --nordev ]
安装选项
[ --aid ] [ --allfiles ] [ --badreloc ] [ --excludepath OLDPATH ]
[ --excludedocs ] [ --force ] [ -h, - hash ]
[ - 禁用 ] [ - 禁用 ] [ - 禁用 ]
[ --includedocs ] [ --justdb ] [ --nodeps ]
[ --nodigest ] [ --nosignature ] [ --nosuggest ]
[ - 注册] [ --noscripts ] [ --notriggers ]
[ --oldpackage ] [ --percent ] [ --prefix NEWPATH ]
[ --relocate OLDPATH = NEWPATH ]
[ --repackage ] [ --replacefiles ] [ --replacepkgs ]
[ --test ]
描述
rpm是一个功能强大的软件包管理器 ,可用于构建,安装,查询,验证,更新和擦除单个软件包。 一个软件包包含用于安装和清除存档文件的文件和元数据的存档。 元数据包括帮助程序脚本,文件属性和关于软件包的描述性信息。 软件包有两种:二进制软件包,用于封装要安装的软件;源代码软件包,包含生成二进制软件包所需的源代码和配方。
必须选择以下基本模式之一: 查询 , 验证 , 签名检查 , 安装/升级/清新 , 卸载 , 初始化数据库 , 重建数据库 , 辞职 , 添加签名 , 设置所有者/组 , 显示查询标签和显示配置 。
常规选项
这些选项可以用于所有不同的模式。
-?, - 帮帮我
然后正常打印更长的使用信息。
- 版
打印一个包含正在使用的rpm版本号的行。
- 安静
尽可能少地打印 - 通常只会显示错误信息。
-v
打印详细信息 - 通常会显示常规进度消息。
-vv
打印大量丑陋的调试信息。
--rcfile FILELIST
每个以冒号分隔的FILELIST中的文件都按rpm读取配置信息。 只有列表中的第一个文件必须存在,并且代字号将被扩展为$ HOME的值。 默认的FILELIST是/ usr / lib / rpm / rpmrc : / usr / lib / rpm / redhat / rpmrc : 〜/ .rpmrc 。
- 管 CMD
将rpm的输出传送到命令CMD 。
--dbpath 目录
使用DIRECTORY中的数据库比默认路径/ var / lib / rpm更快
- 根 目录
所有操作都使用以DIRECTORY为根的文件系统树。 请注意,这意味着DIRECTORY中的数据库将用于依赖性检查,并且任何scriptlet(例如安装后的%post ,如果是构建包,则为%prep )将在到目录的chroot(2)之后运行。
安装和升级选项
rpm安装命令的一般形式是
rpm { -i | --install } [ install-options ] PACKAGE_FILE ...
这将安装一个新的软件包。
rpm升级命令的一般形式是
rpm { -U | --upgrade } [ install-options ] PACKAGE_FILE ...
这会升级或安装当前安装到新版本的软件包。 这与安装相同,只是在安装新软件包后删除了所有其他版本的软件包。
rpm { -F | --freshen } [ install-options ] PACKAGE_FILE ...
这将升级软件包,但仅限于当前存在早期版本。 PACKAGE_FILE可能被指定为ftp或http URL ,在这种情况下,软件包将在安装之前下载。 有关rpm的内部ftp和http客户端支持的信息,请参阅FTP / HTTP选项 。
- 援助
在需要时将建议的软件包添加到事务集。
- 全部文件
安装或升级软件包中的所有missingok文件,无论它们是否存在。
--badreloc
与--relocate一起使用 ,允许在所有文件路径上进行重定位,而不仅仅是包含在二进制包重定位提示中的OLDPATH 。
- 排除路径OLDPATH
不要安装名称以OLDPATH开头的文件。
--excludedocs
不要安装任何标记为文档的文件(其中包括手册页和texinfo文档)。
- 力
与使用--replacepkgs , --replacefiles和--oldpackage相同 。
-h,--hash
在软件包归档文件解压缩时打印50个哈希标记。 与-v | --verbose一起使用以获得更好的显示效果。
--ignoresize
在安装此软件包之前,请勿检查安装文件系统是否有足够的磁盘空间
--ignorearch
即使二进制包和主机的体系结构不匹配,也允许安装或升级。
--ignoreos
即使二进制包和主机的操作系统不匹配,也允许安装或升级。
--includedocs
安装文档文件。 这是默认行为。
--justdb
只更新数据库,不更新文件系统。
--nodigest
阅读时不要验证包或标题摘要。
--nosignature
阅读时不要验证包或标头签名。
--nodeps
在安装或升级软件包之前不要执行依赖关系检查。
--nosuggest
不要建议提供缺失依赖的软件包。
--noorder
不要重新安排软件包的顺序。 软件包列表通常会被重新排序以满足依赖关系。
--noscripts
--nopre
--nopost
--nopreun
--nopostun
不要执行相同名称的scriptlet。 --noscripts选项等同于
--nopre --nopost --nopreun --nopostun
并关闭相应的%pre , %post , %preun和%postun scriptlet(s)的执行。
--notriggers
--notriggerin
--notriggerun
--notriggerpostun
不要执行指定类型的任何触发器scriptlet。 --notriggers选项相当于
- 未 触发 - 未 触发 - 未 触发
并关闭相应的%triggerin , %triggerun和%triggerpostun scriptlet(s)的执行。
--oldpackage
允许升级使用较旧的软件包替换较新的软件包。
- 百分
打包百分比作为文件从软件包档案中解压缩。 这是为了使rpm易于从其他工具运行。
- 前缀NEWPATH
对于可重定位的二进制包,将所有以包重定位提示中的安装前缀开头的文件路径转换为NEWPATH 。
--relocate OLDPATH = NEWPATH
对于可重定位的二进制包,请将包重定位提示中以OLDPATH开头的所有文件路径转换为NEWPATH 。 如果要重新定位包中的多个OLDPATH,则可以重复使用此选项。
--repackage
擦除前重新打包文件。 以前安装的软件包将根据宏%_repackage_name_fmt命名,并将在宏%_repackage_dir所指定的目录中创建(缺省值为/ var / tmp )。
--replacefiles
即使它们替换其他已安装的软件包中的文件,也要安装软件包。
--replacepkgs
即使它们中的一些已经安装在这个系统上,也要安装它们。
- 测试
不要安装软件包,只需检查并报告潜在的冲突。
删除选项
rpm擦除命令的一般形式是
rpm { -e | --erase } [ --allmatches ] [ --nodeps ] [ --noscripts ] [ --notriggers ] [ --repackage ] [ --test ] PACKAGE_NAME ...
以下选项也可以使用:
--allmatches
删除与PACKAGE_NAME匹配的所有版本的软件包。 如果PACKAGE_NAME匹配多个包,通常会发出错误。
--nodeps
在卸载软件包之前不要检查依赖关系。
--noscripts
--nopreun
--nopostun
不要执行相同名称的scriptlet。 包擦除期间的--noscripts选项等同于
--nopreun --nopostun
并关闭相应的%preun和%postun scriptlet(s)的执行。
--notriggers
--notriggerun
--notriggerpostun
不要执行指定类型的任何触发器scriptlet。 --notriggers选项相当于
--notriggerun --notriggerpostun
并关闭对应的%triggerun和%triggerpostun scriptlet(s)的执行。
--repackage
擦除前重新打包文件。 以前安装的软件包将根据宏%_repackage_name_fmt命名,并将在宏%_repackage_dir所指定的目录中创建(缺省值为/ var / tmp )。
- 测试
不要真正卸载任何东西,只是通过运动。 与-vv选项一起用于调试。
查询选项
rpm查询命令的一般形式是
rpm { -q | --query } [ select-options ] [ query-options ]
您可以指定打印信息包的格式。为此,请使用
--qf | --queryformat QUERYFMT
选项,后跟QUERYFMT格式字符串。 查询格式是标准printf(3)格式的修改版本。 该格式由静态字符串(可能包括换行符,制表符和其他特殊字符的标准C字符转义字符)和printf(3)类型格式化程序组成。 由于rpm已经知道要打印的类型,因此必须省略类型说明符,并用由{}字符括起来的要打印的页眉标记的名称替换。 标签名称是大小写无效的,标签名称的前导RPMTAG_部分也可以省略。
替代输出格式可以通过以下标签来请求: typetag 。 目前,支持以下类型:
:盔甲
用ASCII装甲包裹公钥。
:BASE64
使用base64编码二进制数据。
:日期
使用strftime(3)“%c”格式。
:天
使用strftime(3)“%a%b%d%Y”格式。
:depflags
格式依赖性标志。
:FFLAGS
格式化文件标志。
:十六进制
以十六进制格式。
:八进制
以八进制格式。
:烫发
格式化文件权限。
:shescape
转义单引号以便在脚本中使用。
:triggertype
显示触发器后缀。
例如,要只打印查询包的名称,可以使用%{NAME}作为格式字符串。 要以两列打印包名称和分发信息,可以使用%-30 {NAME}%{DISTRIBUTION} 。 rpm会打印一个列表,列出它使用--querytags参数调用时所知道的所有标记。
有两个查询选项子集:包选择和信息选择。
包装选择选项:
包裹名字
查询名为PACKAGE_NAME的已安装软件包。
-a, - 全部
查询所有安装的包。
-f, - 文件FILE
查询包拥有文件 。
--fileid MD5
查询包含给定文件标识符的包,即文件内容的MD5摘要。
-g,--group GROUP
使用GROUP组查询软件包。
--hdrid SHA1
查询包含给定标题标识符的包,即不可变标题区域的SHA1摘要。
-p,--package PACKAGE_FILE
查询(卸载)的软件包PACKAGE_FILE 。 PACKAGE_FILE可以被指定为ftp或http风格的URL,在这种情况下,包头将被下载和查询。 有关rpm的内部ftp和http客户端支持的信息,请参阅FTP / HTTP选项 。 PACKAGE_FILE参数(如果不是二进制包)将被解释为ASCII包清单。 注释是允许的,以'#'开始,并且包清单文件的每一行可能包括空格分隔的glob表达式,包括带有远程glob表达式的URL,这些表达式将被扩展到代替包清单的路径附加的PACKAGE_FILE参数给查询。
--pkgid MD5
查询包含给定包标识符的包,即组合标头和有效内容内容的MD5摘要。
--querybynumber HDRNUM
直接查询HDRNUM th数据库条目; 这仅用于调试。
--specfile SPECFILE
像解析包一样解析和查询SPECFILE 。 虽然并非所有信息(例如文件列表)都可用,但此类查询允许使用rpm从spec文件中提取信息,而无需编写specfile解析器。
--tid TID
查询具有给定TID事务标识符的包。 当前使用unix时间戳作为事务标识符。 所有在单个事务中安装或删除的软件包都有一个共同的标识符。
- 被 PACKAGE_NAME 触发
查询由包“ PACKAGE_NAME”触发的包。
- 什么提供 能力
查询提供CAPABILITY功能的所有软件包。
- 什么要求 能力
查询所有需要CAPABILITY才能正常运行的软件包。
包装查询选项:
--changelog
显示包裹的变更信息。
-c,--configfiles
仅列出配置文件(隐含-l )。
-d, - doc文件
仅列出文档文件(隐含-l )。
- 倾倒
转储文件信息如下:
路径大小mtime md5sum模式所有者组isconfig isdoc rdev符号链接该选项必须至少与-l , -c , -d中的一个一起使用。
--filesbypkg
列出每个选定软件包中的所有文件。
-i,--info
显示软件包信息,包括名称,版本和说明。 如果指定了一个,则使用--queryformat 。
- 持续
根据安装时间对软件包列表进行订购,使最新的软件包位于顶部。
-l,--list
列出软件包中的文件。
--provides
列出此软件包提供的功能。
-R, - 需要
列出该软件包依赖的软件包。
--scripts
列出用作安装和卸载过程一部分的软件包特定脚本。
-s, - 状态
显示包中的文件状态 (隐含-l )。 每个文件的状态都是正常的 , 未安装或替换的 。
- 触发器, - 触发器
显示包中包含的触发脚本(如果有)。
验证选项
rpm verify命令的一般形式是
rpm { -V | --verify } [ select-options ] [ verify-options ]
验证软件包会将软件包中已安装文件的信息与从存储在rpm数据库中的软件包元数据中提取的文件信息进行比较。 除此之外,验证会比较每个文件的大小,MD5总和,权限,类型,所有者和组。 显示任何差异。 没有从包中安装的文件(例如,使用“ --excludedocs ”选项安装时排除的文档文件)将被忽略。
软件包选择选项与软件包查询(包括软件包清单文件作为参数)相同。 验证模式的其他唯一选项是:
--nodeps
不要验证包的依赖关系。
--nodigest
阅读时不要验证包或标题摘要。
- 没有文件
不要验证包文件的任何属性。
--noscripts
不要执行%verifyscript scriptlet(如果有的话)。
--nosignature
阅读时不要验证包或标头签名。
--nolinkto
--nomd5
--nosize
--nouser
--nogroup
--nomtime
--nomode
--nordev
不要验证相应的文件属性。
输出的格式是8个字符的字符串,一个可能的属性标记:
c %配置配置文件。 d %doc文档文件。 g %ghost文件(即文件内容不包含在包有效载荷中)。 l %许可证文件。 r %readme自述文件。从包头,然后是文件名。 8个字符中的每一个表示文件的属性与数据库中记录的那些属性的值的比较结果。 单个“ 。 ”(句点)表示测试通过,而单个“ ? ”(问号)表示测试不能执行(例如文件权限阻止阅读)。 否则,(符号助记符)字符表示相应的验证测试失败:
S文件大小不同M M ode不同(包括权限和文件类型) 5 MD 5和不同D D设备主要/次要编号不匹配L读取L墨水(2)路径不匹配U用户所有权不同G组所有权不同T m T ime不同数字签名和消息验证
rpm 数字签名命令的一般形式是
rpm --import PUBKEY ...
rpm { --checksig } [ --nosignature ] [ --nodigest ]
PACKAGE_FILE ...
--checksig选项检查包含在PACKAGE_FILE中的所有摘要和签名,以确保包的完整性和来源。 请注意,无论何时读取包,都会验证签名,并且--checksig可用于验证与包关联的所有摘要和签名。
没有公钥就不能验证数字签名。 可以使用--import将一个ascii装甲公钥添加到rpm数据库中。 导入的公钥在标题中携带,密钥环管理与包管理完全相同。 例如,所有当前导入的公钥都可以通过以下方式显示:
rpm -qa gpg-pubkey *
有关特定公钥的详细信息,当导入时,可以通过查询显示。 以下是关于红帽GPG / DSA密钥的信息:
rpm -qi gpg-pubkey-db42a60e
最后,公共密钥可以像导入包一样进行擦除。 以下是删除红帽GPG / DSA密钥的方法
rpm -e gpg-pubkey-db42a60e
签署一个包裹
rpm --addsign | - 重新设置 PACKAGE_FILE ...
--addsign和--resign选项都会为每个给定的包PACKAGE_FILE生成并插入新签名,替换任何现有的签名。 由于历史原因有两种选择,目前行为没有区别。
使用GPG标记包
为了使用GPG对软件包进行签名,必须将rpm配置为运行GPG,并能够使用适当的键找到密钥环。 默认情况下, rpm使用与GPG相同的约定来查找密钥环,即$ GNUPGHOME环境变量。 如果您的密钥环未位于GPG预期的位置,则需要将宏%_gpg_path配置为要使用的GPG密钥环的位置。
为了与较早版本的GPG,PGP和rpm兼容,只应配置V3 OpenPGP签名数据包。 DSA或RSA验证算法都可以使用,但DSA是首选。
如果您想要签署自己创建的软件包,则还需要创建自己的公钥和密钥对(请参阅GPG手册)。 您还需要配置rpm宏
%_签名
签名类型。 目前只支持gpg和pgp。
%_gpg_name
您希望用来签署包裹的“用户”的名称。
例如,要使用GPG以用户“John Doe
在宏配置文件中。 对于每个系统配置使用/ etc / rpm / macros ,对于每个用户配置使用〜/ .rpmmacros 。
重建数据库选项
rpm重建数据库命令的一般形式是
rpm { --initdb | --rebuilddb } [ -v ] [ --dbpath DIRECTORY ] [ --root DIRECTORY ]
使用--initdb创建新数据库,使用--rebuilddb从已安装的软件包头重建数据库索引。
SHOWRC
命令
rpm --showrc
显示rpm将用于所有选项的值当前是在rpmrc和宏配置文件中设置的。
FTP / HTTP选项
rpm可以充当FTP和/或HTTP客户端,以便可以从互联网上查询或安装软件包。 用于安装,升级和查询操作的软件包文件可以指定为ftp或http样式的URL:
FTP://用户名:密码@ HOST:PORT /路径/到/ package.rpm
如果省略:PASSWORD部分,则会提示输入密码(每个用户/主机名对一次)。 如果用户和密码均被省略,则使用匿名ftp 。 在所有情况下,执行被动(PASV) ftp传输。
rpm允许以下选项与ftp URL一起使用:
--ftpproxy 主机
主机HOST将用作所有ftp传输的代理服务器,它允许用户通过使用代理系统的防火墙机器进行ftp。 该选项也可以通过配置宏%_ftpproxy来指定。
- 支持 主机
用于代理ftp服务器上的ftp连接而不是默认端口的TCP 端口号。 该选项也可以通过配置宏%_ftpport来指定。
rpm允许以下选项与http URL一起使用:
--httpproxy 主机
主机HOST将用作所有http传输的代理服务器。 该选项也可以通过配置宏%_httpproxy来指定。
--httpport PORT
用于代理http服务器上的http连接而不是默认端口的TCP 端口号。 该选项也可以通过配置宏%_httpport来指定。
遗留问题
执行rpmbuild
rpm的构建模式现在驻留在/ usr / bin / rpmbuild可执行文件中。 尽管下面的弹出式别名提供的遗留兼容性已经足够,但兼容性并不完美; 因此通过popt别名构建模式兼容性正在从rpm中删除。 安装rpmbuild软件包,并参阅rpmbuild (8)以获取之前在rpm (8)中记录的所有rpm构建模式的文档。
如果您希望从rpm命令行继续调用rpmbuild ,请将以下行添加到/ etc / popt中 :
rpm exec --bp rpmb -bp rpm exec --bc rpmb -bc rpm exec --bi rpmb -bi rpm exec --bl rpmb -bl rpm exec --ba rpmb -ba rpm exec --bb rpmb -bb rpm exec --bs rpmb -bs rpm exec --tp rpmb -tp rpm exec --tc rpmb -tc rpm exec --ti rpmb -ti rpm exec --tl rpmb -tl rpm exec --ta rpmb -ta rpm exec - tb rpmb -tb rpm exec -ts rpmb -ts rpm exec --rebuild rpmb --rebuild rpm exec --recompile rpmb --recompile rpm exec --clean rpmb --clean rpm exec --rmsource rpmb --rmsource rpm exec --rmspec rpmb --rmspec rpm exec --target rpmb --target rpm exec - 短路电路rpmb - 短路电路也可以看看
popt (3), rpm2cpio (8), rpmbuild (8),http://www.rpm.org/ http://www.rpm.org/>
重要提示:使用man命令( %man )查看特定计算机上的命令使用方式。