Команда rpm хороша не только для установки ПО. Правильное удаление пакетов настолько же частая операция, нуждающаяся в автоматизации.
Для удаления пакетов используется опция -e. Основной синтаксис следующий:
# rpm e xcopilot
Используется имя файла без версии и постфиксов. Если установлено несколько версий одноименного пакета, а такое бывает, потребуется указать кандидата на удаление точнее:
# rpm e jikes-1.16-1
Для выполнения этих и других подобных действий необходимы права суперпользователя.
Команда удаления, так же как и команды установки, поддерживает опцию —test. Если от пакета зависит большое число установленного ПО, можно проверить, какие приложения и библиотеки утратят свою работоспособность:
# rpm e —test syslinux
error: Failed dependencies:
syslinux is needed by (installed) mkbootdisk-1.4.8-1
3.3.1 Был ли удален пакет?
Используя режим запросов, можно проверить, был ли пакет уже установлен. Но также можно проверить, был ли пакет удален. Например:
# rpm -q jikes
# rpm -e jikes-1.16-1
package jikes is not installed
3.3.2 Удаление списка пакетов одной командой
Можно удалить группу пакетов, сформировав список в командной строке:
Опция —allmatches заставит rpm удалить все пакеты, имена которых содержат шаблон, заданный администратором в командной строке. Если более, чем один пакет соответствует шаблону, а опция не указана, работа будет завершена с сообщением об ошибке удаления.
Опция —nodeps позволяет удалить пакет даже в том случае, если в системе все еще есть зависящие от него пакеты. Использование этой и ей подобных опций может разрушить систему.
Опция —repackage позволит собрать удаляемые пакеты в rpm-пакет, который появится в директории для таких пакетов. По умолчанию это /var/spool/repackage. Пакет, построенный с помощью опции —repackage не является полноценным пакетом и его нельзя установить.
Подобно режиму установки для удаления можно использовать опции —noscripts и —notriggers. Помимо —noscripts также можно применить —nopreun и —nopostun. Соответственно, —nopreun отменяет выполнение скриптов перед удалением пакета, а —nopostun — скриптов, которые должны были отработать после удаления. Также сходным образом применяется опция —notriggers, или раздельно —notriggerun или —notriggerpostun.
Источник
🏋️♀️ Как установить / удалить / запросить / обновить 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:
Он содержит файлы, которые можно использовать только на 64-битном процессоре Intel X86.
Другие общие значения архитектуры включают «i386» для 32-разрядных хостов Intel.
Некоторые двоичные RPM-пакеты могут быть установлены на любой архитектуре процессора, потому что их файлы будут работать на любом хосте;
Примером этих пакетов «.noarch.rpm» является RPM «tzdata», который содержит информацию о мировых часовых поясах.
Чтобы обновить вашу систему до последней версии пакета, вам потребуется самая последняя двоичная RPM-версия.
Схема именования RPM
Каждый пакет RPM содержится в одном файле.
Имя файла имеет несколько полей, чтобы полностью идентифицировать содержимое пакета.
Хотя сами инструменты RPM не полагаются на само имя файла, вы должны понимать соглашение об имени файла, чтобы помочь вам определить или загрузить соответствующий пакет. Вот пример имени файла RPM:
Этот RPM предназначен для оболочки BASH («/bin/bash»).
Имя файла состоит из нескольких частей:
[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 не отображает архитектуру пакета в запросе, но вы можете отобразить его вручную.
Установка и удаление
Подсказка: никогда, никогда не используйте опцию «-U» для установки нового RPM ядра. Функция обновления «-U» сначала удаляет текущий RPM из системы, а затем пытается установить новый RPM. Любая проблема, которая препятствует установке нового RPM, приведет к тому, что система не будет загружаться. Это не то, что вам нужно, поэтому всегда используйте ключ «-i» для установки RPM ядра.
Запросы (пакеты и / или информация)
Используйте запрос для получения информации об установленных пакетах.
Вы можете запросить все установленные пакеты или один установленный пакет.
Вы также можете узнать, какой RPM предоставляет конкретный файл.
Информация
по умолчанию (имя пакета) -i: общая информация -l: список файлов
Примеры
Подсказка: при поиске определенного пакета RPM, когда точное имя неизвестно, используйте пайп таким образом:
Более поздние версии инструмента RPM позволяют сделать это кратко:
Запросы – проверка (файлы)
База данных RPM содержит множество атрибутов для каждого файла, установленного RPM.
Вы можете проверить текущее состояние файла по информации, каталогизированной RPM, когда пакет был установлен.
Примечание. Во многих дистрибутивах Linux имеется RPM «с предварительной связью», который пытается уменьшить время, необходимое для запуска приложения с использованием общей библиотеки (в большинстве приложений используется как минимум одна общая библиотека и, возможно, десятки), путем добавления специальной информации непосредственно в программный файл приложения.
Добавление этой информации делает запуск приложений быстрее, но изменения файла делают недействительными большинство атрибутов файла в базе данных RPM, таких как дата последнего изменения файла, размер файла и контрольная сумма файла MD5.
Запросы – проверка (пакеты)
Восстановить базу данных RPM
Средство RPM использует свою собственную реализацию базы данных для хранения своей информации
. Иногда эта база данных может быть повреждена; симптомы включают заявления об отсутствии установленного пакета RPM; или попытки обновить RPM просто зависают.
Если ваша база данных RPM зависла или повреждена, вы можете попытаться восстановить ее с помощью этих команд. Этот процесс не гарантированно работает.
Вы должны войти в систему с привилегиями суперпользователя (он же «root») для этих действий.
Команды могут быть скопированы и вставлены непосредственно в окно рутового терминала.
1. Убедитесь, что в вашей системе не запущены процессы RPM. Используйте команду ps, чтобы идентифицировать их. Используйте команду kill, чтобы завершить любые процессы «rpm», которые вы найдете; «kill -9» на всякий случай.
2. Удалите файлы блокировки, которые использует RPM:
3. Если вы испытыли зависание команды «rpm», попробуйте снова.
Если это работает, это все. Если нет, выполните Шаг № 1 и № 2 снова. Затем перейдите к следующему шагу.
4. Сделайте резервную копию вашей базы данных RPM:
Источник
Linux rpm удаление пакета
RPM имеет пять основных режимов работы (не считая создания пакета): установка, удаление, обновление, анализ и проверка. Этот раздел содержит описание каждого режима. Чтобы получить полное описание всех подробностей и параметров, попробуйте выполнить rpm —help или обратиться к разделу 15.5 Дополнительные ресурсы .
Прежде чем воспользоваться пакетами RPM, вы должны знать, где их найти. Поисковые машины в Интернете знают о множество хранилищ RPM, но если вы ищете пакеты RPM, созданные компанией Red Hat, обратитесь к следующим источникам:
Компакт-диски Red Hat Enterprise Linux
Страница обновлений Red Hat, расположенная по адресу http://www.redhat.com/apps/support/errata/ .
Список зеркал FTP-сервера Red Hat, опубликованный по адресу http://www.redhat.com/download/mirror.html
Сеть Red Hat Network — Подробнее о ней вы узнаете в главе 17 Red Hat Network
Обычно файлы, содержащие пакеты RPM, имеют имена вроде foo-1.0-1.i386.rpm . Имя файла включает название пакета ( foo ), версию ( 1.0 ), выпуск ( 1 ) и архитектуру ( i386 ). Чтобы установить пакет, войдите в систему под именем root и введите в приглашении оболочки следующую команду:
rpm -Uvh foo-1.0-1.i386.rpm
Если установка пройдёт успешно, на экране появится следующее:
Как вы видите, RPM выводит имя пакета, а затем, по мере установки пакета, последовательность символов «решётка», отражающую процесс установки.
При установке или обновлении пакета автоматически проверяется подпись пакета. Эта подпись подтверждает то, что пакет был подписан разработчиком и не был изменён. Например, если при проверке подписи происходит ошибка, вы получите примерно следующее сообщение:
error: V3 DSA signature: BAD, key ID 0352860f
Если это новая подпись только для заголовка появляется такое сообщение:
error: Header V3 DSA signature: BAD, key ID 0352860f
Если у вас не установлен ключ, подходящий для проверки подписи, сообщение об ошибке содержит слово NOKEY , например:
warning: V3 DSA signature: NOKEY, key ID 0352860f
За дополнительными сведениями о проверке подписи пакета обратитесь к разделу 15.3 Проверка подписи пакета .
Предупреждение
Если вы устанавливаете пакет ядра, вместо этой команды следует использовать rpm -ivh . За подробностями обратитесь к главе 37 Обновление ядра вручную .
Установка пакетов должна выполняться просто, но иногда вы можете встретить ошибки:
Если пакет той же версии уже установлен, вы увидите:
Preparing. ########################################### [100%] package foo-1.0-1 is already installed
Если версия пакета, который вы пытаетесь установить, совпадает с версией уже установленного, но вы, тем не менее, хотите установить пакет, вы можете указать параметр —replacepkgs и RPM проигнорирует эту ошибку:
rpm -ivh —replacepkgs foo-1.0-1.i386.rpm
Этот параметр полезен, если файлы, установленные из пакета RPM, были удалены или вы не хотите, чтобы были установлены оригинальные файлы конфигурации RPM.
Если вы пытаетесь установить пакет, который содержит файл, установленный другим пакетом или более ранней версий того же пакета, на экране появляется сообщение:
Preparing. ########################################### [100%] file /usr/bin/foo from install of foo-1.0-1 conflicts with file from package bar-2.0.20
Чтобы RPM игнорировал эту ошибку, укажите параметр —replacefiles :
rpm -ivh —replacefiles foo-1.0-1.i386.rpm
Пакеты RPM могут по сути зависеть от других пакетов, что означает, что для их нормальной работы необходимо установить другие пакеты. Если вы попытаетесь установить пакет с неразрешёнными зависимостями, вы увидите примерно следующее:
error: Failed dependencies: bar.so.2 is needed by foo-1.0-1 Suggested resolutions: bar-2.0.20-3.i386.rpm
Если вы устанавливаете пакет с набора компакт-дисков Red Hat Enterprise Linux CD-ROM, обычно вам предлагается название пакета, необходимого для разрешения зависимости. Найдите предлагаемый пакет(ы) на компакт-дисках Red Hat Enterprise Linux или на FTP-сайте Red Hat (или зеркале) и добавьте его в команду:
rpm -ivh foo-1.0-1.i386.rpm bar-2.0.20-3.i386.rpm
Если установка обоих пакетов прходит успешно, на экран выводится примерно следующее:
Если система не предлагает пакет для разрешения зависимости, вы можете попробовать параметр —redhatprovides , чтобы определить, какой пакет содержит требуемый файл. Для использования этого параметра вам потребуется установить пакет rpmdb-redhat .
rpm -q —redhatprovides bar.so.2
Если пакет, содержащий bar.so.2 , есть в установленной базе данных из пакета rpmdb-redhat , вы увидите название этого пакета:
Чтобы выполнить установку, нарушив зависимости (что не рекомендуется делать, так как пакет может работать некорректно), воспользуйтесь параметром —nodeps .
Удаление пакета выполняется также просто, как и его установка. Введите в приглашении оболочки следующую команду:
Замечание
Обратите внимание, здесь используется имя пакета foo , а не имя файла оригинального пакета foo-1.0-1.i386.rpm . Чтобы удалить пакет, замените foo действительным именем первоначального пакета.
Вы можете столкнуться с нарушением зависимости при удалении пакета, если другой установленный пакет зависит от пакета, который вы пытаетесь удалить. Например:
error: Failed dependencies: foo is needed by (installed) bar-2.0.20-3.i386.rpm
Чтобы заставить RPM игнорировать эту ошибку и удалить пакет, что может привести к поломке пакета, зависящего от него, используйте параметр —nodeps .
Обновление пакета похоже на его установку. Введите в приглашении оболочки следующую команду:
rpm -Uvh foo-2.0-1.i386.rpm
В процессе обновления пакета RPM автоматически удаляет все старые версии пакета foo . В действительности, вы можете всегда использовать параметр -U для установки пакетов, так как он работает, даже если предыдущая версия пакета не установлена.
Подсказка
Не стоит использовать параметр -U для установки пакетов ядра, так как при этом RPM заменит предыдущий пакет ядра. Это не влияет на работающую систему, но если после следующей перезагрузки запустить новое ядро не удастся, никакого другого ядра для загрузки вместо него не будет.
Параметр -i добавляет ядро в меню загрузчика GRUB ( /etc/grub.conf ). Подобным образом, при удалении старого, ненужного ядра, запись этого ядра удаляется из GRUB.
Так как RPM выполняет умное обновление пакетов с файлами конфигурации, вам может встретиться подобное сообщение:
saving /etc/foo.conf as /etc/foo.conf.rpmsave
Это сообщение означает, что изменения файла конфигурации могут оказаться не совместимыми снизу вверх с новым файлом конфигурации, входящим в пакет, поэтому RPM сохранил ваш первоначальный файл и установил новый. Вы должны проанализировать различия между двумя файлами конфигурации и разобраться с ними как можно скорее, чтобы ваша система смогла продолжить нормальную работу.
Обновление в самом деле представляет собой комбинацию удаления и установки, поэтому во время обновления RPM вы можете встретить ошибки и удаления, и установки, плюс ещё одну. Если RPM считает, что вы пытаетесь обновить пакет с более старой версией, он сообщает примерно следующее:
package foo-2.0-1 (which is newer than foo-1.0-1) is already installed
Чтобы, несмотря на это, принудительно обновить пакет, укажите параметр —oldpackage :
rpm -Uvh —oldpackage foo-1.0-1.i386.rpm
Освежение пакета похоже на его обновление. Введите в приглашении оболочки следующую команду:
rpm -Fvh foo-1.2-1.i386.rpm
Получив указание освежить пакет, RPM сравнивает версию пакетов, заданных в командной строке с версией пакетов, установленных в системе. Если в параметрах RPM указан пакет с версией новее установленного пакета, он обновляется до более новой версии. Однако, указание RPM освежить версию не будет работать, если пакет с таким именем не был установлен ранее. Этим данным параметр и отличается от параметра обновления, так как при обновлении пакеты устанавливаются вне зависимости от того, была ли установлена старая верия пакета.
RPM может выполнить эту операцию как для одного пакета, так и для групп пакетов. Если вы только что загрузили много разнообразных пакетов и хотите обновить только установленные в системе, «освежение» пакетов — именно то, что вам нужно. Если вы освежаете пакеты, перед использованием RPM вы можете не удалять ненужные пакеты из загруженной группы пакетов.
В этом случае выполните следующую команду:
RPM автоматически обновит только уже установленные пакеты.
Чтобы обратиться к базе данных установленных пакетов, используйте команду rpm -q . Команда rpm -q foo выводит название пакета, версию и номер выпуска установленного пакета foo :
Замечание
Чтобы запросить информацию о пакете, замените foo действительным именем пакета.
Вместо указания имени пакета используйте следующие параметры команды -q для указания запрашиваемого пакета (ов). Эти параметры называются Параметрами выбора пакета .
-a запрашивает все установленные пакеты.
-f запрашивает пакет, к которому относится файл . Указывая файл, вы должны определить полный путь к файлу (например, /bin/ls ).
Указать параметры запроса можно разными способами. Следующие параметры определяют тип искомой информации. Они называются Параметрами запроса информации .
-i отображает информацию о пакете, включая имя, описание, выпуск, размер, дату сборки, дату установки, производителя и другую разнообразную информацию.
-l выводит список файлов, содержащихся в пакете.
-s выводит состояние всех файлов в пакете.
-d выводит список файлов, помеченных как документация (страницы man, info, файлы README, и т.д.).
-c выводит список файлов, помеченных как файлы конфигурации. Таковыми считаются файлы, изменяемые вами после установки при настройке пакета в вашей системе (например, sendmail.cf , passwd , inittab и т.д.).
Добавьте для параметров, выводящих списки файлов, команду -v и вы получите списки в знакомом формате ls -l .
При проверке пакета информация о файлах, установленных из пакета, сравнивается с информацией из оригинального пакета. Помимо прочего, при такой проверке проверяется размер, сумма MD5, разрешения, тип, владелец и группа владельца каждого файла.
Проверку пакета выполняет команда rpm -V . Вы можете указать пакет, который хотите проверить, используя любой из перечисленных параметров выбора пакета . Простым примером проверки является команда rpm -V foo , которая проверяет, что все файлы пакета foo находятся там, куда они были изначально установлены. Например:
Чтобы проверить пакет, содержащий конкретный файл, выполните:
rpm -Vf /usr/bin/vim
Чтобы проверить ВСЕ установленные пакеты:
Чтобы сравнить установленный пакет с файлом RPM-пакета:
rpm -Vp foo-1.0-1.i386.rpm
Эта команда может быть полезна, если вы сомневаетесь в целостности баз данных RPM.
Если проверка проходит успешно, никакие сообщения на экран не выводятся. В случае обнаружения каких-либо нарушений, вы увидите сообщения об этом. Для каждого несоответствия на экран будет выведена строка из восьми символов ( c обозначает файл конфигурации), а затем имя файла. Каждый из восьми символов обозначает результат сравнения одного атрибута файла со значением атрибута, записанного в базе данных RPM. Единственная точка ( . ) означает, что тест пройден. Следующие символы обозначают ошибки при выполнении определённых проверок:
5 — контрольная сумма MD5
L — символическая ссылка
T — дата изменения файла
M — режим (включая разрешения и тип файла)
? — файл не удалось прочитать
Если вы увидели такие сообщения, вы должны решить, будете ли вы удалять или переустанавливать пакет, или исправлять проблему другим способом.