![使用 rpm 验证下载的软件包](https://linux22.com/image/797592/%E4%BD%BF%E7%94%A8%20rpm%20%E9%AA%8C%E8%AF%81%E4%B8%8B%E8%BD%BD%E7%9A%84%E8%BD%AF%E4%BB%B6%E5%8C%85.png)
我想通过rpm
(例如,当前的epel-release
)。
编辑:当然,我总是更喜欢通过安装,yum
但不知何故,我无法使用这种正常方法安装该特定软件包。因此,EPEL/常见问题建议使用以下版本 2。
由于我通过不安全的渠道 (http) 下载软件包,因此我想确保使用下载文件本身未提供的信息来验证文件的完整性。对于所有这些方法来说,这都是正确的吗?
我在网上看到了解决此问题的各种方法:
版本 1
rpm -ivh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-7.noarch.rpm
版本 2
rpm -Uvh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-7.noarch.rpm
版本 3
wget http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-7.noarch.rpm
rpm --import https://fedoraproject.org/static/0608B895.txt
rpm -K epel-release-6-7.noarch.rpm
rpm -i epel-release-6-7.noarch.rpm
我不太清楚rpm
,所以我想知道它们会有什么不同?我的猜测(在阅读了手册页) 就是它
- 第一个应该只在包之前没有安装的情况下使用,
- 第二个命令会在安装后删除软件包的先前版本,
- 前两者省略了在实际安装之前所做的一些验证步骤
rpm -K
。
我现在的主要问题是
- 我的猜测正确吗?或者我遗漏了什么?
- 前两种方法是否
rpm --import ...
也隐式地完成了?如果没有,那么是否有必要这样做? - 这些额外检查是由
rpm -K ...
相关人员执行的吗? - 一般来说,通过 rpm 安装软件包的最佳(最安全、最可靠、最易于维护……)方法是什么?
答案1
我的猜测正确吗?或者我遗漏了什么?
你的假设是正确的。
rpm --import
前两种方法是否也隐式地完成了...
不是。前两种方法都没有对软件包的 GPG 签名进行验证。软件包包含签名,但不包含钥匙,因此实际上不可能自动完成。甚至yum
不会自动导入 GPG 密钥,因为每个密钥的批准都由管理员决定。
,如果不是,那是不是就没有必要这么做了?
这是个好主意。但您需要从其他地方获取密钥(例如通过安装包-release
)。
rpm -K ...执行的这些额外检查是否有相关?
rpm -K
验证软件包中的所有签名。这包括校验和(用于防止意外损坏)和 GPG 签名(如果存在),用于真实性验证。在安装软件包时会检查校验和,但 GPG 签名由您决定。
一般来说,通过 rpm 安装软件包的最佳(最安全、最可靠、最易于维护……)方法是什么?
使用yum
。您yum
也可以使用 安装下载的软件包。获得wget
文件和rpm --import
密钥后,您就可以yum install epel-release-6-7.noarch.rpm
从本地磁盘下载文件。
答案2
第一的:人转。
然后:人人都爱。
(有时以 HTML 形式查看会很有帮助)
在实践中,我通常使用YUM框架安装新包。在现代 Red Hat/CentOS/Fedora 系统中,YUM 满足软件包依赖关系并处理安装过程。
如果我做最终直接下载 rpm 文件(通过 curl、wget 或本地构建),我使用的 rpm 命令行是:
rpm -ivh packagename.rpm
是-i
“安装”。 是-v
“详细”。-h
是“哈希”,并在安装过程中显示进度条。
[root@xt ~]# rpm -i ncdu-1.5-1.el5.x86_64.rpm
<no output>
相对
[root@xt ~]# rpm -iv ncdu-1.5-1.el5.x86_64.rpm
Preparing packages for installation...
ncdu-1.5-1.el5
相对
[root@xt ~]# rpm -ivh ncdu-1.5-1.el5.x86_64.rpm
Preparing... ########################################### [100%]
1:ncdu ########################################### [100%]
rpm -i packagename.rpm
可以完成工作,但多年的使用习惯导致了一种自然的倾向-ivh
。进度条很不错。
该-U
开关用于升级现有软件包。同样,由于 YUM 也可以处理软件包更新,因此它的使用范围更窄。我通常仅-U
在出现错误指示来自先前安装的 RPM 软件包的文件冲突时才使用它。
我从来没有用过rpm -K
。12 年来我都不需要它……它是为了验证实际的 rpm 包文件但是,如果您从签名的 YUM 存储库(通过 GPG 密钥)下载,我认为额外的验证步骤是不必要的。