使用 rpm 验证下载的软件包

使用 rpm 验证下载的软件包

我想通过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 密钥)下载,我认为额外的验证步骤是不必要的。

相关内容