使用rpmvalidation下载的软件包

我想通过rpm在CentOS 6上安装一个软件包(例如,当前的epel-release )。

编辑:当然,我总是喜欢通过yum安装,但不知何故,我没有得到使用这种正常的方法安装特定的软件包。 因此, EPEL / FAQbuild议在第2版以下。

当我通过一个不安全的通道(http)下载软件包时,我想确保文件的完整性通过下载文件本身没有提供的信息进行validation。 所有这些方法都是如此吗?


我在互联网上看到了各种各样的方法:

版本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完成的validation步骤。

所以我现在的主要问题是

  • 我的猜测是正确的还是我错过了什么?
  • 对于前两种方法, rpm --import ...是否是隐含的呢?如果没有,那么是否有必要这样做呢?
  • 这些额外的检查执行rpm -K ...任何相关的?
  • 什么是最好的(最安全,最可靠,最可维护的)通过rpm安装软件包的方式?

我的猜测是正确的还是我错过了什么?

你的假设是正确的。

对于前两种方法, rpm --import …也是隐含的

不,这不对。 在前两种方法中,没有对包的GPG签名进行validation。 该软件包包含一个签名,但不包含密钥 ,所以不可能自动完成。 即使yum也不会自动导入GPG密钥,因为由pipe理员来批准每个密钥。

如果不是的话,是不是有必要这样做呢?

是个好主意。 但是你需要从其他地方获得密钥(比如通过安装一个-release包)。

这些额外的检查执行rpm -K …任何相关的?

rpm -Kvalidation包中的所有签名。 这包括校验和(无意腐败)和GPG签名(如果存在),以进行真实性validation。 安装软件包时检查校验和,但GPG签名由您决定。

什么是最好的(最安全,最可靠,最可维护的)通过rpm安装软件包的方式?

yum 。 您也可以使用yum来安装下载的软件包。 一旦你wget文件和rpm --import yum install epel-release-6-7.noarch.rpm密钥,你可以yum install epel-release-6-7.noarch.rpm从本地磁盘下载的文件。

第一: man rpm 。
那么: man yum 。
(有时以HTMLforms查看它是有帮助的)

实际上,我通常使用YUM框架来安装新的软件包 。 在现代的Red Hat / CentOS / Fedora系统中,YUM满足程序包依赖关系并处理安装过程。

如果我最终直接下载rpm文件(通过curl,wget或本地构build),我的转到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年…这是为了validation实际的rpm包文件 ,但如果你从一个签名的YUM库(通过GPG密钥)下载,我认为一个额外的validation步骤是不必要的。