Получение информации
Команда rpm -q позволяет получать следующую информацию
о пакете:
- Версию пакета.
- Список файлов.
- Чего требует пакет.
- Можно узнать, какому пакету принадлежит указанный файл.
Просто "rpm -qимя-пакета" выдает полное название
пакета, вместе с версией:
bobby:~% rpm -q gcc
gcc-2.7.2.3-14
bobby:~% _
|
Но чаще всего команда "rpm -q" используется для
получения списка файлов пакета.
Краткая информация о пакете -- rpm -qi
Команда "rpm -qi" (info) выдает сводку
информации о пакете -- название, версия, объем и т.д., плюс краткую
аннотацию:
bobby:~% rpm -qi xjewel
Name : xjewel Distribution: Manhattan
Version : 1.6 Vendor: Red Hat Software
Release : 9 Build Date: Thu Aug 13 05:51:53 1998
Install date: Wed Dec 9 21:00:59 1998 Build Host: porky.redhat.com
Group : X11/Games/Video Source RPM: xjewel-1.6-9.src.rpm
Size : 50289 License: MIT
Packager : Red Hat Software <bugs@redhat.com>
Summary : Game like Sega's columns
Description :
Jewel is a game much like Domain/Jewelbox which is a puzzle game like
Tetris.
It is played by controling the motion of blocks which continue to fall from
the top of the screen. One can move them left and right, as well as
rotate the jewel segements. The object is to get the most points before
the grim reaper ends the fun.
bobby:~% _
|
Список файлов пакета -- rpm -ql
Для получения списка файлов используется ключ "-l"
(list):
bobby:~% rpm -ql xjewel
/etc/X11/wmconfig/xjewel
/usr/X11R6/bin/xjewel
/usr/X11R6/man/man1/xjewel.1x
/var/lib/games/xjewel.scores
bobby:~% _
|
Поскольку некоторые пакеты содержат очень большое количество файлов,
то стоит отправлять вывод от rpm -ql команде
less:
rpm -ql gcc | less
Для получения "полной" информации о пакете (аннотации и списка
файлов) можно указать ключи "-i" и "-l" одновременно:
bobby:~% rpm -qil xjewel
Name : xjewel Distribution: Manhattan
Version : 1.6 Vendor: Red Hat Software
Release : 9 Build Date: Thu Aug 13 05:51:53 1998
Install date: Wed Dec 9 21:00:59 1998 Build Host: porky.redhat.com
Group : X11/Games/Video Source RPM: xjewel-1.6-9.src.rpm
Size : 50289 License: MIT
Packager : Red Hat Software <bugs@redhat.com>
Summary : Game like Sega's columns
Description :
Jewel is a game much like Domain/Jewelbox which is a puzzle game like
Tetris.
It is played by controling the motion of blocks which continue to fall from
the top of the screen. One can move them left and right, as well as
rotate the jewel segements. The object is to get the most points before
the grim reaper ends the fun.
/etc/X11/wmconfig/xjewel
/usr/X11R6/bin/xjewel
/usr/X11R6/man/man1/xjewel.1x
/var/lib/games/xjewel.scores
bobby:~% _
|
Какому пакету принадлежит файл
Часто возникает необходимость узнать, какому пакету принадлежит
какой-то файл (например, чтобы знать, где искать к нему документацию).
Для этого можно воспользоваться ключом "-f" (file):
bobby:~% rpm -qf /etc/dosemu.users
dosemu-0.98.1-2
bobby:~% _
|
При этом надо указывать полное имя файла -- с директорией. Кроме
того, если к файлу есть "несколько путей" (из-за символьных линков на
директории), то следует указывать "основной" (обычно тот, который без
символьных линков), иначе rpm не сможет дать ответ:
bobby:~% ls -ld /usr/X11 /usr/X11R6
lrwxrwxrwx 1 root root 5 Dec 9 20:44 /usr/X11 -> X11R6
drwxr-xr-x 8 root root 1024 Jan 19 05:14 /usr/X11R6
bobby:~% rpm -qf /usr/X11/lib/X11/app-defaults/GV
file /usr/X11/lib/X11/app-defaults/GV is not owned by any package
bobby:~% rpm -qf /usr/X11R6/lib/X11/app-defaults/GV
gv-3.5.8-5
bobby:~% _
|
Вообще-то действие ключа "-f" не ограничивается простым
запросом "скажи кому принадлежит файл". Этот ключ позволяет другим
способом сослаться на пакет, т.е. вместо имени пакета указать один из
принадлежащих ему файлов. Так, команды
rpm -qif /etc/zshenv
и
rpm -qi zsh
эквивалентны.
А как там назывался пакет...
Иногда возникает такая ситуация: примерно помнишь, как назывался
некий пакет, но только примерно (а мало ли где в имени были заглавные
буквы, где маленькие, где дефисы...). В этой ситуации можно заставить
rpm выдать список всех пакетов (ключ "-a") и найти
нужное при помощи grep. Пример ("как назывались пакеты,
содержащие netscape?"):
bobby:~% rpm -qa | grep netscape
netscape-communicator-4.08-1
netscape-common-4.08-1
bobby:~% _
|
Другой пример ("к чему там относится afterstep?"):
bobby:~% rpm -qa | grep -i after
AfterStep-1.5-0.7
AfterStep-APPS-1.5-0.3
bobby:~% _
|
Где же был этот файл...
Аналогично иногда возникает необходимость найти некий файл, имя
которого помнишь весьма приблизительно, а уж в какой он лежит
директории...
Вместо того, чтобы делать поиск по всему диску (что очень долго),
можно заставить rpm выдать список файлов всех пакетов (ключ
"-al") и отфильтровать нужное при помощи grep. Пример
("где там был файл с параметрами разных мониторов?"):
bobby:~% rpm -qal | grep -i monitors
/usr/X11R6/share/Xconfigurator/MonitorsDB
/usr/X11R6/lib/X11/doc/Monitors
bobby:~% _
|
Искомый файл в данном примере -- второй.
Информация о неинсталлированном пакете
Перед установкой нового пакета обычно имеет смысл посмотреть
информацию о нем и/или список содержащихся в нем файлов.
Получить информацию о содержимом .rpm-файла можно, если вместо имени
пакета указать ключ "-p" (package) и полное имя
.rpm-файла, содержащего пакет. Пример:
bobby:~% rpm -qip /net/rdist/dist/contrib/libc6/i386/x11amp-0.65r2-1.i386.rpm
Name : x11amp Distribution: (none)
Version : 0.65r2 Vendor: (none)
Release : 1 Build Date: Fri Mar 13 16:09:25 1998
Install date: (not installed) Build Host: fallenAngel.intrak.tuke.sk
Group : X11/Applications Source RPM: x11amp-0.65r2-1.src.rpm
Size : 349571 License: Not GPL, please read http:
//www.x11amp.ml.org/source.html
Summary : mp3 player for X windows
Description :
This player will have the same features as the original winamp from Windows
95 but it will of course feature some specials only available for the linux
version. Some features that are already included are: Nice file requester,
Seeking in files, Volume/Balance, Shuffle play, Repeat play, Playlist
editor, Spectrum Analyzer, Realtime Playing.
bobby:~% _
|
Чего требует пакет -- rpm -qR
Ключ "-R" (Requirements) позволяет узнать, какие
пакеты и библиотеки требуются пакету. Особенно часто это требуется
перед установкой пакета. Пример:
bobby:~% rpm -qRp /net/rdist/dist/contrib/libc6/i386/x11amp-0.9-alpha2-2.i386.rpm
gtk+ >= 1.1.13
ld-linux.so.2
libX11.so.6
libXext.so.6
libc.so.6
libdl.so.2
libgdk-1.1.so.13
libglib-1.1.so.13
libgmodule-1.1.so.13
libgtk-1.1.so.13
libm.so.6
libpthread.so.0
libx11amp.so.0
bobby:~% rpm -q gtk+
gtk+-1.0.6-3
bobby:~% _
|
В вышеприведенном примере видно, что данный пакет установить не
удастся, как минимум потому, что установленная версия пакета gtk+
слишком старая.
Проверка
Команда rpm -y пакет позволяет сравнить
текущее состояние файлов пакета с информацией, записанной в базе
данных. Это требуется, например, при проверке, не испорчены ли
какие-нибудь важные для системы файлы (такое случается после внезапного
отключения питания).
При нахождении различий печатается ключевая строка, с обозначением
отличий и имя файла, в котором они найдены.
Сравниваются следующие параметры:
- 5
- Контрольная сумма (подсчитанная по алгоритму MD5)
- S
- Размер файла
- L
- Куда указывает символьный линк (если проверяемый файл является симлинком)
- T
- Время модификации
- D
- Устройство (раздел), на котором расположен файл
- U
- Владелец
- G
- Группа-владелец
- M
- Права доступа
Проверку лучше выполнять как "root", так как некоторые файлы
(например, /usr/X11R6/bin/xterm) могут быть недоступны на
чтение другим пользователям и для них всегда будет выдаваться
несовпадение по контрольной сумме.
Пример:
bobby:~# rpm -y setup
S.5....T c /etc/exports
S.5....T c /etc/printcap
S.5....T c /etc/securetty
S.5....T c /etc/services
bobby:~# _
|
Как видно из этого примера, в некоторых файлах обязательно будут
отличия, поскольку тот же /etc/passwd изменяется при создании
и изменении пользователей.
Аналогично команде rpm -q, rpm -y можно
вместо имени пакета указывать "-f файл" или "-a".
Команда rpm -ya полезна для проверки всей системы, но ее
исполнение занимает много времени.