The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

[Linux] Поиск информации об RPM-пакетах (rpm linux install upgrade)


<< Предыдущая ИНДЕКС Поиск в статьях src Установить закладку Перейти на закладку Следующая >>
Ключевые слова: rpm, linux, install, upgrade,  (найти похожие документы)
From: Lomash Dmitry <[email protected]> Subject: [Linux] Поиск информации об RPM-пакетах Перевод статьи - Lomash Dmitry <[email protected]> 1.12.00 Оригинал доступен на сервере LinuxRSP.Ru (Все об операционной системе Linux на русском языке) http://www.linuxrsp.ru/ Курс молодого бойца. Поиск информации об rpm-пакетах с использованием механизма конвейера и команды grep. Данная статья является авторским переводом оригинальной статьи "Piping rpm output with the help of grep" с веб-сайта [1]www.techproguild.com Очень часто появляется необходимость узнать номер релиза большого числа пакетов в системе Linux. Скажем, к примеру, Вы не уверены какую версию GNOME Вы используете. При помощи команд rpm, grep, механизма конвейера, и пары ключей Вы сможете очень быстро это выяснить. При написании данной статьи, автор использовал систему управления пакетами Red Hat (в более частом использовании RPM) совместно с мощной командой поиска grep для обращения к базе данных rpm. Эти две команды (rpm и grep) объединяются для совместного использования, этот метод называется конвейером и обозначается ( | ). Начало Синтаксис команд выглядит следующим образом: rpm -qa | grep PACKAGE_NAME При рассмотрении составных частей данной команды, мы видим, что grep использует данные полученные при запросе (ключ q) ко всем (ключ a) вхождениям в базу rpm пакета PACKAGE_NAME. Хотя данная конструкция не отображает все возможности команды, она дает начальные понятия их использования. Пример Допустим, мы хотим посмотреть какие пакеты установлены для GNOME. Если использовать следующую конструкцию: rpm -qa | grep gnome вы вероятно получите нечто следующего вида: [jwallen@giles jwallen]$ rpm -qa | grep gnome sawfish-gnome-0.28.1-0_helix_2 gnome-pin-conduits-1.2.0-0_helix_1 gnome-games-devel-1.2.0-0_helix_1 gnome-audio-1.0.0-7 gnome-audio-extra-1.0.0-7 gnome-linuxconf-0.23-1 ...................................... [часть текста пропущена] Как видно из примера, на экран выведены все пакеты, содержащие слово gnome. Это иллюстрирует очевидное ограничение - не все пакеты, которые необходимы пакету GNOME содержат слово gnome. Например, GNOME зависит от большого числа библиотек, таких как gtk. Для нахождения всех установленных компонентов gtk введите команду rpm -qa| grep gtk: [jwallen@giles jwallen]$ rpm -qa | grep gtk pygtk-libglade-0.6.4-1 rep-gtk-libglade-0.11-0_helix_2 gtk-1.0.3-1 gtk+10-1.0.6-6 pygtk-0.6.3-1 gtk+-1.2.7-1_helix_2 gtk-engines-0.10-1_helix_2 gtk+-devel-1.2.7-1_helix_1 Очевидно, что предложенная система - это лишь небольшая помощь для нахождения всех пакетов, которые имеют зависимости от других пакетов. Тем не менее, конвейер rpm и grep поможет Вам найти номера релизов и имена необходимых Вам пакетов. Заключение Хотя приведенная система имеет небольшие ограничения в возможностях, она, однако, жизнеспособна и имеет своих приверженцев. Она может успешно использоваться для нахождения установленных пакетов и номеров их релизов! Что ещё должен знать молодой боец о rpm и grep. Хотелось бы сделать несколько дополнений к статье "Поиск информации об rpm-пакетах с использованием механизма конвейера и команды grep". Бывает, что нужно найти пакеты, начинающиеся на определённую последовательность символов, например, на xe: $ rpm -qa | grep ^xe xemacs-21.1.8-4mdk xemacs-info-21.1.8-4mdk xemacs-extras-21.1.8-4mdk xearth-1.0-5mdk xemacs-X11-21.1.8-4mdk Часто программа требует отсутствующую библиотеку. Чтобы определить, в каком rpm-пакете из дистрибутива находится нужный файл, можно создать список файлов во всех rpm в дистрибутиве: $ find /mnt/cdrom/Mandrake/RPMS -name "*.rpm" -exec rpm -qpil {} >> list \; Команда find находит на CD в каталоге Mandrake/RPMS все rpm-пакеты, и для каждого из них запускает команду rpm с параметрами qpil. Параметр q обозначает запрос о пакете, p - показывает, что речь идёт о неустановленном пакете, i - запрашивает информацию, и l - запрашивает список файлов. Вывод направляется в файл list. В этом файле мы имеем описания пакетов и списки их файлов. Теперь можем попробовать найти требуемый файл, например, FvwmAuto.1.bz2: $ grep -B100 FvwmAuto.1.bz2 list | less Команда grep найдёт в файле list строку, содержащую название нужного файла, и выведет её и 100 строк перед ней, в которых наверняка будет название пакета, содержащего файл FvwmAuto.1.bz2, и вывод будет направлен в текстовый вьюер less. Можно сделать даже так: $ grep -B150 FvwmAuto.1.bz2 list | grep Name Name═══════ : ftp═════════════════════════ Relocations: (not relocateable) Name═══════ : fvwm════════════════════════ Relocations: (not relocateable) Name═══════ : fvwm2═══════════════════════ Relocations: (not relocateable) Тут команда grep найдёт строку с именем файла, выведет 150 строк перед ней, и вывод будет направлен в следующий grep, который выделит строки, содержащие имена пакетов. Последнее выведенное имя и будет именем необходимого пакета. Ali Albakov guldur at transit.samara.net

<< Предыдущая ИНДЕКС Поиск в статьях src Установить закладку Перейти на закладку Следующая >>

 Добавить комментарий
Имя:
E-Mail:
Заголовок:
Текст:




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру