zoukankan      html  css  js  c++  java
  • rpm

    SYNOPSIS

    查询和校验软件包:

    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]

    DESCRIPTION

    rpm 是一个强大的 软件包管理器,可以用来构建,安装,查询,校验,升级和卸载单独的软件打包。一个 打包 包括文件的归档,以及用来安装和卸载归档文件的元信息。元信息包括辅助脚本,文件属性以及打包的描述性信息。打包 有两种,二进制打包,用来封装要安装的软件;源代码打包,包含源代码以及为生成二进制打包,必要的文件。

    必须选择下列模式之一: Query 查询, Verify 校验, Signature Check 检查签名, Install/Upgrade/Freshen 安装/升级/更新, Uninstall 卸载, Initialize Database 初始化数据库, Rebuild Database 重构数据库, Resign 重签名, Add Signature 添加签名, Set Owners/Groups 设置属主, Show Querytags 显示查询标记, 以及 Show Configuration 显示配置.

    一般选项

    这些选项可以用在所有不同的模式中。

    -?, --help
    输出更长的帮助信息。
    --version
    输出一行信息,包括使用的 rpm 的版本号。
    --quiet
    输出尽可能少的信息 - 通常只有错误会显示。
    -v
    输出冗余信息 - 通常,常规的进度信息将显示。
    -vv
    输出大量丑陋的调试信息。
    --rcfile FILELIST
    FILELIST 中冒号分隔的每个文件名都被 rpm 按顺序读取,从中获得配置信息。只有列表的第一个文件必须存在,波浪线将被替换为 $HOME。默认的 FILELIST/usr/lib/rpm/rpmrc:/usr/lib/rpm/redhat/rpmrc:/etc/rpmrc:~/.rpmrc
    --pipe CMD
    rpm 的输出通过管道送到命令 CMD
    --dbpath DIRECTORY
    使用 DIRECTORY 中的数据库,而不是默认的路径 /var/lib/rpm
    --root DIRECTORY
    DIRECTORY 作为根文件系统,进行所有操作。这意味着将使用 DIRECTORY 中的数据库来进行依赖性检测,任何小程序 (也就是安装中的 %post 和构建中的 %prep) 都将在一个 chroot(2) 到 DIRECTORY 之后执行。

    安装和升级选项

    安装命令的一般形式是

    rpm {-i|--install} [install-options] PACKAGE_FILE ...

    这样安装了一个新软件包。

    升级命令的一般形式是

    rpm {-U|--upgrade} [install-options] PACKAGE_FILE ...

    这样安装或升级已安装的软件包到新版本。它与安装类似,只是所有其他版本的打包在新软件包安装后都将移除。

    rpm {-F|--freshen} [install-options] PACKAGE_FILE ...

    仅当系统中存在更早的版本时,这样会升级软件包。PACKAGE_FILE 必须指定为 ftphttp URL,这样软件包可以在安装之前去下载。参见 FTP/HTTP OPTIONS 中有关 rpm 的内嵌 ftphttp 客户端支持。

    --aid
    需要时将建议的软件包加入事务集。
    --allfiles
    安装或升级软件包中所有 missingok 文件,哪怕它们已经存在。
    --badreloc
    --relocate 搭配使用,允许所有文件的重定位,而不仅仅是在二进制打包中,重定位提示包含的那些 OLDPATH
    --excludepath OLDPATH
    不安装名称以 OLDPATH 开始的文件。
    --excludedocs
    不安装任何标记为文档的文件 (包括手册页和 texinfo)。
    --force
    与使用 --replacepkgs, --replacefiles, 以及 --oldpackage 相同。
    -h, --hash
    在打包被解压时,输出 50 个 hash 符号 (#),用来与 -v|--verbose 配合,得到漂亮一点的输出。
    --ignoresize
    安装前不检测已挂载文件系统的空闲空间。
    --ignorearch
    允许安装或升级,即使二进制打包的体系结构与主机不匹配。
    --ignoreos
    允许安装或升级,即使二进制打包的操作系统与主机不匹配。
    --includedocs
    安装文档文件。这是默认的行为。
    --justdb
    只更新数据库,不更新文件系统。
    --nodigest
    读取时不校验打包或头部校验。
    --nosignature
    读取时不校验打包或头部签名。
    --nodeps
    在安装或升级前,不进行依赖性检测。
    --nosuggest
    不建议提供了所需依赖关系的软件包。
    --noorder
    不为安装重排序。通常软件包列表会被重排序,以满足依赖性关系。
    --noscripts
    --nopre
    --nopost
    --nopreun
    --nopostun
    不执行对应的小程序。--noscripts 选项与

    --nopre --nopost --nopreun --nopostun

    等价,将 %pre, %post, %preun, 和 %postun 小程序全部关闭。

    --notriggers
    --notriggerin
    --notriggerun
    --notriggerpostun
    不执行任何对应的触发小程序。--notriggers 选项与

    --notriggerin --notriggerun --notriggerpostun

    等价,将 %triggerin, %triggerun, 和 %triggerpostun 小程序全部关闭。

    --oldpackage
    允许用旧软件包替换一个新软件包。
    --percent
    打印从软件包中解压文件的百分比。这是为了使 rpm 在其他工具中运行时简单一些。
    --prefix NEWPATH
    对于可重定位的包,将以软件包重定位提示的安装前缀开始的所有文件路径转换为以 NEWPATH 开始。
    --relocate OLDPATH=NEWPATH
    对于克重定位的二进制打包,将软件包重定位提示中,以 OLDPATH 开始的文件路径转换为以 NEWPATH 开始。这一选项可以使用多次,如果软件包中多个 OLDPATH 要重定位的话。
    --repackage
    在卸载前重新打包文件。过去安装的打包将根据宏 %_repackage_name_fmt 命名,将创建于宏 %_repackage_dir 指定的目录中 (默认值是 /var/spool/repackage)。
    --replacefiles
    安装软件包,即使他们替换了其他已安装的软件包的文件。
    --replacepkgs
    安装软件包,即使其中有些软件包已经被安装到了系统中。
    --test
    不安装软件包,仅仅检测并报告可能的冲突。

    卸载选项

    卸载命令的一般形式是

    rpm {-e|--erase} [--allmatches] [--nodeps] [--noscripts] [--notriggers] [--repackage] [--test] PACKAGE_NAME ...

    同时还可以用下列选项:

    --allmatches
    删除匹配 PACKAGE_NAME 的软件包的所有版本。通常情况下,如果 PACKAGE_NAME 匹配多个软件包将导致错误。
    --nodeps
    在卸载前不检测依赖关系。
    --noscripts
    --nopreun
    --nopostun
    不执行相应的小程序。--noscripts 选项在卸载过程中等价于

    --nopreun --nopostun

    %preun, 和 %postun 小程序的执行关闭。

    --notriggers
    --notriggerun
    --notriggerpostun
    不执行相应的触发小程序。--notriggers 选项等价于

    --notriggerun --notriggerpostun

    %triggerun, 和 %triggerpostun 小程序的执行关闭。

    --repackage
    卸载前重新打包文件。过去安装的软件包将根据宏 %_repackage_name_fmt 命名,存放到宏 %_repackage_dir 定义的目录中 (默认值是 /var/spool/repackage)。
    --test
    不真正卸载任何东西,仅仅尝试它们。与 -vv 选项联合使用,在调试时很有用。

    查询选项

    查询命令的一般形式是

    rpm {-q|--query} [select-options] [query-options]

    可以指定输出时软件包信息的格式。为此,使用选项


    --qf|--queryformat QUERYFMT

    附带 QUERYFMT 格式化字符串。查询命令是标准的 printf(3) 格式的修改版本。格式包括静态字符串 (可能包括标准的 C 转义字符,新行符,跳格以及其他特殊字符) 以及 printf(3) 类型标记。由于 rpm 已知输出类型,因此应当忽略类型标记,使用头部字段名来代替,包含在 {} 中。字段名是大小写不敏感的,起始的 RPMTAG_ 部分可以被忽略。

    可选的输出格式是用 :typetag 表示。当前,支持的类型有:

    :armor

    将公钥以 ASCII 包装。

    :base64
    以 base64 编码二进制数据。
    :date
    使用 strftime(3) "%c" 格式。
    :day
    使用 strftime(3) "%a %b %d %Y" 格式。
    :depflags
    格式化依赖性标志。
    :fflags
    格式化文件标志。
    :hex
    以十六进制格式化。
    :octal
    以八进制格式化。
    :perms
    格式化文件权限。
    :shescape
    转义单引号,用于脚本。
    :triggertype
    显示触发的后缀。

    例如,要只输出所查询的软件包的名称,可以使用 %{NAME} 作为格式化字符串。要分两列输出软件包名称和发行版信息,可以用 %-30{NAME}%{DISTRIBUTION}。如果执行时使用 --querytags 参数,rpm 将输出它已知的所有标记列表。

    查询的选项有两个子集:软件包选择和信息选择。

    软件包选择选项:

    PACKAGE_NAME
    查询名称为 PACKAGE_NAME 的已安装软件包。
    -a, --all
    查询所有已安装软件包。
    -f, --file FILE
    查询包含 FILE 的软件包。
    --fileid MD5
    查询包含给定文件描述字的软件包,例如,文件内容的 MD5 校验和。
    -g, --group GROUP
    查询属主为 GROUP 的软件包。
    --hdrid SHA1
    查询包含给定头部描述字的软件包,例如,不可变头部区域的 SHA1 校验和。
    -p, --package PACKAGE_FILE
    查询 (未安装的) 软件包 PACKAGE_FILE。这个文件可以指定为一个 ftphttp 样式的 URL,这时软件包头部将被下载并查询。参见 FTP/HTTP OPTIONS 中有关 rpm 的内部 ftphttp 客户端支持信息。参数 PACKAGE_FILE 如果不是一个二进制文件,将被解释为一个 ASCII 软件包说明。其中可以有以 '#' 开始的注释,其他的每行都可以包含以空格分隔的匹配表达式,如果是远程的地址,也包括 URL。这些将被扩展为路径,替换 manifest 参数的位置,作为 PACKAGE_FILE 参数的附加查询内容。
    --pkgid MD5
    查询含有给定软件包描述字的软件包,例如,包的头部以及有效内容的 MD5 校验和。
    --querybynumber HDRNUM
    直接查询第 HDRNUM 个数据库入口;这只在调试时有用。
    --specfile SPECFILE
    解释并查询 SPECFILE,就好像它是一个软件包。尽管并非所有信息都可获得,但这种查询允许 rpm 从 spec 文件中抽取信息,而不必写一个解释器。
    --tid TID
    查询包含给定 TID 事务描述字的软件包。当前使用 unix 时间戳作为事务描述字。任何在一次事务中安装或卸载的软件包拥有相同的描述字。
    --triggeredby PACKAGE_NAME
    查询被软件包 PACKAGE_NAME 触发的软件包。
    --whatprovides CAPABILITY
    查询提供了 CAPABILITY 能力的软件包。
    --whatrequires CAPABILITY
    查询所有需要 CAPABILITY 才能运作的软件包。

    软件包查询选项:

    --changelog
    显示软件包的修改信息。
    -c, --configfiles
    只显示配置文件 (暗含了 -l).
    -d, --docfiles
    只显示文档文件 (暗含了 -l).
    --dump
    转储文件信息:
    path size mtime md5sum mode owner group isconfig isdoc rdev symlink
            
    

    这个选项必须与至少下列之一联合使用 -l, -c, -d.

    --filesbypkg
    列出所选每个软件包中的文件。
    -i, --info
    显示软件包信息,包括名称,版本,描述。如果指定了 --queryformat 就使用它。
    --last
    列出软件包时,以安装时间排序,最新的在上面。
    -l, --list
    列出软件包中的文件。
    --provides
    列出软件包提供的特性。
    -R, --requires
    列出软件包依赖的其他软件包。
    --scripts
    列出软件包自定义的小程序,他们是安装和卸载等等过程的一部分。
    -s, --state
    显示软件包中文件的状态 states (暗含了 -l)。每个文件的状态是 normal, not installed, 或 replaced 其中之一。
    --triggers, --triggerscripts
    显示软件包中包含的触发脚本,如果有的话。

    校验选项

    校验命令的一般形式是

    rpm {-V|--verify} [select-options] [verify-options]

    校验软件包,是将已安装的文件的信息,与从软件包中获取的保存在 rpm 数据库中的有关文件的元数据进行比较。校验比较的内容有每个文件的大小,MD5 校验和,许可,类型,属主。任何不对的地方都回显示出来。如果软件包中文件未安装,例如在安装过程中使用 "--excludedocs" 选项跳过的文档,将被跳过。

    软件包选择选项与软件包查询是相同的 (包括以说明文件作为参数)。其他独有的选项包括:

    --nodeps
    不校验软件包的依赖关系。
    --nodigest
    读取时不校验软件包或头部校验。
    --nofiles
    不校验文件的任何属性。
    --noscripts
    不执行 %verifyscript 小程序,如果有的话。
    --nosignature
    读取时不校验软件包或头部签名。
    --nolinkto
    --nomd5
    --nosize
    --nouser
    --nogroup
    --nomtime
    --nomode
    --nordev
    不校验相应的文件属性。

    输出是 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 来签署软件包

    为使用 GPG 来签署软件包,必须配置 rpm 运行 GPG,并且要能找到包含合适密钥的钥匙环。默认情况下,rpm 使用与 GPG 相同的约定来查找钥匙环,也就是 $GNUPGHOME 环境变量。如果你的钥匙环不在 GPG 要求的位置,就必须配置宏 %_gpg_path 为要使用的 GPG 钥匙环的位置。

    为了与老版本的 GPG, PGP 和 rpm 兼容,只应配置 V3 OpenPGP 签名的打包。可以使用 DSA 或者 RSA 校验算法,但是推荐用 DSA。

    如果想签署自己创建的打包,还需要创建自己的公钥和私钥对 (参见 GPG 手册)。还需要配置 rpm 宏:

    %_signature
    签名类型。当前只支持 gpg 和 pgp。
    %_gpg_name
    用来签署打包的密钥的所有者 "用户" 的名称

    例如,要使用 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 使用的,在 rpmrcmacros 配置文件中定义的选项的值。

    FTP/HTTP 选项

    rpm 可以作为一个 FTP 和/或 HTTP 客户端,可以查询或安装互联网上的软件包包。要安装、升级和查询的软件包文件可以以 ftphttp 样式的 URL 指定:

    ftp://USER:PASSWORD@HOST:PORT/path/to/package.rpm

    如果忽略了 :PASSWORD 选项,将提示密码,每个用户名/主机组合提示一次。如果忽略了用户名和密码,将使用匿名 ftp。在所有情况下,都会使用被动 ftp (PSAV)。

    rpm 允许在使用 ftp URL 时使用下面的选项:

    --ftpproxy HOST
    使用主机 HOST 作为所有 ftp 传输的代理服务器,允许用户通过代理系统防火墙访问 ftp。这个选项也可以用宏 %_ftpproxy 指定。
    --ftpport PORT
    连接到 ftp 代理服务器的 TCP PORT 端口,而不是默认的端口。这个选项也可以用宏 %_ftpport 指定。

    rpm 允许在使用 http URL 时使用下面的选项:

    --httpproxy HOST
    使用主机 HOST 作为所有 http 传输的代理服务器,允许用户通过代理系统防火墙访问 http。这个选项也可以用宏 %_httpproxy 指定。
    --httpport PORT
    连接到 http 代理服务器的 TCP PORT 端口,而不是默认的端口。这个选项也可以用宏 %_httpport 指定。

    LEGACY ISSUES

    执行 rpmbuild

    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
    

    FILES

    rpmrc 配置文件

    /usr/lib/rpm/rpmrc
    /usr/lib/rpm/redhat/rpmrc
    /etc/rpmrc
    ~/.rpmrc
    

    Macro 宏定义文件

    /usr/lib/rpm/macros
    /usr/lib/rpm/redhat/macros
    /etc/rpm/macros
    ~/.rpmmacros
    

    Database 数据库

    /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
    

    Temporary 临时文件

    /var/tmp/rpm*

  • 相关阅读:
    计算机组成原理
    爬取斗图
    视频爬取
    经典段子爬取
    爬取哈哈笑话
    爬取昵图网
    爬取校花网
    python操作docker
    正则表达式
    UUID
  • 原文地址:https://www.cnblogs.com/fanweisheng/p/11098044.html
Copyright © 2011-2022 走看看