other languages
rpm(8) | Red Hat Linux | rpm(8) |
NAME¶
rpm - Red Hat 包管理器总览¶
rpm [选项]描述¶
rpm是一个很有用的包管理器, 可以用于生成, 安装, 查询, 核实, 更新以及卸载单个软件包. 一个 包通常包括一个文件档以及关于包 的信息, 比如名字, 版本, 描述等. 必须选取下列基本模式中一个: 初始化数据库, 重新生成数据库, 生成包, 重新编译包, 从Tar包生成RPM包, 查询, 显示查询标签, 安装, 更新, 卸载, 核实, 签名检查, 再签名, 添加签名, 设置所有者和组 以及 显示配置. 数据库维护:普通选项¶
这些选项可以各种不同的方式使用.- -vv
- 将打印出许多难以阅读的调试信息.
- --quiet
- 打印尽可能少的信息 - 普通只展示错误信息.
- --help
- 给出比常规更多的用法信息.
- --version
- 在单独一个行里给出所用 rpm 的版本号
- --rcfile <filelist>
- 在<filelist>里列出了一些文件, 各文件之间以冒号分隔, rpm 顺序读取这些文件以获得配置信息. <filelist>缺省 是 /usr/lib/rpm/rpmrc:/etc/rpmrc:~/.rpmrc. 列表中的第一个文件(/usr/lib/rpm/rpmrc)且只有这个文件 必须存在, 代字符~指向 $HOME的值.
- --root <dir>
- 对所有操作均将<dir>视为系统根目录. 注意这意味着对数 据库的读或修改操作都将是在 <dir>目录下进行, 并且脚本 的 pre或post操作都是在做了以 <dir>为根目录的chroot() 之后进行.
- --dbpath <path>
- 依照<path>使用RPM的数据库.
- --justdb
- 更新只针对数据库,而不是整个文件系统.
- --ftpproxy <host>, --httpproxy <host>
- 设<host>为FTP或HTTP的代理服务器. 参阅 FTP/HTTP 选项.
- --ftpport <port>, --httpport <port>
- 设<port>为FTP或HTTP的代理服务器的端口. 参阅 FTP/HTTP 选项.
- --pipe <cmd>
- 通过管道将rpm的输出输入到命令<cmd>.
安装和升级选项¶
通常的rpm安装命令如下: rpm -i [install-options] <package_file>+ 这样将安装一个新的包. 通常的rpm升级命令如下: rpm -U [install-options] <package_file>+ 这样将当前已安装的包升级或新安装到一个新的RPM版本. 升级和 安装是一样的, 区别在于升级要将所有别的版本的包从系统移去. rpm [-F|--freshen] [install-options] <package_file>+ 这样也升级包, 但只有在系统存在一个更早版本的包时候才使用这 种方式. 如果包在安装之前要先进行下载, <package_file>应该指明为一个 ftp或者http URL. 要得到关于RPM包生成的ftp和http支持的信息, 可以参阅 FTP/HTTP 选项.- --force
- 与使用--replacepkgs, --replacefiles, 以及 --oldpackage效果相同
- -h, --hash
- 包档如果没有被解包, 打印50个破折号. 配合 -v使用可以 使得有更好的展示.
- --oldpackage
- 允许用旧版本的包取代较新的版本.
- --percent
- 给出文件从包档解包的百分比. 该项的作用是为了使rpm相 比于别的工具更容易使用.
- --replacefiles
- 即使要安装的包会取代别的已安装包的文件, 也安装该包.
- --replacepkgs
- 即使包的部分内容已安装在系统里,也安装该包.
- --allfiles
- 安装或升级包里所有的缺失文件,不管其是否存在.
- --nodeps
- 在安装或升级包之前不做依赖检查.
- --noscripts
- 不执行安装前或安装后脚本
- --notriggers
- 不执行由该包的安装所激发的脚本
- --ignoresize
- 安装该包前不检查mount文件系统是否有足够的磁盘空间.
- --excludepath <path>
- 不安装文件名以路径<path>开头的文件.
- --excludedocs
- 不安装任何标记为文档的文件(包括手册页及文本信息档案).
- --includedocs
- 安装文档文件, 这是缺省的操作.
- --test
- 不安装包, 只是简单地检查并报告可能的冲突.
- --ignorearch
- 允许安装或升级其体系与主机不匹配的二进制RPM包.
- --ignoreos
- 允许安装或升级其操作系统与主机不匹配的二进制RPM包.
- --prefix <path>
- 对于可浮动包, 这将把安装前缀设置到 <path>.
- --relocate <oldpath>=<newpath>
- 将文件从<oldpath>改置到<newpath>, 这使得可以浮动包.
- --badreloc
- 与--relocate配合使用, 强制改置不可浮动的包.
- --noorder
- 安装时对包不重新排序, 正常在安装时应该重新排序包列 表, 以满足依赖性.
查询选项¶
rpm的查询命令通常的格式如下: rpm -q [query-options] 可以制定包信息的打印格式, 这时要用 [--queryformat|-qf]选项, 格式串跟在选项后面. 查询格式由标准 printf(3)格式的版本决定. 格式由静态字符串 (包括除了换行符, tab, 以及其它的特殊字符之外的标准C字符), 以及 printf(3)类型格式符. 如果 rpm已经知道打印类型, 则类型说明就必须被忽略, 并且以要打印的头部tag的名字取代, 该名字被括在 {}之间. 而且tag的 RPMTAG_部分也被忽略. 可以用 :typetag来改变输出格式.当前支持的有如下类型: octal, date, shescape, perms, fflags, 以及 depflags. 例如,要只打印被查询包的名字,可以用 %{名称}作为格式字符串. 要在两个栏里打印包名及分布信息,可以用 %-30{名称}%{分布}. 当被 --querytags参数激发时,rpm将列出所有tags. 查询选项有两种子设置: 包选择和信息选择. 包选择选项:- <package_name>
- 查询名为<package_name>的安装包.
- -a, --all
- 查询所有安装的包.
- --whatrequires <capability>
- 查询所有需要<capability>才能提供适当功能的包.
- --whatprovides <virtual>
- 查询所有提供<virtual>功能的包.
- -f <file>, --file <file>
- 查询拥有文件<file>的包.
- -g <group>, --group <group>
- 查询属于???组<group>的包
- -p <package_file>
- 查询一个没有安装的包<package_file>. <package_file>可以被说明为ftp或http URL,这时包头会被下载并被查询. 要得到关于RPM生成的ftp和http客户端支持的信息,请参阅 FTP/HTTP OPTIONS
- --specfile <specfile>
- 像对待一个包一样Parse并查询<specfile>. 虽然不是所有的信息(例如文件列表)可用,这种查询类型 允许rpm在不用写一个specfile parser的情况下从spec files提取信息.
- --querybynumber <num>
- 直接查询<num>数据库入口,该选项在调试时很有用处.
- --triggeredby <pkg>
- 查询由包<pkg>所激发的包.
- -i
- 展示包信息,包括名字,版本,以及描述.???
- -R, --requires
- 列出该包所依赖的别的包.
- --provides
- 列出该包所提供的功能.
- --changelog
- 展示该包的变更信息.
- -l, --list
- 列出该包的文件.
- -s, --state
- 展示该包各文件的状态信息,因此该选项实际隐含了-l选项. 文件状态可以是如下之一: normal, not installed, 或者 replaced.
- -d, --docfiles
- 只列出文档文件(隐含-l选项).
- -c, --configfiles
- 只列出配置文件(隐含-l选项).
- --scripts
- 如果有的话,就列出该包里作为安装或卸载过程一部分的特殊shell脚本.
- --triggers, --triggerscripts
- 如果有的话,展示该包包含的激发子脚本.
- --dump
- 如下的哑文件信息: path size mtime md5sum mode owner group isconfig isdoc rdev symlink. 该选项必须至少配合如下选项之一: -l, -c, -d使用.
- --last
- 按包的安装时间进行排序,这使得最新的包在序列顶部.
- --querybypkg
- 列出每个包里的所有文件.
- --triggerscripts
- 显示所选包的所有激发子脚本.
核实选项¶
rpm -V|-y|--verify [verify-options] 将所安装包的文件信息和源发包的文件信息以及在rpm数据库的文件信息做比较, 以此来核实包. 对于别的东西,则??? 任何的差异都会展示.包的说明选项与查询选项相同. 对于不是从包安装的文件,例如在安装的时候用" --excludedocs" 选项排除了的文档文件,将在没有提示的情况下被忽略掉. 核实选项可以使用如下模式:- --nofiles
- 核实时忽略缺失文件
- --nomd5
- 核实时忽略MD5校验错误
- --nopgp
- 核实时忽略PGP校验错误
- --nofiles
- 核实时忽略缺失文件 输出的格式是一个八个字符的字符串,和一个可能有的" c", 指明后面是一个配置文件,以及后面的文件名. 八个字符中的每一个都代表着一个文件属性与保存在RPM的数据库中的属性纪录值的比较结果. 单个的" ."(句号)表明检查通过.下列字符代表特定检查的失败:
- 5
- MD5校验和
- S
- 文件大小
- L
- 符号连接
- T
- 修改时间
- D
- 设备
- U
- 用户
- G
- 组
- M
- 模式(包括许可和文件类型)
签名检查¶
通常的rpm签名检查命令如下: rpm --checksig <package_file>+ 这将检查包 <package_file>的PGP签名以确保其完整性和源发性. 可以从配置文件读取PGP配置信息.细节请查阅 PGP 签名 部分.卸载选项¶
rpm卸载命令的通常格式如下: rpm -e <package_name>+- --allmatches
- 将移去与<package_name>相匹配的所有版本的包.正常的话,如果<package_name>与多个包相匹配,就会给出错误信息.
- --noscripts
- 不执行安装前或安装后脚本.
- --notriggers
- 不执行由移去该包所激发的脚本
- --nodeps
- 卸载前不检查依赖性
- --test
- 不真正卸载任何东西,只是遍历该动作.配合-vv选项会很有用处.
生成选项¶
The general form of an rpm build command isrpm -[b|t]O [build-options] <package_spec>+ The argument used is -b if a spec file is being used to build the package and -t if RPM should look inside of a gzipped (or compressed) tar file for the spec file to use. After the first argument, the next argument ( O) specifies the stages of building and packaging to be done and is one of: rpm通常的生成选项如下:
rpm -[b|t]O [build-options] <package_spec>+
- -bp
- Executes the "%prep" stage from the spec file. Normally this involves unpacking the sources and applying any patches.
- -bl
- Do a "list check". The "%files" section from the spec file is macro expanded, and checks are made to verify that each file exists.
- -bc
- Do the "%build" stage from the spec file (after doing the prep stage). This generally involves the equivalent of a "make".
- -bi
- Do the "%install" stage from the spec file (after doing the prep and build stages). This generally involves the equivalent of a "make install".
- -bb
- 生成一个二进制包(在完成prep, build, 以及 install阶段之后)
- -bs
- 只生成源包(在完成prep, build, 以及 install阶段之后)
- -ba
- 生成二进制包和源包(在完成prep, build, 以及 install阶段之后)
- --short-circuit
- 忽略导致specified阶段(比如,忽略所有导致specified阶段的阶段). 只有与 -bc 以及 -bi合用才有效.
- --timecheck
- 设置"timecheck"的值(0-?).该值也可以通过定义宏"_timecheck"来配置. timecheck值以秒为单位,表示一个包生成的最大年龄.如果时间超过了该值, 则对所有文件皆给出警告信息.
- --clean
- 在包完成之后,移去生成树.
- --rmsource
- 在完成包的生成之后移去源和spec文件 (也可以单独使用,比如:" rpm --rmsource foo.spec").
- --test
- 不执行任何生成阶段.在测试spec文件时很有用处.
- --sign
- 在包中嵌入一个PGP签名.该签名可以用来核实该包的完整性和源发性. 配置细节可以察看 PGP 签名 一节.
- --buildroot <dir>
- 在生成包的时候,用目录<dir>覆盖包的生成根目录tag.
- --target <platform>
- 在生成包的时候,将<platform>解释为arch-vendor-os,并且相应地设置 宏 _target, _target_arch 以及 _target_os.
- --buildarch <arch>
- 在生成包的时候,将architecture设置到<arch>. 该选项在RPM 3.0中由于 --target 的出现而被抛弃.
- --buildos <os>
- 在生成包的时候,将architecture设置到<os>. 该选项在RPM 3.0中由于 --target 的出现而被抛弃.
重新生成以及重新编译选项¶
There are two other ways to invoke building with rpm: 有两种不同的方法用rpm重新生成包: rpm --recompile <source_package_file>+ rpm --rebuild <source_package_file>+ 当以这种方式激发的时候, rpm安装指明的源包,并且完成prep,compile,install工作. 另外, --rebuild生成一个新的二进制包. 当包的生成完成的时候,生成所用目录被移去(就如同使用了 --clean), 而且该包的源和spec文件也要移走.签名一个已存在的RPM¶
rpm --resign <binary_package_file>+ 该选项生成并将新签名插入所列出的包里.已存在的签名会被移走. rpm --addsign <binary_package_file>+ 该选项生成并将新签名附加到所列出的包的签名之后.PGP 签名¶
要使用签名特性,RPM必须要能够运行PGP(要安装了PGP并且你可以访问它), 而且还需PGP能找到一个带有RPM公钥的公钥环. 缺省情况下,RPM使用PGP的缺省设置(著名的PGPPATH)来查找钥环. 如果你的钥环并不在PGP所期望它们处在的地方,则你需要配置宏- _pgp_path
- 将其设为要使用的PGP钥环所在的位置.
- _signature
- 目前只支持pgp.还有用户名宏:
- _pgp_name
- 指明想要使用其键去签名你的包的用户. 在生成包的时候,可以将--sign加到命令行里.这样只需给出你的口令短语, 就可以在生成包的同时对其签名. 比如,要想以用户"John Doe <jdoe@foo.com>"的身份,用在 /etc/rpm/.pgp的钥环,去签名一个包,就应该将
- %_signature
- pgp
- %_pgp_name
- /etc/rpm/.pgp
- %_pgp_name
- John Doe <jdoe@foo.com>"
重新生成数据库选项¶
rpm重建数据库的命令是 rpm --rebuilddb 要重建一个新的数据库,可以: rpm --initdb 对这些模式唯一的选项是 --dbpath 和 --root.SHOWRC¶
运行 rpm --showrc 展示一些设置在 rpmrc文件里的值,RPM所有选项都会利用这些值.FTP/HTTP选项¶
RPM包括简单的FTP和HTTP客户端程序,这样可以简化那些从internet取得的包的安装和查询. 用于安装,升级,以及查询操作的包文件可以说明为ftp或者http格式的URL: ftp://<user>:<password>@hostname:<port>/path/to/package.rpm 如果忽略掉 :password部分,会提示要求给出口令(每个用户/主机名对一次) 如果用户名和口令都忽略了,就使用匿名ftp. 总是使用消极(PASV) ftp传送. RPM允许使用下列操作辅助ftp URLs- --ftpproxy <hostname>
- 主机<hostname>将被作为所有ftp传输的代理服务器使用, 这样允许用户通过使用了代理系统的防火墙机器来做ftp传输. 该选项也可以通过配置宏 _ftpproxy来指明.
- --ftpport <port>
- 用该TCP<端口>号取代缺省的端口去连接代理ftp服务器. 该选项也可以通过配置宏 _ftpport来指明.
- --httpproxy <hostname>
- 将主机<主机名>作为所有http传输的代理服务器使用. 该选项可以通过配置宏 _httpproxy来指明.
- --httpport <port>
- 用该TCP<端口>号取代缺省的端口去连接代理http服务器. 该选项也可以通过配置宏 _httpport来指明.
文件¶
/usr/lib/rpm/rpmrc /etc/rpmrc ~/.rpmrc /var/lib/rpm/packages /var/lib/rpm/pathidx /var/lib/rpm/nameidx /tmp/rpm*
另见¶
glint(8), rpm2cpio(8) http://www.rpm.org/作者¶
Marc Ewing <marc@redhat.com> Jeff Johnson <jbj@redhat.com> Erik Troan <ewt@redhat.com>
[中文版维护人]¶
mapping <email>[中文版最新更新]¶
2001/7/21《Linuxfourm 中文MAN-PAGE计划》¶
http://cmpp.linuxforum.net1998年12月22日 | Red Hat Software |