rpm命令是原始命令之一Linux软件包管理器。RPM甚至代表Redhat包管理器。与更高级的包管理器不同,如DNF,RPM很简单,需要更多的手动干预。也就是说,它仍然是一个能干的包管理解决方案,它是Redhat系列Linux发行版的出色备份。
使用RPM
最常见的是,当您有想要安装的本地下载的.rpm包时,您将遇到使用RPM而不是DNF的情况。授予,DNF可以处理这个,但如果出于一个原因或另一个,它不可用,您可以依赖RPM。这看起来像这样:
Sudo RPM -i /path/to/packagename.rpm . txt
这-我标志告诉RPM安装,路径指向要安装的包。
这并不是那么好看。大多数人使用旗帜的组合,-ivh,在RPM命令安装包时显示更详细的信息。
Sudo RPM -ivh /path/to/packagename.rpm
rpm命令也可以通过网络运行,允许你同时下载和安装一个软件包。
Sudo RPM -ivh https://example.com/fedora/32/packagename.rpm
如果您已经安装了一个软件包,但是希望安装一个更高的版本,那么可以使用rpm来升级它。升级选项,- u,基本上是安装功能的变体,它将希望使用较新版本替换现有包,保留以前版本的备份,以防您想要回滚。
sudo rpm -Uvh https://example.com/fedora/32/packagename.rpm
与任何其他包管理器一样,您也可以使用RPM从系统中删除软件包。使用-e fag与-vv一起进行非常详细的输出,以确保您不会意外地删除所需的内容。
sudo rpm -evv packagename
如果您想在安装包之前了解更多关于它们的信息,rpm也提供了相关信息。这qFlag将允许您查询包。结合起来- p和- r要获得对包功能的详细报告和所需的依赖项。完全,它看起来像这样:
sudo rpm -qpr /path/to/packageName.rpm
您还可以使用rpm列出已安装的软件包。
sudo rpm qa
这可能是压倒性的,所以如果你特别寻找一些东西,请将它送到grep。
Sudo RPM -qa | grep -i search
如果你只是想看看你的最新添加,你也可以这样做。
sudo rpm -qa --last
这些都是最常见的方式,你会发现自己使用rpm命令。然而,它能够更多。您可以探索RPM在下面的完整技术细分中可以做的所有内容。
rpm的技术细分
Linux / Unix命令:rpm
的名字
RPM - RPM包管理器
剧情简介
查询和校验包
rpm{q |——查询} (选择选项] [查询选项]
rpm{- v |——验证} (选择选项] [验证选项]
rpm——进口Pubkey ......
rpm{-k | - Checksig.} (——nosignature] [-]PACKAGE_FILE……
安装、升级和移除软件包
rpm{-i | - 空间} (安装 - 选项]PACKAGE_FILE……
rpm{- u |——升级} (安装 - 选项]PACKAGE_FILE……
rpm{- f |——清新} (安装 - 选项]PACKAGE_FILE……
rpm{- e |——擦除} (——allmatches] [- nnodeps.] [——noscript] [——被重置为notrigger] [——重新包装] [——测试]包裹名字 ...
杂项
rpm{--initdb | --rebuilddb.}
rpm{——addsign |——辞职}PACKAGE_FILE……
rpm{- querytags | - Showrc.}
rpm{——setperms |——setugids}包裹名字 ...
选择选项
[PACKAGE_NAME] [——,——所有] [-f, - 文件文件] [- g,组集团) {-p, - 包PACKAGE_FILE] [——文件标识MD5] [- hdrid.SHA1] [——pkgidMD5] [- Tid.t] [- querybynumber.HDRNUM] [- 触发者PACKAGE_NAME] [- - 怎样能力] [——whatrequires能力]
查询选项
[-changelog.] [-c, - configfiles] [- d, docfiles] [——转储] [——filesbypkg] [我,信息] [- 最后的] [-L, - 列表] [——提供] [--qf, - queryformatqueryfmt.] [- r,需要] [——脚本] [- s,状态] [——触发器,triggerscripts]
验证选项
[- nnodeps.] [- 没有文件] [——noscript] [-] [——nosignature] [--nolinkto.] [——nomd5] [- 鼻子] [- 恩纳尔] [--nogroup.] [——nomtime] [——nomode] [- nordev.]
安装 - 选项
[——援助] [- 全部文件] [——badreloc] [- ExcludePath.在媒介] [- Excludedocs.] [——力] [- h,散列] [- 无知] [- 无知] [——ignoreos] [——includedocs] [——justdb] [- nnodeps.] [-] [——nosignature] [——nosuggest] [——noorder] [——noscript] [——被重置为notrigger] [——oldpackage] [- 百分] [- 字首NEWPATH] [- 重新分配在媒介=NEWPATH] [——重新包装] [——replacefiles] [- 重新平移] [——测试]
RPM的描述
rpm是一个功能强大的包管理器,可用于构建、安装、查询、验证、更新和删除单个软件包。包由文件存档和用于安装和删除存档文件的元数据组成。元数据包括助手脚本、文件属性和关于包的描述性信息。包有两种类型:二进制包(用于封装要安装的软件)和源包(包含生成二进制包所需的源代码和配方)。
必须选择以下基本方式之一:查询、验证、签名检查、安装/升级/刷新、卸载、初始化数据库、重建数据库、辞职、添加签名、设置所有者/组、显示查询标签、显示配置。
一般选择
这些选项可以用于所有不同的模式。
-?, - 帮助
打印比正常更长的使用信息。
——版本
打印包含版本号的单行rpm正在使用。
——安静
打印尽可能少 - 通常仅显示错误消息。
- v
打印详细信息—通常会显示例行的进度消息。
-vv.
打印大量丑陋的调试信息。
-rcfile.文件列表
每个文件以冒号分隔文件列表是按顺序读取的rpm配置信息。列表中必须只存在第一个文件,波浪号将展开为值$ HOME。默认的文件列表是/usr/lib/rpm/rpmrc:/usr/lib/rpm/redhat/rpmrc:〜/ .rpmrc.。
- 管道CMD
管道输出rpm到命令CMD。
--dbath.目录
使用数据库目录而不是默认路径/var/lib/rpm
——根目录
使用根在的文件系统树目录所有操作。请注意,这意味着内部的数据库目录将用于依赖项检查和任何scriptlet(例如。%邮政如果安装,或者% prep如果构建,包裹)将在Chroot(2)之后运行目录。
安装和升级选项
rpm install命令的一般形式是
rpm{-i | - 空间} (安装 - 选项]PACKAGE_FILE……
这会安装一个新包。
RPM升级命令的一般形式是
rpm{- u |——升级} (安装 - 选项]PACKAGE_FILE……
此升级或安装当前安装到较新版本的软件包。这与安装相同,除了在安装新包后删除包的所有其他版本。
rpm{- f |——清新} (安装 - 选项]PACKAGE_FILE……
这将升级包,但仅在当前存在的早期版本时。这PACKAGE_FILE可指定为FTP或httpURL,在这种情况下,包将在安装之前下载。看到FTP / HTTP选项有关信息的信息rpm的内部ftp和http客户端支持。
——援助
在需要时将建议的包添加到事务集。
- 全部文件
安装或升级包中所有丢失的gok文件,无论它们是否存在。
——badreloc
使用- 重新分配,允许重定位所有文件路径,而不仅仅是那些在媒介` `在二进制包重定位提示中包含。
- ExcludePath.在媒介
不要安装以在媒介。
- Excludedocs.
不要安装任何标记为文档的文件(包括手册页和文本信息文档)。
——力
与使用相同- 重新平移那——replacefiles,——oldpackage。
-h, - 哈什
在解压包存档文件时打印50个散列标记。使用-V | - 韦尔为了更好的展示。
- 无知
在安装此包之前,请勿检查挂载文件系统是否有足够的磁盘空间。
- 无知
即使二进制包和主机的体系结构不匹配,也允许安装或升级。
——ignoreos
即使二进制包和主机的操作系统不匹配,也允许安装或升级。
——includedocs
安装文档文件。这是默认行为。
——justdb
只更新数据库,而不是文件系统。
-
阅读时不要验证包或标题摘要。
——nosignature
阅读时不要验证包或标题签名。
- nnodeps.
在安装或升级软件包之前,不要进行依赖项检查。
——nosuggest
不要建议提供缺失依赖的包。
——noorder
不要重新排序安装程序包。程序包列表通常会重新排序以满足依赖性。
——noscript
- 诺沃
——nopost
——nopreun
——nopostun
不要执行同名的脚本。这——noscript选项相当于
- 诺沃——nopost——nopreun——nopostun
并关闭相应的执行%前那%邮政那% preun,% postunscriptlet(s)。
——被重置为notrigger
--notripriggerin
——notriggerun
——notriggerpostun
不要执行任何命名类型的触发器脚本。这——被重置为notrigger选项相当于
--notripriggerin——notriggerun——notriggerpostun
并关闭相应的执行% triggerin那%triggerun,% triggerpostunscriptlet(s)。
——oldpackage
允许升级替换较旧的较新的包。
- 百分
当从包归档文件中解压缩文件时,打印百分比。这是有意制造的rpm容易从其他工具运行。
- 字首NEWPATH
对于可重定位的二进制包,将包重定位提示中以安装前缀开头的所有文件路径转换为NEWPATH。
- 重新分配在媒介=NEWPATH
对于可重定位的二进制包,转换所有以在媒介在包重定位提示中NEWPATH。如果有几个,可以反复使用此选项在媒介包裹里的东西要搬到别处去。
——重新包装
在擦除之前重新打包文件。之前安装的包将根据这个宏命名%_repackage_name_fmt.并且将在宏命名的目录中创建% _repackage_dir(默认值是/ var / tmp)。
——replacefiles
即使它们替换了已安装的,软件包中已从其他的文件替换文件,也可以安装包。
- 重新平移
安装这些包,即使其中一些已经安装在这个系统上。
——测试
请勿安装包,只需检查并报告潜在的冲突。
删除选项
rpm擦除命令的一般形式是
rpm{- e |——擦除} (——allmatches] [- nnodeps.] [——noscript] [——被重置为notrigger] [——重新包装] [——测试]包裹名字 ...
也可以使用以下选项:
——allmatches
删除所有匹配的包装版本PACKAGE_NAME。通常,如果PACKAGE_NAME匹配多个包。
- nnodeps.
卸载软件包前不要检查依赖项。
——noscript
——nopreun
——nopostun
不要执行同名的脚本。这——noscript包擦除期间的选项相当于
——nopreun——nopostun
并关闭相应的执行% preun,% postunscriptlet(s)。
——被重置为notrigger
——notriggerun
——notriggerpostun
不要执行任何命名类型的触发器脚本。这——被重置为notrigger选项相当于
——notriggerun——notriggerpostun
并关闭相应的执行%triggerun,% triggerpostunscriptlet(s)。
——重新包装
在擦除之前重新打包文件。之前安装的包将根据这个宏命名%_repackage_name_fmt.并且将在宏命名的目录中创建% _repackage_dir(默认值是/ var / tmp)。
——测试
不要真的卸载任何东西,只是走走过场。与……结合使用-vv.调试选择。
查询选项
RPM查询命令的一般形式是
rpm{q |——查询} (选择选项] [查询选项]
您可以指定打印包信息的格式。要做到这一点,您可以使用
——《|——queryformatqueryfmt.
选项,然后是queryfmt.格式字符串。查询格式是修改标准版本的版本printf (3)格式。格式由静态字符串(可能包括用于换行符、制表符和其他特殊字符的标准C字符转义)和printf (3)格式器类型。作为rpm已经知道要打印的类型,但必须省略类型说明符,并由待印刷的标题标记的名称替换{}人物。标签名称是不论的,而领先者RPMTAG_标签名的一部分也可以省略。
可以通过在标记后面加with请求其他输出格式:类型标签。目前,支持以下类型:
:护甲
用ASCII装甲包裹一个公钥。
: base64
使用Base64编码二进制数据。
:日期
使用strftime (3)“% c”格式。
:一天
使用strftime(3)“%a%b%d%y”格式。
: depflags
格式依赖旗帜。
: fflags
格式化文件标志。
:十六进制
在十六进制格式。
:八进制人
在八进制格式。
:烫发
格式文件权限。
:SheScape.
转义脚本中使用的单引号。
: triggertype
显示触发后缀。
例如,要只打印查询的包的名称,您可以使用%{名称}作为格式字符串。要在两列中打印包的名称和分发信息,可以使用% -30{名称}%{分布}。rpm将打印其所有标签的列表,它知道它何时调用它——querytags争论。
查询有两个选项的子集:包选择和信息选择。
包选择选项
PACKAGE_NAME
查询已安装的包命名PACKAGE_NAME。
- , - 所有
查询所有已安装的软件包。
- f,文件文件
查询包拥有文件。
——文件标识MD5
包含给定文件标识符的查询包,即MD5文件内容的摘要。
-g, - 群组集团
查询包与集团集团。
- hdrid.SHA1
包含给定头标识符的查询包,即SHA1消化不变标题区域。
-p, - 包装PACKAGE_FILE
查询(卸载)包PACKAGE_FILE。这PACKAGE_FILE可指定为ftp或http样式URL,在这种情况下,将下载包标题并查询。看到FTP / HTTP选项有关信息的信息rpm的内部ftp和http客户端支持。这PACKAGE_FILE参数(如果不是二进制包)将被解释为ASCII包清单。从“#”开始,允许的注释,并且包清单文件的每一行都可以包括空白空间分离的Glob表达式,包括带有远程Glob表达式的URL,这将被扩展到代替包装的路径,如图所示额外的PACKAGE_FILE参数。
——pkgidMD5
查询包含给定包标识符的包,即MD5合并报头和有效负载内容的摘要。
- querybynumber.HDRNUM
查询HDRNUM直接数据库输入;这仅用于调试。
- specfile.specfile.
解析和查询specfile.就像一个包裹。虽然不是所有的信息(例如文件列表)都可用,但这种查询类型允许使用rpm从规范文件中提取信息,而不必编写规范文件解析器。
- Tid.t
具有给定的查询包t事务标识符。UNIX时间戳当前用作事务标识符。在单个事务中安装或删除的所有包装都具有通用标识符。
- 触发者PACKAGE_NAME
由包触发的查询包(s)PACKAGE_NAME。
- - 怎样能力
查询提供的所有包能力能力。
——whatrequires能力
查询所有需要的包能力正确运作。
包查询选项
-changelog.
显示包的更改信息。
- c, configfile
仅列出配置文件(意味着- l)。
-d,--docfiles.
仅列出文档文件(意味着- l)。
——转储
转储文件信息如下:
路径大小mtime md5sum模式属主组isconfig isdoc rdev symlink
必须使用至少一个选项- l那- c那- d。
——filesbypkg
列出每个所选包中的所有文件。
我,信息
显示包信息,包括名称,版本和描述。这用了这一点——queryformat如果指定了一个。
- 最后的
按安装时间顺序排列软件包清单,使最新的软件包位于顶部。
- l,列表
列出包中的文件。
——提供
列出此包提供的功能。
- r,需要
列出这个包所依赖的包。
——脚本
列出安装和卸载过程中使用的特定于包的scriptlet。
-s,--state.
显示州包中的文件(意味着- l)。每个文件的状态是正常的那没有安装,或取代。
——触发器,triggerscripts
显示包中包含的触发脚本(如果有的话)。
验证选项
RPM验证命令的一般形式是
rpm{- v |——验证} (选择选项] [验证选项]
在验证包时,将有关包中已安装文件的信息与从rpm数据库中存储的包元数据中获取的文件信息进行比较。除此之外,还要对每个文件的大小、MD5和、权限、类型、所有者和组进行验证。任何差异都会显示出来。未从包中安装的文件,例如,使用"- Excludedocs.选项,将被默默忽略。
包选择选项与包查询相同(包括包清单文件作为参数)。验证模式特有的其他选项有:
- nnodeps.
不要验证包的依赖项。
-
阅读时不要验证包或标题摘要。
- 没有文件
不要验证包文件的任何属性。
——noscript
不要执行% verifyscript小脚本(如果有的话)。
——nosignature
阅读时不要验证包或标题签名。
--nolinkto.
——nomd5
- 鼻子
- 恩纳尔
--nogroup.
——nomtime
——nomode
- nordev.
不要验证相应的文件属性。
输出的格式是一个8个字符的字符串,一个可能的属性标记:
C%配置文件。
文档文件。
G %ghost文件(即文件内容不包含在包有效负载中)。
l%许可证许可证文件。
r%自述文件readme文件。
从包头,后跟文件名。8个字符中的每一个都表示文件的属性与数据库中记录的那些属性的值的值的比较结果。单身“。(期间)表示测试通过,而单个?(问号)表示测试无法执行(例如,文件权限阻止读取)。否则,(记住emB.Oldened)字符表示相应的失败- 核实测试:
s文件大小不同
M模式不同(包括权限和文件类型)
5个MD5总和不同
D设备主号/副号不匹配
readLink(2)路径不匹配
你的用户所有权都不同
G集团所有权不同
T mTime不同
数字签名和消化验证
rpm的一般形式数字签名命令是
rpm——进口Pubkey ......
rpm{——checksig} (——nosignature] [-]PACKAGE_FILE……
这——checksig选项检查包含的所有摘要和签名PACKAGE_FILE确保包装的完整性和来源。请注意,现在每当读取包时都要验证签名——checksig验证与包关联的所有摘要和签名是有用的。
没有公钥就无法验证数字签名。可以将ascii加密公钥添加到rpm数据库使用——进口。导入的公钥携带在报头中,密匙环管理完全像包管理一样执行。例如,当前所有导入的公钥可以通过以下方式显示:
RPM -QA GPG-PUBKEY *
当导入某个特定公钥时,可以通过查询显示该公钥的详细信息。以下是关于红帽GPG/DSA密钥的信息:
rpm气gpg-pubkey-db42a60e
最后,可以像导入包一样删除公钥。这里是如何删除红帽GPG/DSA密钥
rpm - e gpg-pubkey-db42a60e
签署一个包
rpm——addsign |——辞职PACKAGE_FILE……
这两个——addsign和- 辞职选项为每个包生成并插入新的签名PACKAGE_FILE给定,替换任何现有的签名。由于历史原因,有两种选择,目前的行为没有什么不同。
使用GPG签名包
为了使用GPG签署包,rpm必须配置为运行GPG并能够找到具有适当密钥的密匙环。默认情况下,rpm使用与GPG相同的约定来查找密钥环,即GNUPGHOME美元环境变量。如果您的密匙环没有位于GPG期望的位置,您将需要配置宏%_gpg_path.成为GPG键环的位置。
为了兼容较老版本的GPG、PGP、rpm, OpenPGP签名报文只能配置为V3版本。可以使用DSA或RSA验证算法,但DSA优先。
如果您希望能够签署您创建的包,您还需要创建自己的公共和密钥对(请参阅GPG手册)。您还需要配置rpm宏
% _signature
签名的类型。目前只支持gpg和pgp。
% _gpg_name
您希望用来签署包的“用户”的名称。
例如,能够使用GPG作为用户对包进行签名“John Doe”从钥匙圈中定位/etc/rpm/.gpg使用可执行文件/ usr / bin / gpg你将包括
% _signature gpg
% _gpg_path /etc/rpm/.gpg
%_gpg_name John Doe
%_gpgbin / usr / bin / gpg
在宏配置文件中。用/etc/rpm/macros对于每个系统配置和~ / .rpmmacros为每个用户配置。
重建数据库选项
RPM Rebuild数据库命令的一般形式是
rpm{--initdb | --rebuilddb.} (- v] [--dbath.目录] [——根目录]
用- --initdB.要创建新数据库,请使用——rebuilddb从已安装的包头重新生成数据库索引。
Showrc
命令
rpm——showrc
显示的值rpm是否使用当前设置的所有选项rpmrc和宏配置文件。
FTP / HTTP选项
rpm可以作为一个FTP和/或HTTP客户端,以便包可以从互联网查询或安装。用于安装、升级和查询操作的包文件可以指定为ftp或http风格网址:
ftp://用户:password @ host:port / path / to / package.rpm
如果:密码省略部分,密码将被提示为(每个用户/主机名对一次)。如果用户和密码都省略,则为匿名ftp使用。在所有情况下,被动(PASV)ftp转移。
rpm允许与FTP URL一起使用以下选项:
——ftpproxy宿主
主机宿主将被用作所有FTP传输的代理服务器,允许用户通过使用代理系统的防火墙机器进行FTP传输。也可以通过配置宏来指定此选项% _ftpproxy。
——ftpport宿主
TCP港口在代理FTP服务器上进行FTP连接时使用的端口号,而不是默认端口号。也可以通过配置宏来指定此选项%_ftpport.。
rpm允许使用以下选项httpURL:
——httpproxy宿主
主机宿主会被用作所有人的代理服务器吗http转移。也可以通过配置宏来指定此选项% _httpproxy。
- httpport.港口
TCP港口号码,用于http在代理http服务器上连接而不是默认端口。也可以通过配置宏来指定此选项%_httpport.。
遗留问题:执行rpmbuild
RPM的构建模式现在居住在/usr/bin/rpmbuild可执行。虽然POPT别名提供的遗产兼容性是足够的,但兼容性并不完美;因此,通过POPT别名构建模式兼容性正在从RPM中删除。安装RPMBuild.包,看看RPMBuild.(8)供所有文件使用rpm在此处记录之前的构建模式rpm(8)。
将以下行添加到/etc/popt如果您希望继续调用RPMBuild.来自rpm命令行:
RPM exec -bp RPM -bp
RPM exec——bc RPM -bc
rpm exec --bi rpmb -bi
RPM exec -bl RPM -bl
RPM exec——ba RPM -ba
RPM exec——bb RPM -bb
rpm exec --bs rpmb -bs
RPM exec——tp RPM -tp
RPM exec——tc RPM -tc
RPM exec——ti RPM -ti
RPM exec——tl RPM -tl
RPM exec -ta RPM -ta
RPM exec——tb RPM -tb
RPM EXEC -TS RPMB -TS
rpm exec --rebuild rpmb --rebuild
RPM exec——recompile RPM——recompile
RPM EXEC --CLEAN RPMB --CLEAN
RPM exec——rmsource
RPM EXEC --rmspec rpmb --rmspec
rpm exec --target rpmb --target
RPM exec -short-circuit RPM -short-circuit
也可以看看
popt (3),
RPM2CPIO(8),
RPMBuild(8),