Назад | Перейти на главную страницу

Проверка загруженного пакета с помощью rpm

Я хотел установить пакет на 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 очень хорошо, поэтому я подумал, чем они могут отличаться? Мое предположение (прочитав справочная страница) в том, что

Итак, мои основные вопросы на данный момент:

Первый: человек об / мин.
Затем: человек ням.
(иногда полезно увидеть это в 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 скачанный файл с локального диска.