RPM (Red Hat Package Manager) — это стандартная утилита управления пакетами с открытым исходным кодом для систем на базе Red Hat, таких как (RHEL, CentOS, Fedora и т.д.). Этот инструмент позволяет системным администраторам и пользователям устанавливать, обновлять, удалять, запрашивать, проверять и управлять пакетами системного программного обеспечения в операционных системах Unix/Linux. RPM, включает в себя скомпилированные программы и библиотеки, необходимые пакетам. Эта утилита работает только с пакетами, созданными в формате .rpm.
В этой статье представлены некоторые полезные примеры команд rpm, которые могут вам пригодиться. С помощью этой команды вы можете устанавливать, обновлять и удалять пакеты в ваших системах.
Несколько фактов об утилите rpm.
- RPM бесплатен и распространяется под лицензией GPL (General Public License).
- RPM хранит информацию обо всех установленных пакетах в базе данных /var/lib/rpm.
- RPM имеет дело с файлами .rpm, которые содержат информацию о пакетах, например: что это такое, откуда он, информация о зависимостях, информация о версии и т.д.
- RPM работает только с пакетами, которые были установлены с помощью этой утилиты. Если вы установили пакеты с использованием исходного кода, то RPM не сможет работать с ними.
Пять основных режимов управления RPM.
- Install — используется для установки пакетов.
- Remove — используется для удаления пакетов.
- Upgrade — используется для обновления пакетов.
- Verify — используется для проверки пакетов.
- Query — используется для запроса любого пакета.
Как проверить подпись пакета.
Всегда проверяйте подпись пакетов PGP перед их установкой в свою систему. Это необходимо, чтобы убедитесь, что с их целостностью и происхождением все в порядке. Используйте команду с опцией —checksig (проверить подпись). В следующем примере, проверяю пакет upscayl. Вывод говорит нам, что все Ok.
[root@fedora rpm]# rpm --checksig upscayl-2.9.5-linux.rpm
upscayl-2.9.5-linux.rpm: digests ОК
[root@fedora rpm]#
Установка пакетов.
Для установки пакета программного обеспечения rpm используйте следующую команду с опцией -i. Например, чтобы установить пакет rpm под названием rustdesk-1.2.3-0.x86_64.rpm.
[root@fedora rpm]# rpm -ivh rustdesk-1.2.3-0.x86_64.rpm
Verifying... ################################# [100%]
Подготовка... ################################# [100%]
пакет rustdesk-1.2.3-0.x86_64 уже установлен
[root@fedora rpm]#
В этом выводе используются следующие опции:
- -i — установить пакет
- -v — подробный вывод работы.
- -h — отображать статус в виде #.
Проверка зависимостей для пакета.
Если вы хотите выполнить проверку зависимостей перед установкой или обновлением пакета, можно использовать следующую команду. Например, чтобы проверить зависимости пакета veyon-4.8.2.0-fedora.38.x86_64.rpm:
[root@fedora rpm]# rpm -qpR veyon-4.8.2.0-fedora.38.x86_64.rpm
config(veyon) = 4.8.2.0-fedora.38
ld-linux-x86-64.so.2()(64bit)
ld-linux-x86-64.so.2(GLIBC_2.3)(64bit)
libGLX.so.0()(64bit)
libOpenGL.so.0()(64bit)
...
В этом выводе используются следующие опции:
- -q — проверка пакетов.
- -p — отобразить потребности зависимости
- -R — вывести пакеты, от которых зависит этот пакет.
Установка пакета без зависимостей.
Если вы знаете, что все необходимые пакеты уже установлены, вы можете игнорировать эти зависимости, используя опцию —nodeps (без проверки зависимостей) перед установкой пакета.
[root@fedora rpm]# rpm -ivh --nodeps veyon-4.8.2.0-fedora.38.x86_64.rpm
Verifying... ################################# [100%]
Подготовка... ################################# [100%]
Обновление / установка...
1:veyon-4.8.2.0-fedora.38 ################################# [100%]
[root@fedora rpm]#
Приведенная выше команда принудительно устанавливает пакет rpm, игнорируя ошибки зависимостей, но если эти файлы зависимостей отсутствуют, программа вообще не будет работать, пока вы их не установите.
Проверка установленного пакета.
Использование опции -q с именем пакета покажет, установлен ли пакет rpm или нет.
[root@fedora rpm]# rpm -q veyon
veyon-4.8.2.0-fedora.38.x86_64
Вывести список всех файлов, установленных с пакетом.
Чтобы просмотреть все файлы установленных из пакета rpm, используйте команду -ql (список запросов).
[root@fedora rpm]# rpm -ql veyon
/lib/systemd
/lib/systemd/system
/lib/systemd/system/veyon.service
/usr/bin/veyon-auth-helper
/usr/bin/veyon-cli
/usr/bin/veyon-configurator
/usr/bin/veyon-master
/usr/bin/veyon-server
/usr/bin/veyon-service
...
Вывести список недавно установленных пакетов.
Используйте следующую команду rpm с опцией —qa (запросить все) и —last, чтобы просмотреть все недавно установленные пакеты rpm.
[root@fedora ~]# rpm -qa --last
veyon-4.8.2.0-fedora.38.x86_64 Пн 19 фев 2024 14:26:48
sl-5.02-19.fc38.x86_64 Вт 13 фев 2024 13:32:22
kmod-VirtualBox-6.7.3-100.fc38.x86_64-7.0.14-2.fc38.x86_64 Пт 09 фев 2024 12:17:37
xorg-x11-server-Xwayland-22.1.9-5.fc38.x86_64 Пт 09 фев 2024 12:13:26
webp-pixbuf-loader-0.2.6-1.fc38.x86_64 Пт 09 фев 2024 12:13:26
qadwaitadecorations-qt6-0.1.4-1.fc38.x86_64 Пт 09 фев 2024 12:13:26
ibus-typing-booster-2.24.12-1.fc38.noarch Пт 09 фев 2024 12:13:26
container-selinux-2.228.1-1.fc38.noarch Пт 09 фев 2024 12:13:26
qadwaitadecorations-qt5-0.1.4-1.fc38.x86_64 Пт 09 фев 2024 12:13:25
plocate-1.1.22-1.fc38.x86_64 Пт 09 фев 2024 12:13:25
libmaxminddb-1.9.1-1.fc38.x86_64 Пт 09 фев 2024 12:13:25
libjcat-0.2.1-1.fc38.x86_64 Пт 09 фев 2024 12:13:25
libertas-firmware-20240115-2.fc38.noarch Пт 09 фев 2024 12:13:25
java-11-openjdk-11.0.22.0.7-1.fc38.x86_64 Пт 09 фев 2024 12:13:25
iwlwifi-mvm-firmware-20240115-2.fc38.noarch Пт 09 фев 2024 12:13:25
iwlwifi-dvm-firmware-20240115-2.fc38.noarch Пт 09 фев 2024 12:13:25
iwlegacy-firmware-20240115-2.fc38.noarch Пт 09 фев 2024 12:13:25
...
Вывести список всех установленных пакетов.
Для вывода всех установленных пакетов, используется опция —qa.
[root@fedora rpm]# rpm -qa
python3-pyOpenSSL-21.0.0-4.fc37.noarch
shim-x64-15.6-2.x86_64
shim-ia32-15.6-2.x86_64
gpg-pubkey-5323552a-6112bcdc
gpg-pubkey-645f044f-626fcd87
code-1.77.3-1681292829.el7.x86_64
gpg-pubkey-a621e701-63bdbbe3
zoom-5.14.5.2430-1.x86_64
gpg-pubkey-2980aecf-5719f4e1
protonvpn-stable-release-1.0.1-2.noarch
packer-1.9.4-1.x86_64
...
Как обновить пакет.
Если мы хотим обновить какой-либо пакет RPM, то используем опцию -U (обновление). Одним из основных преимуществ использования этой опции является то, что она не только обновит последнюю версию любого пакета, но также сохранит резервную копию старого пакета, чтобы в случае, если более новый обновленный пакет не запустится, то ранее установленный пакет можно использовать снова.
[root@fedora rpm]# rpm -Uvh rustdesk-1.2.3-0.x86_64.rpm
Verifying... ################################# [100%]
Подготовка... ################################# [100%]
пакет rustdesk-1.2.3-0.x86_64 уже установлен
Удалить пакет
Чтобы удалить пакет RPM, используется опция -e (стереть).
[root@fedora rpm]# rpm -ev veyon
Подготовка пакетов...
veyon-4.8.2.0-fedora.38.x86_64
[root@fedora rpm]# rpm -qa | grep veyon
[root@fedora rpm]#
Удалить пакет, не затрагивая зависимости.
Опция —nodeps принудительно удаляет пакет rpm из системы. Но имейте в виду, что удаление определенного пакета может привести к поломке других работающих приложений.
[root@fedora rpm]# rpm -ev --nodeps rustdesk
Подготовка пакетов...
rustdesk-1.2.3-0.x86_64
Узнать какому пакету принадлежит файл.
Допустим, у вас есть список файлов и вы хотите узнать, какой пакет принадлежит этим файлам. Например, следующая команда с опцией -qf (файл запроса) покажет вам файл /usr/bin/htpasswd, принадлежащий пакету httpd-tools-2.4.58-1.fc38.x86_64.
[root@fedora rpm]# rpm -qf /usr/bin/htpasswd
httpd-tools-2.4.58-1.fc38.x86_64
[root@fedora rpm]#
Запрос информации об установленном пакете.
Допустим, вы установили пакет RPM и хотите узнать информацию о пакете. Следующая опция -qi (информация о запросе) выведет доступную информацию об установленном пакете.
[root@fedora rpm]# rpm -qi httpd
Name : httpd
Version : 2.4.58
Release : 1.fc38
Architecture: x86_64
Install Date: Чт 09 ноя 2023 23:33:38
Group : Unspecified
Size : 60965
License : Apache-2.0 AND (BSD-3-Clause AND metamail AND HPND-sell-variant AND Spencer-94)
Signature : RSA/SHA256, Сб 21 окт 2023 19:43:13, Key ID 809a8d7ceb10b464
Source RPM : httpd-2.4.58-1.fc38.src.rpm
Build Date : Сб 21 окт 2023 19:12:41
Build Host : buildhw-x86-16.iad2.fedoraproject.org
Packager : Fedora Project
Vendor : Fedora Project
URL : https://httpd.apache.org/
Bug URL : https://bugz.fedoraproject.org/httpd
Summary : Apache HTTP Server
Description :
The Apache HTTP Server is a powerful, efficient, and extensible
web server.
[root@fedora rpm]#
Получение информации перед установкой пакета.
Вы загрузили пакет из Интернета и хотите узнать информацию о пакете перед установкой. Например, следующая опция -qip (пакет информации о запросе) выведет информацию о пакете.
[root@fedora rpm]# rpm -qip upscayl-2.9.5-linux.rpm
Name : upscayl
Version : 2.9.5
Release : 1
Architecture: x86_64
Install Date: (not installed)
Group : default
Size : 551640884
License : AGPL-3.0
Signature : (none)
Source RPM : upscayl-2.9.5-1.src.rpm
Build Date : Пн 04 дек 2023 17:24:49
Build Host : fv-az771-857.rk3yhgbdfeeu5pdqztzaatlnyd.ex.internal.cloudapp.net
Relocations : /
Packager : Nayam Amarshe <simplelogin-newsletter.j1zez@aleeas.com>
Vendor : Nayam Amarshe <simplelogin-newsletter.j1zez@aleeas.com>
URL : https://github.com/TGS963/upscayl
Summary : AI Image Upscaler
Description :
Free and Open Source AI Image Upscaler
[root@fedora rpm]#
Получить документы к установленному пакету.
Чтобы получить список доступной документации установленного пакета, используйте следующую команду с опцией -qdf (файл запроса файла). Например, чтобы отобразить страницы руководства, относящиеся к пакету vmstat.
[root@fedora rpm]# rpm -qdf /usr/bin/vmstat
/usr/share/doc/procps-ng/AUTHORS
/usr/share/doc/procps-ng/FAQ
/usr/share/doc/procps-ng/NEWS
/usr/share/doc/procps-ng/README.md
/usr/share/doc/procps-ng/README.top
...
Проверить пакет.
При проверке пакета информация об установленных файлах пакета сравнивается с базой данных rpm. -Vp (проверить пакет).
[root@fedora rpm]# rpm -Vp upscayl-2.9.5-linux.rpm
.M....... /opt/Upscayl/chrome-sandbox
Проверить все пакеты в системе.
Введите следующую команду, чтобы проверить все установленные пакеты rpm.
[root@fedora rpm]# rpm -Va
.......T. /boot/efi/EFI/BOOT/BOOTX64.EFI
.......T. /boot/efi/EFI/BOOT/fbx64.efi
.......T. /boot/efi/EFI/fedora/BOOTX64.CSV
.......T. /boot/efi/EFI/fedora/mmx64.efi
.......T. /boot/efi/EFI/fedora/shim.efi
.......T. /boot/efi/EFI/fedora/shimx64.efi
.......T. /boot/efi/EFI/BOOT/BOOTIA32.EFI
...
Импортировать ключ RPM GPG.
Чтобы проверить пакеты RHEL/CentOS/Fedora, вам необходимо импортировать ключ GPG. Для этого выполните следующую команду. Он импортирует ключ CentOS 7 GPG.
[root@fedora rpm]# rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
Посмотреть все установленные ключи в системе.
Чтобы посмотреть все импортированные ключи GPG в вашей системе, используйте следующую команду.
[root@fedora rpm]# rpm -qa gpg-pubkey*
gpg-pubkey-5323552a-6112bcdc
gpg-pubkey-645f044f-626fcd87
gpg-pubkey-a621e701-63bdbbe3
gpg-pubkey-2980aecf-5719f4e1
gpg-pubkey-eb10b464-6202d9c6
gpg-pubkey-19940e11-5f99778b
gpg-pubkey-d651ff2e-5dadbbc1
...
Восстановить поврежденную базу rpm.
Иногда база данных rpm повреждается и останавливает всю функциональность rpm и других приложений в системе. Итак, на данный момент нам нужно перестроить базу данных rpm и восстановить ее с помощью следующей команды.
[root@fedora rpm]# cd /var/lib
[root@fedora rpm]# rm __db*
[root@fedora rpm]# rpm --rebuilddb
[root@fedora rpm]# rpmdb_verify Packages
Заключение.
В этой статье рассмотрели некоторые примеры использования команды rpm. Если есть еще примеры использования, делитесь в комментариях.
P.S. Если вам интересен материал не забывайте ставить палец вверх под статьей. А так же, подписывайтесь на анонсы новых статей в телеграмм и на сайте RoadIT