我想通过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 --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步骤是不必要的。