Content-type: text/html
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,--file FILE]
[-g,--group GROUP] {-p,--package PACKAGE_FILE]
[--fileid MD5] [--hdrid SHA1] [--pkgid MD5] [--tid TID]
[--querybynumber HDRNUM] [--triggeredby PACKAGE_NAME]
[--whatprovides CAPABILITY] [--whatrequires CAPABILITY]
[--changelog] [-c,--configfiles] [-d,--docfiles] [--dump]
[--filesbypkg] [-i,--info] [--last] [-l,--list]
[--provides] [--qf,--queryformat QUERYFMT]
[-R,--requires] [--scripts] [-s,--state]
[--triggers,--triggerscripts]
[--nodeps] [--nofiles] [--noscripts]
[--nodigest] [--nosignature]
[--nolinkto] [--nomd5] [--nosize] [--nouser]
[--nogroup] [--nomtime] [--nomode] [--nordev]
[--aid] [--allfiles] [--badreloc] [--excludepath OLDPATH]
[--excludedocs] [--force] [-h,--hash]
[--ignoresize] [--ignorearch] [--ignoreos]
[--includedocs] [--justdb] [--nodeps]
[--nodigest] [--nosignature] [--nosuggest]
[--noorder] [--noscripts] [--notriggers]
[--oldpackage] [--percent] [--prefix NEWPATH]
[--relocate OLDPATH=NEWPATH]
[--repackage] [--replacefiles] [--replacepkgs]
[--test]
rpm 是一个强大的 软件包管理器,可以用来构建,安装,查询,校验,升级和卸载单独的软件打包。一个 打包 包括文件的归档,以及用来安装和卸载归档文件的元信息。元信息包括辅助脚本,文件属性以及打包的描述性信息。打包 有两种,二进制打包,用来封装要安装的软件;源代码打包,包含源代码以及为生成二进制打包,必要的文件。
必须选择下列模式之一: Query 查询, Verify 校验, Signature Check 检查签名, Install/Upgrade/Freshen 安装/升级/更新, Uninstall 卸载, Initialize Database 初始化数据库, Rebuild Database 重构数据库, Resign 重签名, Add Signature 添加签名, Set Owners/Groups 设置属主, Show Querytags 显示查询标记, 以及 Show Configuration 显示配置.
这些选项可以用在所有不同的模式中。
安装命令的一般形式是
rpm {-i|--install} [install-options] PACKAGE_FILE ...
这样安装了一个新软件包。
升级命令的一般形式是
rpm {-U|--upgrade} [install-options] PACKAGE_FILE ...
这样安装或升级已安装的软件包到新版本。它与安装类似,只是所有其他版本的打包在新软件包安装后都将移除。
rpm {-F|--freshen} [install-options] PACKAGE_FILE ...
仅当系统中存在更早的版本时,这样会升级软件包。PACKAGE_FILE 必须指定为 ftp 或 http URL,这样软件包可以在安装之前去下载。参见 FTP/HTTP OPTIONS 中有关 rpm 的内嵌 ftp 和 http 客户端支持。
--nopre --nopost --nopreun --nopostun
等价,将 %pre, %post, %preun, 和 %postun 小程序全部关闭。
--notriggerin --notriggerun --notriggerpostun
等价,将 %triggerin, %triggerun, 和 %triggerpostun 小程序全部关闭。
卸载命令的一般形式是
rpm {-e|--erase} [--allmatches] [--nodeps] [--noscripts] [--notriggers] [--repackage] [--test] PACKAGE_NAME ...
同时还可以用下列选项:
--nopreun --nopostun
将 %preun, 和 %postun 小程序的执行关闭。
--notriggerun --notriggerpostun
将 %triggerun, 和 %triggerpostun 小程序的执行关闭。
查询命令的一般形式是
rpm {-q|--query} [select-options] [query-options]
可以指定输出时软件包信息的格式。为此,使用选项
--qf|--queryformat QUERYFMT
附带 QUERYFMT 格式化字符串。查询命令是标准的 printf(3) 格式的修改版本。格式包括静态字符串 (可能包括标准的 C 转义字符,新行符,跳格以及其他特殊字符) 以及 printf(3) 类型标记。由于 rpm 已知输出类型,因此应当忽略类型标记,使用头部字段名来代替,包含在 {} 中。字段名是大小写不敏感的,起始的 RPMTAG_ 部分可以被忽略。
可选的输出格式是用 :typetag 表示。当前,支持的类型有:
将公钥以 ASCII 包装。
例如,要只输出所查询的软件包的名称,可以使用 %{NAME} 作为格式化字符串。要分两列输出软件包名称和发行版信息,可以用 %-30{NAME}%{DISTRIBUTION}。如果执行时使用 --querytags 参数,rpm 将输出它已知的所有标记列表。
查询的选项有两个子集:软件包选择和信息选择。
path size mtime md5sum mode owner group isconfig isdoc rdev symlink
这个选项必须与至少下列之一联合使用 -l, -c, -d.
校验命令的一般形式是
rpm {-V|--verify} [select-options] [verify-options]
校验软件包,是将已安装的文件的信息,与从软件包中获取的保存在 rpm 数据库中的有关文件的元数据进行比较。校验比较的内容有每个文件的大小,MD5 校验和,许可,类型,属主。任何不对的地方都回显示出来。如果软件包中文件未安装,例如在安装过程中使用 "--excludedocs" 选项跳过的文档,将被跳过。
软件包选择选项与软件包查询是相同的 (包括以说明文件作为参数)。其他独有的选项包括:
输出是 8 个字符的字符串,可能的属性标记为:
c %config 配置文件 d %doc 文档 g %ghost 占位文档 (就是说,文件内容不包含在软件包有效内容里面) l %license 许可文件 r %readme 说明文件
从头部开始,接下来是文件名,每 8 个字符表示将文件属性与数据库中记录的值进行一次比较的结果。一个单独的 "." (句点) 表示测试通过了,而一个单独的 "?" (问号) 表示测试可能无法进行 (例如,文件许可禁止了读权限)。最后,加重的字母表示相应的 --verify 测试失败了。
S file Size 大小不一致 M Mode 模式不一致 (包括许可和文件类型) 5 MD5 sum 校验和不一致 D Device 主从设备号不匹配 L readLink(2) 路径不匹配 U User 属主不一致 G Group 组属主不一致 T mTime 时间不一致
数字签名命令的一般形式是
rpm --import PUBKEY ...
rpm {--checksig} [--nosignature] [--nodigest]
PACKAGE_FILE ...
选项 --checksig 用来检测 PACKAGE_FILE 中所有的签名和摘要,保证打包的完整性和来源。注意在读取打包时总会检测签名,而 --checksig 在校验与某个打包关联的所有签名和摘要时有用。
没有公钥就无法校验数字签名。可以用 --import 来向 rpm 数据库添加 ASCII 文本化的公钥。每个导入的公钥都有一个头部,钥匙环的管理与软件包管理完全类似。例如,要显示所有已导入的公钥,使用:
rpm -qa gpg-pubkey*
已导入的公钥的细节,可以查询并显示。下面是有关 Redhat GPG/DSA 公钥的信息:
rpm -qi gpg-pubkey-db42a60e
最后,已导入的公钥可以像软件包一样被删除。下面是如何卸载 Redhat GPG/DSA 公钥:
rpm -e gpg-pubkey-db42a60e
rpm --addsign|--resign PACKAGE_FILE ...
选项 --addsign 与 --resign 都可以为每个软件包 PACKAGE_FILE 生成并插入新的签名,替换任何已有的签名。存在两个选项,是由于历史的原因,现在它们的行为没有区别。
为使用 GPG 来签署软件包,必须配置 rpm 运行 GPG,并且要能找到包含合适密钥的钥匙环。默认情况下,rpm 使用与 GPG 相同的约定来查找钥匙环,也就是 $GNUPGHOME 环境变量。如果你的钥匙环不在 GPG 要求的位置,就必须配置宏 %_gpg_path 为要使用的 GPG 钥匙环的位置。
为了与老版本的 GPG, PGP 和 rpm 兼容,只应配置 V3 OpenPGP 签名的打包。可以使用 DSA 或者 RSA 校验算法,但是推荐用 DSA。
如果想签署自己创建的打包,还需要创建自己的公钥和私钥对 (参见 GPG 手册)。还需要配置 rpm 宏:
例如,要使用 GPG 来签署打包,用户是 "John Doe <jdoe@foo.com>", 钥匙环位置在 /etc/rpm/.gpg, 使用可执行文件 /usr/bin/gpg,可以将这一段
%_signature gpg %_gpg_path /etc/rpm/.gpg %_gpg_name John Doe <jdoe@foo.com> %_gpgbin /usr/bin/gpg
包含在宏配置文件中。对于系统范围的设置,使用 /etc/rpm/macros,对于个人设置,使用 ~/.rpmmacros。
重建数据库的命令的一般形式是
rpm {--initdb|--rebuilddb} [-v] [--dbpath DIRECTORY] [--root DIRECTORY]
使用 --initdb 来创建新的数据库,使用 --rebuilddb 来重建数据库索引,根据已安装的软件包头部。
命令
rpm --showrc
将显示 rpm 使用的,在 rpmrc 和 macros 配置文件中定义的选项的值。
rpm 可以作为一个 FTP 和/或 HTTP 客户端,可以查询或安装互联网上的软件包包。要安装、升级和查询的软件包文件可以以 ftp 或 http 样式的 URL 指定:
ftp://USER:PASSWORD@HOST:PORT/path/to/package.rpm
如果忽略了 :PASSWORD 选项,将提示密码,每个用户名/主机组合提示一次。如果忽略了用户名和密码,将使用匿名 ftp。在所有情况下,都会使用被动 ftp (PSAV)。
rpm 允许在使用 ftp URL 时使用下面的选项:
rpm 允许在使用 http URL 时使用下面的选项:
rpm 的构建模式,现在由 /usr/bin/rpmbuild 命令完成。尽管使用下面的 popt 别名提供的兼容性已经够用,但是不够完美;因此通过 popt 别名提供的构建兼容性将从 rpm 中移除。安装 rpmbuild 软件包,参见 rpmbuild(8) 中,有关过去记录在 rpm(8) 中的,rpm 构建模式的文档。
将下面的这些添加到 /etc/popt 中,如果想使用 rpm 命令行运行 rpmbuild的话:
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 --short-circuit rpmb --short-circuit
/usr/lib/rpm/rpmrc /usr/lib/rpm/redhat/rpmrc /etc/rpmrc ~/.rpmrc
/usr/lib/rpm/macros /usr/lib/rpm/redhat/macros /etc/rpm/macros ~/.rpmmacros
/var/lib/rpm/Basenames /var/lib/rpm/Conflictname /var/lib/rpm/Dirnames /var/lib/rpm/Filemd5s /var/lib/rpm/Group /var/lib/rpm/Installtid /var/lib/rpm/Name /var/lib/rpm/Packages /var/lib/rpm/Providename /var/lib/rpm/Provideversion /var/lib/rpm/Pubkeys /var/lib/rpm/Removed /var/lib/rpm/Requirename /var/lib/rpm/Requireversion /var/lib/rpm/Sha1header /var/lib/rpm/Sigmd5 /var/lib/rpm/Triggername
/var/tmp/rpm*
popt(3), rpm2cpio(8), rpmbuild(8),
http://www.rpm.org/ <URL:http://www.rpm.org/>
Marc Ewing <marc@redhat.com> Jeff Johnson <jbj@redhat.com> Erik Troan <ewt@redhat.com>