Я хотел установить пакет на CentOS 6 через rpm
(например, текущий epel-release
).
РЕДАКТИРОВАТЬ: Конечно, я всегда предпочитаю установку через yum
но каким-то образом мне не удалось установить этот конкретный пакет, используя этот нормальный подход. Таким образом, EPEL / FAQ ниже рекомендует Версия 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 ...
любой актуальный?Первый: человек об / мин.
Затем: человек ням.
(иногда полезно увидеть это в HTML-форме)
На практике я обычно использую YUM framework для установки новых пакетов. В современных системах 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), я думаю, что дополнительный этап проверки не нужен.
Мои предположения верны или я что-то упускаю?
Ваши предположения верны.
Это
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
скачанный файл с локального диска.