RPM (Redhat Package Manager) – это утилита управления пакетами командной строки, используемая для установки, удаления, обновления, запросов и проверки пакетов программного обеспечения.
В этой статье я расскажу о некоторых наиболее распространенных командах Linux rpm для системного администратора.
Некоторые из Linux-дистрибутивов RPM – это Redhat, Centos, Fedora и OpenSuse.
Yum и DNF – это интерфейсы для управления RPM, которые имеют больше возможностей и могут преодолеть ограничения, которые у него есть.
Как получить пакеты RPM
Существует несколько способов получения пакетов RPM, как показано ниже:
- программное обеспечение CD / DVD
- CentOS Mirror
- RedHat (нужна учетная запись)
- Любые открытые веб-сайты репозитория
Основные режимы для команды RPM
Install : он используется для установки любого пакета RPM.
Remove : используется для удаления
Upgrade : используется для обновления существующего пакета RPM.
Query : используется для запроса любого пакета RPM.
Verify : используется для проверки пакетов RPM.
Примеры пакетов RPM
GeoIP-приложение GeoIP-1.5.0-11.el7.x86_64.rpm представляет собой библиотеку пакетов RPM для страны / города / организации для IP-адреса или сопоставления имен хостов.
GeoIP – это имя пакета, версия 1.5.0-11.el7, версия 7 и архитектура .x86_64.
Установка
1) Как узнать информацию о пакете RPM без установки
После того, как мы загрузили пакет, мы допустим хотим узнать информацию о пакете перед установкой.
Мы можем использовать -qip (query info package), чтобы перечислить информацию о пакете.
$ sudo rpm -qip GeoIP-1.5.0-11.el7.x86_64.rpm
output Name : GeoIP Version : 1.5.0 Release : 11.el7 Architecture: x86_64 Install Date: (not installed) Group : Development/Libraries Size : 2905020 License : LGPLv2+ and GPLv2+ and CC-BY-SA Signature : RSA/SHA256, Sun 20 Nov 2016 05:49:19 PM UTC, Key ID 24c6a8a7f4a80eb5 Source RPM : GeoIP-1.5.0-11.el7.src.rpm Build Date : Sat 05 Nov 2016 08:29:17 PM UTC Build Host : worker1.bsys.centos.org Relocations : (not relocatable) Packager : CentOS BuildSystem Vendor : CentOS URL : http://www.maxmind.com/app/c Summary : Library for country/city/organization to IP address or hostname mapping Description : GeoIP is a C library that enables the user to find the country that any IP address or hostname originates from. It uses a file based database that is accurate as of June 2007 and can optionally be updated on a weekly basis by installing the GeoIP-update package. This database simply contains IP blocks as keys, and countries as values. This database should be more complete and accurate than using reverse DNS lookups. This package includes GeoLite data created by MaxMind, available from http://www.maxmind.com/
2) Как установить пакет RPM
Мы можем использовать параметры -ivh для установки определенного пакета, как показано ниже.
$ sudo rpm -ivh GeoIP-1.5.0-11.el7.x86_64.rpm
Output Preparing... ################################# [100%] package GeoIP-1.5.0-11.el7.x86_64 is already installed
3) Как проверить установленный пакет RPM
Мы можем использовать опцию -q с именем пакета, и она покажет, установлен ли пакет rpm или нет.
$ sudo rpm -q GeoIP
output GeoIP-1.5.0-11.el7.x86_64
4) Как просмотреть все файлы определенного установленного пакета RPM
Мы можем перечислить все файлы установленных пакетов rpm, используя параметр -ql с командой rpm.
$ sudo rpm -ql GeoIP
output /etc/GeoIP.conf /etc/GeoIP.conf.default /usr/bin/geoiplookup /usr/bin/geoiplookup6 /usr/bin/geoipupdate /usr/lib64/libGeoIP.so.1 /usr/lib64/libGeoIP.so.1.5.0 /usr/lib64/libGeoIPUpdate.so.0 /usr/lib64/libGeoIPUpdate.so.0.0.0 /usr/share/GeoIP /usr/share/GeoIP/GeoIP-initial.dat /usr/share/GeoIP/GeoIP.dat /usr/share/GeoIP/GeoIPASNum.dat /usr/share/GeoIP/GeoIPASNumv6.dat /usr/share/GeoIP/GeoIPCity.dat /usr/share/GeoIP/GeoIPCityv6.dat /usr/share/GeoIP/GeoIPCountry.dat /usr/share/GeoIP/GeoIPCountryv6.dat /usr/share/GeoIP/GeoIPv6-initial.dat ...
5) Как просмотреть недавно установленные пакеты RPM
Мы можем использовать опцию -qa с –last, она будет перечислять все недавно установленные пакеты rpm.
$ sudo rpm -qa --last
output GeoIP-1.5.0-11.el7.x86_64 Sat 01 Sep 2018 11:34:09 AM UTC wget-1.14-15.el7_4.1.x86_64 Sun 26 Aug 2018 03:21:02 PM UTC iwl7265-firmware-22.0.7.0-62.2.el7_5.noarch Thu 16 Aug 2018 02:10:18 PM UTC libgomp-4.8.5-28.el7_5.1.x86_64 Thu 16 Aug 2018 02:10:15 PM UTC iwl2030-firmware-18.168.6.1-62.2.el7_5.noarch Thu 16 Aug 2018 02:10:15 PM UTC iptables-1.4.21-24.1.el7_5.x86_64 Thu 16 Aug 2018 02:10:15 PM UTC yum-plugin-fastestmirror-1.1.31-46.el7_5.noarch Thu 16 Aug 2018 02:10:14 PM UTC iwl6000-firmware-9.221.4.1-62.2.el7_5.noarch Thu 16 Aug 2018 02:10:14 PM UTC iwl4965-firmware-228.61.2.24-62.2.el7_5.noarch Thu 16 Aug 2018 02:10:14 PM UTC iwl105-firmware-18.168.6.1-62.2.el7_5.noarch Thu 16 Aug 2018 02:10:14 PM UTC iwl100-firmware-39.31.5.1-62.2.el7_5.noarch Thu 16 Aug 2018 02:10:13 PM UTC iwl1000-firmware-39.31.5.1-62.2.el7_5.noarch Thu 16 Aug 2018 02:10:13 PM UTC ca-certificates-2018.2.22-70.0.el7_5.noarch Thu 16 Aug 2018 02:10:13 PM UTC iwl6000g2b-firmware-17.168.5.2-62.2.el7_5.noarch Thu 16 Aug 2018 02:10:12 PM UTC ...
6) Как установить пакет RPM без зависимостей
Мы можем использовать параметры -ivh с параметрами –nodeps, для которых нет проверки зависимостей.
Чтобы установить конкретный пакет без зависимостей:
$ sudo rpm -ivh --nodeps GeoIP-1.5.0-11.el7.x86_64.rpm
Output Preparing... ################################# [100%] package GeoIP-1.5.0-11.el7.x86_64 is already installed
7) Как заменить установленный пакет RPM
Мы можем использовать параметры -ivh –replacepkgs для замены определенного пакета, установленного в системе, как показано ниже:
$ sudo rpm -ivh --replacepkgs GeoIP-1.5.0-11.el7.x86_64.rpm
Output Preparing... ################################# [100%] Updating / installing... 1:GeoIP-1.5.0-11.el7 ################################# [100%]
Удаление
8) Как удалить пакет RPM
Мы можем использовать -e параметры для удаления определенного пакета, установленного без зависимостей (не проверяя зависимости), как показано ниже:
$ sudo rpm -e --nodeps GeoIP
Теперь введите команду ниже, чтобы гарантировать себе, что GeoIP не установлен.
$ sudo rpm -q GeoIP
Output package GeoIP is not installed
Обновление
9) Как обновить пакет RPM
Мы можем использовать параметры -Uvh для обновления определенного пакета, как показано ниже:
$ sudo rpm -Uvh GeoIP-1.5.0-11.el7.x86_64.rpm
Output Preparing... ################################# [100%] package GeoIP-1.5.0-11.el7.x86_64 is already installed
Запросы
10) Как запросить все установленные пакеты
Мы можем использовать параметры -qa для запроса всех установленных пакетов на сервере, как показано ниже.
$ sudo rpm -qa
Output python-firewall-0.4.4.4-14.el7.noarch ncurses-base-5.9-14.20130511.el7_4.noarch plymouth-0.8.9-0.31.20140113.el7.centos.x86_64 kbd-misc-1.15.5-13.el7.noarch vim-common-7.4.160-4.el7.x86_64 bash-4.2.46-30.el7.x86_64 dmidecode-3.0-5.el7.x86_64 filesystem-3.2-25.el7.x86_64 kbd-1.15.5-13.el7.x86_64 vim-enhanced-7.4.160-4.el7.x86_64 firewalld-0.4.4.4-14.el7.noarch ....
11) Как запросить конкретный пакет
Мы можем использовать команду grep для определения того, какой конкретный пакет установлен или нет, как показано ниже.
$ sudo rpm -qa | grep GeoIP
Output GeoIP-1.5.0-11.el7.x86_64
12) Как запросить файл, относящийся к пакету RPM
В примере номер 9 мы выводили файлы пакета RPM, а теперь мы хотим знать, что файл /usr/lib64/libGeoIP.so.1.5.0 принадлежит RPM-пакету.
$ sudo rpm -qf /usr/lib64/libGeoIP.so.1.5.0
output GeoIP-1.5.0-11.el7.x86_64
Проверка
13) Как получить информацию для определенного пакета
Мы можем использовать параметры -i вместе с q для получения информации для определенного пакета, как показано ниже:
$ sudo rpm -qi GeoIP
Output Name : GeoIP Version : 1.5.0 Release : 11.el7 Architecture: x86_64 Install Date: Thu 16 Aug 2018 02:04:09 PM UTC Group : Development/Libraries Size : 2905020 License : LGPLv2+ and GPLv2+ and CC-BY-SA Signature : RSA/SHA256, Sun 20 Nov 2016 05:49:19 PM UTC, Key ID 24c6a8a7f4a80eb5 Source RPM : GeoIP-1.5.0-11.el7.src.rpm Build Date : Sat 05 Nov 2016 08:29:17 PM UTC Build Host : worker1.bsys.centos.org Relocations : (not relocatable) Packager : CentOS BuildSystem Vendor : CentOS URL : http://www.maxmind.com/app/c Summary : Library for country/city/organization to IP address or hostname mapping Description : GeoIP is a C library that enables the user to find the country that any IP address or hostname originates from. It uses a file based database that is accurate as of June 2007 and can optionally be updated on a weekly basis by installing the GeoIP-update package. This database simply contains IP blocks as keys, and countries as values. This database should be more complete and accurate than using reverse DNS lookups. This package includes GeoLite data created by MaxMind, available from http://www.maxmind.com/
14) Как проверить пакет RPM
Мы можем проверить пакет, сравнив информацию об установленных файлах пакета с базой данных rpm, используя опцию -Vp .
$ sudo rpm -Vp GeoIP-1.5.0-11.el7.x86_64.rpm
15) Как проверить все пакеты RPM
Мы можем проверить все установленные пакеты rpm, используя опцию -Va.
$ sudo rpm -Va
output S.5....T. c /etc/sysconfig/authconfig S.5....T. c /etc/yum.repos.d/CentOS-Base.repo .M....... c /etc/machine-id .M....... g /etc/udev/hwdb.bin .M....... g /var/lib/systemd/random-seed .M....... c /etc/shadow S.5....T. c /etc/ssh/sshd_config .M....... c /etc/audit/rules.d/audit.rules S.5....T. c /etc/NetworkManager/NetworkManager.conf ....L.... c /etc/pam.d/fingerprint-auth ....L.... c /etc/pam.d/password-auth ....L.... c /etc/pam.d/postlogin ...