Как удалить программу rpm в linux

Содержание

В телекоммуникационной отрасли понятие «последняя миля» подразумевает инфраструктуру, строительные конструкции, затраты и прочие сложности, связанные с предоставлением услуг большому числу потребителей. Кабельный провайдер может проложить канал связи из одного конца страны в другой с помощью спутниковой связи; однако совсем другое дело, когда нужно рыть траншеи и прокладывать кабель, чтобы подключиться к каждому дому и каждому предприятию. В некоторых случаях понятие последней мили может не обязательно указывать точное расстояние — это могут быть миллионы миль.

В других отраслях тоже сталкиваются с трудносями, эквивалентными понятию последней мили в телекоммуникационной отрасли. Бакалейные лавки теряют доходы из-за того, что «последняя миля» обходится им так дорого. Почтовая служба Соединенных Штатов продолжает испытывать серьезные убытки на последней миле (буквально!) доставки писем.

Разработчики программного обеспечения также лицом к лицу сталкиваются с «последней милей». После того, как вы создадите свою программу, она будет всего лишь только коллекцией большого количества нулей и единиц до тех пор, пока она не будет развернута в системе. Концептуально установка очень проста, но точно также, как и с доставкой проводов, бананов и писем, проблема кроется в деталях.

Как удалить программу на Ubuntu

Первая статья данной серии познакомила вас с RPM — популярной системой доставки программного обеспечения. Вы можете обнаружить менеджер пакетов RPM во многих дистрибутивах Linux, а технология RPM, как таковая, широко используется для развертывания коммерческих программ и программ с открытым исходным кодом, например, в системах Red Hat Linux и Fedora Core Linux. В первой статье также было показано, как собирать приложения в пакеты и как установливать их из исходного кода на чистую систему.

В настоящей статье продолжим изучение RPM и углубимся в вопросы обновления и деинсталляции существующего программного обеспечения. В третьей и заключительной статье будут рассмотрены реже встречающиеся задачи, такие как установка патчей и поставка исходного кода.

Вся правда об обновлении программ

Первоначальная установка программы — это самый простейший случай развертывания программного обеспечения. В целевой системе (т. е. той, на которую происходит установка) отсутствуют демоны, бинарные и конфигурационные файлы и файлы с данными из вашего пакета, так что при первой установке нет необходимости останавливать работу программы, делать резервные копии, выполнять восстановление и, возможно, объединять файлы.

Однако, если в системе, в которой осуществляется установка вашей программы, имеется ее предыдущая или текущая версия, либо если ваша программа тесно взаимодействует с другим кодом и сервисами, ваш пакет RPM должен действовать с особой осторожностью с тем, чтобы не уничтожить рабочие настройки. Вам может потребоваться остановить процессы, подменить или предварительно сохранить файлы, а затем перезапустить приложение после того, как новый код будет скопирован в систему. Конечно, не всегда можно обеспечить обратную совместимость. В таких случаях ваш пакет RPM должен вносить минимально возможное количество изменений с тем, чтобы сохранить систему функциональной и безопасной. В некоторых случаях это может означать, что потребуется создать скрипты, которые проанализируют старые настройки и трансформируют их в новые.

Удаление пакетов и очистка Linux от мусора

В RPM есть четыре способа добавления команд в процесс установки и удаления программ: два — для установки и два — для удаления. Их все можно использовать прямо в системе, где происходит установка, и их, как правило, достаточно для выполнения практически всего, что может потребоваться. Эти следующие четыре способа:

  • Все команды, перечисленные в разделе %pre , выполняются прежде, чем будет установлен ваш пакет.
  • Команды из раздела %post выполняются после того, как ваш пакет будет установлен.
  • Раздел %preun исполняется перед тем, как ваш пакет будет удален из системы.
  • Команды из раздела %postun отработают только после того, как пакет будет уже удален из системы.

Таким образом, порядок операций, выполняемый во время обновления пакета, будет следующим:

  1. Отрабатывается раздел %pre в пакете RPM, который устанавливается.
  2. Устанавливаются файлы, которые есть в пакете RPM
  3. Выполняется раздел %post установленного пакета RPM
  4. Запускается раздел %preun старого пакета.
  5. Удаляются все старые файлы, которые не были переписаны новой версией (удаляются только те файлы, которые ненужны в новой версии).
  6. Выполняется раздел %postun старого пакета.

Шаги 4 и 6 могут показаться слегка подозрительными, и вполне обоснованно: если вы обновляете пакет, запуск действий по удалению старой версии может полностью или частично аннулировать результаты шагов с 1 по 3. Действительно, операции по удалению старой версии, если они будут выполняться без проверки каких-либо условий, могут разрушить новую версию. Для того, чтобы предотвратить непреднамеренное затирание, в пакете RPM в каждый раздел передается один аргумент — флаг. Значение флага указывает, какие операции следует выполнять:

  • Если первый аргумент в разделе %pre равен 1, то действие, выполняемое пакетом RPM, является первоначальной установкой. Если первый аргумент в разделе %pre равен 2, то действие является обновлением.
  • Аналогичным образом аргументы в разделе %post равны 1 или 2 в случае новой установки или обновления, соответственно (разделы %pre и %post не выполняются при деинсталляции).
  • Если первый аргумент в разделах %preun и %postun равен 1, то действие является обновлением.
  • Если первый аргумент в разделах %preun и %postun равен 0, то действие является деинсталляцией.

Вставляем в каждый раздел логические операции, проверяющие значения аргументов, и выполняем правильный код. По умолчанию, каждый раздел интерпретируется как скрипт оболочки Борна (как правило, /bin/sh), если вы не указали имя другого интерпретатора скриптов, такого как Perl. Ниже приведен пример раздела %pre , подготовленного для интерпретатора Bourne:

Читайте также:
Как сделать повторение программы в паскале

%pre if [ «$1» = «1» ]; then # Выполняются задачи для подготовки первоначальной установки elif [ «$1» = «2» ]; then # Выполняют операции, которые требуются перед началом обновления пакета fi

Тот же самый раздел, но переписанный для Perl. Чтобы использовать другой интерпретатор скриптов, укажите параметр -p и задайте полный путь к интерпретатору.

%pre -p /usr/bin/perl if ( $ARGV[0] == 1 ) < print «Preparing for initial install. n» >elsif ( $ARGV[0] == 2 )

Если вы укажете интепретатор, которого нет на целевой машине, то утилита RPM сгенерирует ошибку, что будет выглядеть следующим образом:

$ sudo rpm -i RPMS/i386/wget-1.12-1.i386.rpm error: Failed dependencies: /usr/bin/perl is needed by wget-1.12-1.i386

Если администратор целевой системы увидит такое сообщение, он должен установить пакет, от которого зависит наш пакет RPM, и должен повторить установку.

Будьте аккуратны с триггерами

Обычно с помощью RPM устанавливается один пакет, который вряд ли зависит от других пакетов. Как правило в пакетах RPM имеется все, что нужно, а если что и используется совместно, то оно изолировано иным образом. Тем не менее, существуют пакеты, которые оказывают влияние на другие пакеты.

Например, некоторые текстовые редакторы являются расширяемыми: скажем, добавляем вспомогательный пакет для Ruby и редактор может подсвечивать синтаксис этого языка программирования. Если сначала установлен редактор, а затем вспомогательные пакеты, то новая функция будет добавлена в редактор, как вы и ожидали. Но что, если, скажем, вспомогательные пакеты будут установлены не первыми, поскольку они предназначены сразу для нескольких редакторов, а затем будет установлен редактор? В идеале, новая функция также должна быть добавлена. Появляется понятие триггера RPM.

RPM может подключить триггер к другому пакету с тем, чтобы выполнить одну или несколько задач в случае, если этот другой пакет будет инсталлироваться или деинсталлироваться после того, как данные пакет уже установлен. Каждый триггер является просто скриптом точно таким, как мы записывали в разделах %pre или %post . Вы даже можете, если желаете, указать альтернативный интерпретатор.

  • Скрипт %triggerin работает тогда, когда устанавливается указанный пакет
  • Скрипт %triggerun работает тогда, когда указанный пакет деинсталлируется.
  • Скрипт %triggerpostun работает после того, как указанный пакет деинсталлирован.

Например, если вы хотите запустить скрипт только если установлен пакет Ruby, причем уже после того, как ваш пакет уже размещен в системе, вы можете написать следующее:

%triggerin -p /usr/bin/perl — ruby # Реакция на добавление пакета Ruby

Параметр -p является необязательным. Вы должны набрать –- (два дефиса), а затем указать имя пакета, который вы хотите отслеживать.

С учетом копирования, использования механизма выполнения дополнительных команд и использования триггеров, порядок выполнения всех действий при установке нового пакета N будет следующей (предыдущая версия пакета будет обозначаться n) :

  1. Исполняем скрипт %pre нового пакета N.
  2. Копируем в систему новые файлы нового пакета N.
  3. Исполняем скрипт %post нового пакета N.
  4. Исполняем все инсталляционные триггеры (те, которые в других пакетах помечены как %triggerin ), которые компенсируют установку нового пакета N.
  5. Исполняем все инсталляционные триггеры нового пакета N.
  6. Исполняем все деинсталляционные триггеры ( %triggerun ) предыдущей версии пакета n.
  7. Исполняем все деинсталляционные триггеры (найденные в других пакетах), которые компенсируют деинсталляцию предыдущей версии пакета n.
  8. Исполняем все действия из раздела %preun предыдущей версии пакета n.
  9. Удаляем все файлы, которые не были переписаны при установке нового пакета N.
  10. Исполняем все деинсталляционные триггеры ( %triggerpostun ), найденные в предыдущей версии пакета n.

Установка программного обеспечения может быть сложной, но механизм дополнительных команд и триггеры могут справиться с практически любым сценарием. Одно предостережение: не пытайтесь взаимодействовать с пользователем на любом шаге этого процесса. RPM предназначен для установки в пакетном режиме, т. е. когда пользователь не должен обязательно присутствовать. Если пакет RPM во время установки делает паузу с тем, чтобы задать вопрос, и никто не увидит этот вопрос, установка, несомненно, зависнет.

Переменные RPM

Файлы RPM могут становиться длинными и сложными. Точно также, как вы используете переменные для сокращения записи в приложениях, вы можете использовать переменные в качестве хранилища значений в файле спецификаций RPM.

Например, вы можете задать переменную в верхней части вашего файла спецификаций, а затем можете ссылаться на нее везде, используя для этого конструкцию % — даже в скрипте из раздела %pre :

%define foo_dir /usr/lib/foo %install cp install.time.message $RPM_BUILD_ROOT/% %files %/install.time.message %post /bin/cat %/install.time.message

Заключение

Если вы разрабатываете программное обеспечение для машин, работающих под UNIX ® и Linux, написание инсталлятора может быть утомительным делом. К счастью, вам не нужно изобретать технологию инсталляции с самого нуля.

Для этого есть технология RPM, которая широко используется для распространения программного обеспечения. Это делает «последнюю милю» похожей на прогулку в парке.

Источник: rus-linux.net

Часто используемые команды rpm

RPM (RedHat Package Manager) — самая популярная утилита управления пакетами для систем на базе RedHat, таких как RHEL, CentOS, Fedora. Инструмент позволяет системным администраторам и пользователям устанавливать, обновлять, удалять, запрашивать, проверять и управлять пакетами системного программного обеспечения в операционных системах Unix/Linux. Менеджер пакетов RPM хранит информацию об установленных в системе приложениях в свой базе данных /var/lib/rpm. Сами .rpm файлы содержат скомпилированные версии программного обеспечения, библиотеки необходимые для их работы, а так-же актуальную информацию об источниках пакетов, версиях и зависимостях. RPM не может управлять программным обеспечением скомпилированным и установленным из исходных кодов.

  • rpm <-q|—query>[select-options] [query-options]
  • rpm <-V|—verify>[select-options] [verify-options]
  • rpm <-i|—install>[install-options] PACKAGE_FILE .
  • rpm <-U|—upgrade>[install-options] PACKAGE_FILE .
  • rpm <-F|—freshen>[install-options] PACKAGE_FILE .
  • rpm <-e|—erase>[—allmatches] [—justdb] [—nodeps] [—noscripts][—notriggers] [—test] PACKAGE_NAME .

1. Проверить gpg подпись rpm пакета

Желательно всегда проверять gpg подпись пакета перед его установкой что-бы удостовериться в его подлинности.

# rpm —checksig pidgin-2.7.9-5.el6.2.i686.rpm pidgin-2.7.9-5.el6.2.i686.rpm: rsa sha1 (md5) pgp md5 OK

2. Установка rpm пакета

Для установки rpm пакета используется ключ -i:
# rpm -ivh pidgin-2.7.9-5.el6.2.i686.rpm Preparing. ########################################### [100%] 1:pidgin ########################################### [100%]
-i: Установить пакет -v: показать отладочную информацию -h: выводить хэш-меток при установке

3. Проверить зависимости rpm пакета перед установкой

Посмотреть список зависимостей пакета можно так:
# rpm -qpR htop-2.0.2-2.fc26.aarch64.rpm ld-linux-aarch64.so.1()(64bit) ld-linux-aarch64.so.1(GLIBC_2.17)(64bit) libc.so.6()(64bit) libc.so.6(GLIBC_2.17)(64bit) libm.so.6()(64bit) libm.so.6(GLIBC_2.17)(64bit) libncursesw.so.6()(64bit) libtinfo.so.6()(64bit) rpmlib(CompressedFileNames)

-q: выполнить запрос -p | —package: запросить информацию -R: опция режима query, список зависимостей пакета

4. Rpm, установка пакетов без зависимостей

Если вы уверены что все необходимые зависимости установлены, а rpm ругается и не дает установить пакет, можно игнорировать установку зависимостей с помощью флага —nodeps:

# rpm -ivh —nodeps BitTorrent-5.2.2-1-Python2.4.noarch.rpm Preparing. ########################################### [100%] 1:BitTorrent ########################################### [100%]

Вышеприведенная команда принудительно установит пакет, не смотря на ошибки rpm. Учтите, что если окажется что зависимости все таки отсутствуют в системе, установленная программа работать не будет и нужно будет отдельно установить необходимые зависимости.

Читайте также:
Программа похожая на reflector

5. Rpm, проверить установленный пакет

Что-бы проверить установлен пакет или нет, нужно выполнить запрос нужного пакета: пакет htop установлен

# rpm -q htop htop-2.0.2-1.el7.x86_64
пакет fake не установлен
# rpm -q fake package fake is not installed

6. Rpm, список файлов установленного пакета

Список файлов установленного пакета можно получить запросом -ql (query list):
# rpm -ql htop /usr/bin/htop /usr/share/doc/htop-2.0.2 /usr/share/doc/htop-2.0.2/AUTHORS /usr/share/doc/htop-2.0.2/COPYING /usr/share/doc/htop-2.0.2/ChangeLog /usr/share/doc/htop-2.0.2/README /usr/share/man/man1/htop.1.gz /usr/share/pixmaps/htop.png

7.

Rpm, список последних установленных пакетов

# rpm -qa —last htop-2.0.2-1.el7.x86_64 Sat 03 Jun 2017 06:20:07 PM MSK

8. Rpm, вывести список всех установленных пакетов

Что-бы получить список всех установленных в системе пакетов, нужно выполнить запрос -qa без дополнительных параметров

# rpm -qa perl-HTML-Parser-3.71-4.el7.x86_64 dracut-network-033-463.el7.x86_64 filesystem-3.2-21.el7.x86_64 .

список пакетов будет довольно большим, для постраничного вывода можно использовать такие утилиты как more или less:

# rpm -qa | more

9. Обновление rpm пакета

Для обновления любого rpm пакета используется опция -U (upgrade). Данная опция не только делает обновление любого пакета до последней версии, но и создает резервную копию старой версии пакета.

Если после обновления что-то пойдет не так и программное обеспечение не заработает, можно будет вернуться на ранее установленную и заведомо рабочую версию.

# rpm -Uvh nx-3.5.0-2.el6.centos.i686.rpm Preparing. ########################################### [100%] 1:nx ########################################### [100%]

10. Удаление rpm пакета

Для удаления пакета предназначена опция -e (erase), опция vv используется для более подробного вывода отладочных сообщений:

# rpm -evv nx

11. Удаление rpm пакета без зависимостей

Параметр —nodeps принудительно удаляет пакет rpm из системы. Имейте в виду, что удаление определенного пакета может нарушить работу других рабочих приложений.

# rpm -ev —nodeps htop

12. Rpm, запросить файл принадлежащий пакету

Если понадобилось узнать какому пакету принадлежит конкретный файл, используется опция -qf (query file):

# rpm -qf /etc/my.cnf mariadb-libs-5.5.52-1.el7.x86_64

13. Rpm, получить информацию об установленном пакете

Что-бы получить развернутую информацию об установленном пакете, используется опция -qi (query info):

# rpm -qi htop Name : htop Version : 2.0.2 Release : 1.el7 Architecture: x86_64 Install Date: Sun 04 Jun 2017 10:20:51 AM MSK Group : Applications/System Size : 212139 License : GPL+ Signature : RSA/SHA256, Sun 24 Jul 2016 09:22:13 PM MSK, Key ID 6a2faea2352c64e5 Source RPM : htop-2.0.2-1.el7.src.rpm Build Date : Sun 24 Jul 2016 01:01:34 PM MSK Build Host : buildvm-26.phx2.fedoraproject.org Relocations : (not relocatable) Packager : Fedora Project Vendor : Fedora Project URL : http://hisham.hm/htop/ Summary : Interactive process viewer Description : htop is an interactive text-mode process viewer for Linux, similar to top(1).

14. Rpm, получить информацию о пакета который еще не установлен

Что-бы получить информацию о пакете который уже скачан, но еще не установлен, можно запросом -qip (query info package):

rpm -qip ./pachage_name.rpm

15. Rpm, посмотреть файлы документации определенного пакета

Запрос -qdf (query document file) выведет список всех файлов документации пакета:
# rpm -qdf /usr/bin/htop /usr/share/doc/htop-2.0.2/AUTHORS /usr/share/doc/htop-2.0.2/COPYING /usr/share/doc/htop-2.0.2/ChangeLog /usr/share/doc/htop-2.0.2/README /usr/share/man/man1/htop.1.gz

16. Проверка определенного rpm пакета

При проверке пакета сравнивается информацию об установленных файлах пакета с базой данных rpm.
# rpm -Vp sqlbuddy-1.3.3-1.noarch.rpm S.5. T. c /etc/httpd/conf.d/sqlbuddy.conf

17. Проверка всех rpm пакетов

# rpm -Va S.5. T. c /etc/rc.d/rc.local . T. c /etc/dnsmasq.conf . T. /etc/ld.so.conf.d/kernel-2.6.32-279.5.2.el6.i686.conf

18. Импорт GPG ключа

Для проверки пакетов RHEL/CentOS/Fedora, нужно импортировать GPG ключ. Для этого выполните следующую команду:

# rpm —import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

19. Rpm, посмотреть все импортированные ключи

# rpm -qa gpg-pubkey* gpg-pubkey-7bd9bf62-5762b5f8 gpg-pubkey-352c64e5-52ae6884 gpg-pubkey-f4a80eb5-53a7ff4b gpg-pubkey-810f8996-552b1d92

20.

Перестроить поврежденную базу данных rpm

Иногда база данных rpm может быть повреждена, при этом rpm не может нормально функционировать. Если подобное случилось, нужно перестроить базу данных rpm:

# cd /var/lib/rpm # rm -f __db.* # rpm —rebuilddb

Источник: vds-admin.ru

️♀️ Как установить / удалить / запросить / обновить RPM пакеты в Linux (Шпаргалка)

RPM – это мощный менеджер программного обеспечения, который можно использовать для создания, установки, запроса, проверки, обновления и удаления отдельных пакетов программного обеспечения.

Пакет RPM состоит из архива файлов и информации о пакете, такой как имя, версия, описание и информация о зависимостях от других пакетов RPM.

RPM – это больше, чем инструмент для Red Hat

Многие другие современные дистрибутивы, такие как Ubuntu и SuSE, также используют RPM.

Преимущества использования RPM включают в себя:

  • Упрощенное распространение, установка, обновление и удаление программного обеспечения
  • Гарантирует, что:
    необходимое программное обеспечение установлено в системе.
    версии обязательного программного обеспечения остаются совместимыми.
    локально модифицированные файлы конфигурации не засоряются при обновлении RPM.
    локально измененные файлы конфигурации сохраняются с суффиксом «.rpmsave», если пакет будет удален позже.
  • Позволяет подтвердить, что установленное программное обеспечение не было изменено, модифицировано, повреждено или изменено каким-либо образом.

RPM хранит информацию об установленных пакетах в каталоге «/var/lib/rpm».

Компоненты инструмента RPM:

  • Пользовательская база данных, содержащая информацию обо всем программном обеспечении, установленном в системе, собранную с отдельных RPM.
  • Исполняемый файл «/bin/rpm».
  • Доступные через Интернет репозитории доступных пакетов RPM.

Типы RPM-пакетов

RPM-пакеты делятся на две категории: исходные и бинарные.

Исходный RPM всегда можно распознать, поскольку имя файла заканчивается строкой “.src.rpm”.

В исходном RPM находятся не только исходные файлы исходного кода программы, но и скрипты, которые позволяют автоматически перекомпилировать код, автоматически устанавливать его и удалять автоматически.

В исходном RPM нет исполняемых файлов конечного пользователя. Обычно только разработчики заинтересованы в RPM с исходным кодом.

Двоичный RPM содержит компоновки конечного пользователя RPM. Имена двоичных файлов RPM идентифицируют архитектуру хоста для содержимого.

Например, двоичный файл RPM:

bash-3.1-16.1.x86_64.rpm

Он содержит файлы, которые можно использовать только на 64-битном процессоре Intel X86.

Другие общие значения архитектуры включают «i386» для 32-разрядных хостов Intel.

Некоторые двоичные RPM-пакеты могут быть установлены на любой архитектуре процессора, потому что их файлы будут работать на любом хосте;

Примером этих пакетов «.noarch.rpm» является RPM «tzdata», который содержит информацию о мировых часовых поясах.

Чтобы обновить вашу систему до последней версии пакета, вам потребуется самая последняя двоичная RPM-версия.

Схема именования RPM

Каждый пакет RPM содержится в одном файле.

Имя файла имеет несколько полей, чтобы полностью идентифицировать содержимое пакета.

Хотя сами инструменты RPM не полагаются на само имя файла, вы должны понимать соглашение об имени файла, чтобы помочь вам определить или загрузить соответствующий пакет. Вот пример имени файла RPM:

bash-3.1-16.1.x86_64.rpm

Этот RPM предназначен для оболочки BASH («/bin/bash»).

Имя файла состоит из нескольких частей:

[name]-[version]-[release].[arch].rpm

  • [name] – это название программы или пакета. [name обычно присваивается автором программы. В нашем примере разработчики решили назвать свой продукт «bash» по причинам, которые показались им забавными.
  • [version] определяет, какая версия программного обеспечения содержит этот RPM. Номер [версии] присваивается автором программы. Использование номера позволяет определить, какая версия авторских источников использовалась для создания RPM.
  • [release] предоставляет номер версии самого файла RPM, а не версию исходных файлов автора. Обновленная RPM может быть выпущена для предоставления исправленной версии оригинального программного обеспечения автора. Патч не обязательно должен быть от оригинального разработчика, поэтому RPM-версия увеличивается вместо [version].
  • [arch] описывает содержимое RPM и сообщает, содержит ли этот файл источник продукта («.src.rpm»), независимые от архитектуры файлы («.noarch.rpm») или файлы, которые могут быть установлены только в определенный тип хоста («.sh.rpm» будет работать только на встроенном процессоре STRONGHOLD).

Примечание:[version] контролируется первоначальным автором, а [release] контролируется тем, кто создал RPM.

Понимание версий RPM

Поля RPM [version] и [release] не всегда строго числовые и могут содержать другие символы, кроме обычных цифр.

Читайте также:
Программа чтобы скачивать видео на телефон на карту памяти

Обычно можно увидеть как версию «10», так и версию «10а» в одном и том же пакете.

Иногда выбрать самую последнюю версию может быть сложно.

Вот как сам RPM сравнивает номера версий и выпусков внутри себя:

1. Удалите префикс [name] и суффикс «. [Arch] .rpm». Например,:
«Bash-3.1-16.1.x86_64.rpm» становится «3.1-16.1», а «bash-3.1-16.5a.1.x86_64.rpm» становится «3.1-16.5a.1»

2. Сравнивайте оставшиеся строки посимвольно слева направо, пока не встретите цифру.

Если символы отличаются, какой бы символ не появился позже в последовательности сопоставления, это более поздние варианты.

3. При обнаружении цифры преобразуйте всю последовательность цифр в одно двоичное число. В нашем примере два символа «16» объединяются в значение шестнадцать (16). Полученные двоичные значения сравниваются, и чем больше значение, тем выше новизна.

Таким образом, RPM с [версией] «0010» является более новым, чем RPM с «версией» «9».

Шаги 2 и 3 повторяются по мере необходимости, пока не произойдет различие.

Установка и удаление файлов

Примечание. Обычно только один или несколько RPM-пакетов могут быть установлены одновременно.

Более поздние версии обычно устанавливаются с использованием функции RPM «-U» (обновление) вместо функции «-i» RPM.

Распространенными исключениями из единственного правила RPM являются RPM ядра.

В системе обычно установлено несколько версий ядер; У RPM есть список, у которых может быть установлено несколько версий.

Чтобы удалить одну версию, когда установлено несколько, необходимо полностью указать имя и версию пакета.

В архитектуре x86_64 обычно устанавливаются как 32-разрядные пакеты «.i386», так и 64-разрядные пакеты «.x86_64», поддерживающие как 32-разрядные, так и 64-разрядные приложения.

Обычно RPM не отображает архитектуру пакета в запросе, но вы можете отобразить его вручную.

Установка и удаление

# rpm -i —install (установить новый RPM; возникнет ошибка, если он уже установлен) # rpm -U —upgrade (удалить существующий RPM, если есть; установить новый) # rpm -F —freshen (обновить RPM, только если пакет уже установлен) # rpm -e —erase (удалить)

Подсказка: никогда, никогда не используйте опцию «-U» для установки нового RPM ядра. Функция обновления «-U» сначала удаляет текущий RPM из системы, а затем пытается установить новый RPM. Любая проблема, которая препятствует установке нового RPM, приведет к тому, что система не будет загружаться. Это не то, что вам нужно, поэтому всегда используйте ключ «-i» для установки RPM ядра.

Запросы (пакеты и / или информация)

Используйте запрос для получения информации об установленных пакетах.

Вы можете запросить все установленные пакеты или один установленный пакет.

Вы также можете узнать, какой RPM предоставляет конкретный файл.

# rpm -q [packages] [information] # rpm -qa (all installed packages) # rpm -q package_name # rpm -qf (filename) # rpm -qp (package filename)

Информация

по умолчанию (имя пакета)
-i: общая информация
-l: список файлов

Примеры

# rpm -qa # rpm -q kernel -i (information) # rpm -q kernel -l (files contained in package) # rpm -q kernel —requires (prereqs) # rpm -q kernel —provides (capabilities provided by package) # rpm -q kernel —scripts (scripts run during installation and removal) # rpm -q kernel —changelog (revision history) # rpm -q kernel -queryformat format (rpm —querytags for list of options)

Подсказка: при поиске определенного пакета RPM, когда точное имя неизвестно, используйте пайп таким образом:

$ rpm -qa | grep foo

Более поздние версии инструмента RPM позволяют сделать это кратко:

$ rpm -qa ‘*foo*’

Запросы – проверка (файлы)

База данных RPM содержит множество атрибутов для каждого файла, установленного RPM.

Вы можете проверить текущее состояние файла по информации, каталогизированной RPM, когда пакет был установлен.

# rpm -V package_name # rpm -Va (verify all) # rpm -Vf (filename) # rpm -Vp (package filename)

Примечание. Во многих дистрибутивах Linux имеется RPM «с предварительной связью», который пытается уменьшить время, необходимое для запуска приложения с использованием общей библиотеки (в большинстве приложений используется как минимум одна общая библиотека и, возможно, десятки), путем добавления специальной информации непосредственно в программный файл приложения.

Добавление этой информации делает запуск приложений быстрее, но изменения файла делают недействительными большинство атрибутов файла в базе данных RPM, таких как дата последнего изменения файла, размер файла и контрольная сумма файла MD5.

Запросы – проверка (пакеты)

# rpm -import /mnt/cdrom/RPM-GPG-KEY # rpm -q gpg-pubkey # rpm —checksig m4-1.4.1-11.i386.rpm
# rpm -qf /path/filename (what package owns filename) # rpm -qf /path/filename -i (what does it do) # rpm -qp m4-1.4.1-11.i386.rpm -l (files in m4) # rpm -qp m4-1.4.1-11.i386.rpm —requires (prereqs needed to install m4) # rpm -q —whatprovides glibc.so (what package provides requisite library)

Восстановить базу данных RPM

Средство RPM использует свою собственную реализацию базы данных для хранения своей информации

. Иногда эта база данных может быть повреждена; симптомы включают заявления об отсутствии установленного пакета RPM; или попытки обновить RPM просто зависают.

Если ваша база данных RPM зависла или повреждена, вы можете попытаться восстановить ее с помощью этих команд. Этот процесс не гарантированно работает.

Вы должны войти в систему с привилегиями суперпользователя (он же «root») для этих действий.

Команды могут быть скопированы и вставлены непосредственно в окно рутового терминала.

1. Убедитесь, что в вашей системе не запущены процессы RPM. Используйте команду ps, чтобы идентифицировать их. Используйте команду kill, чтобы завершить любые процессы «rpm», которые вы найдете; «kill -9» на всякий случай.

2. Удалите файлы блокировки, которые использует RPM:

# rm -f /var/lib/rpm/__db*

3. Если вы испытыли зависание команды «rpm», попробуйте снова.

Если это работает, это все. Если нет, выполните Шаг № 1 и № 2 снова. Затем перейдите к следующему шагу.

4. Сделайте резервную копию вашей базы данных RPM:

# cd /var/lib # mkdir rpm-backup # rsync -av ./rpm/. ./rpm-backup/.

5. Пересоберите свою базу данных RPM:

# rpm -vv —rebuilddb > /tmp/rpmrebuilddb.log 2>https://itisgood.ru/2019/05/31/kak-ustanovit-udalit-zaprosit-obnovit-rpm-pakety-v-linux-shpargalka/» target=»_blank»]itisgood.ru[/mask_link]

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru