Детально про rpm

# Linux HowTo (як зробити)
# Книги та керівництва
# Матеріали англійською мовою

Навіщо потрібен rpm

Як уже згадувалося в розділі "Додавання і видалення пакетів", rpm (Redhat Package Manager), щоб виконувати завдання пакетами - установка, видалення, перевірка і т.д.

При установці пакету rpm записує інформацію про нього в свою базу даних, що і дозволяє в подальшому видаляти пакет, переглядати інформацію про нього і т.д.

Такий підхід до встановлення ПО має кілька переваг, зокрема:
  • Уніфікована робота з різними пакетами (зокрема, не треба пам'ятати, куди будь-яка програма поклала при інсталяції свої файли - постійний головний біль в Dos / Windows).
  • Відстеження залежностей між пакетами виконується автоматично (не треба пам'ятати, що програма така-то вимагає якоїсь бібліотеки з версією не нижче якоїсь - порівняйте з вічними проблемами, наприклад, з DirectX в Windows).
  • Несуперечливість між різними пакетами - зокрема, коректно "розлучається" ситуація, коли кілька пакетів містять один і той же файл (наприклад, в / etc /).

Режими роботи rpm

Якщо викликати rpm без параметрів, то він покаже "короткий" список ключів. Зазвичай же формат виклику rpm такий:

rpm -КлючРежіма [додаткові ключі] [параметри]

КлючРежіма, що указується першим, визначає режим роботи. Самі частоїспользуємиє режими перераховані в таблиці.

Основні варіанти виклику rpm

Установку, оновлення і видалення пакетів ми розглянули раніше, тому зараз зупинимося лише на загальних параметрах, отриманні інформації і перевірці.

Ключі та параметри, загальні для різних режимів

В аргументах зазвичай використовується два варіанти посилань на пакети.

Назва_пакунка-пакета.rpm для режимів -i і -U - це повне (з Директорією) ім'я файлу. наприклад,

/RPMS/apache-1.3.3-1.i386.rpm. В принципі, rpm розуміє імена файлів у вигляді ftp-URL, тобто ftp: //сервер/діректорія/файл.rpm. але ними має сенс користуватися тільки в швидкій і надійної мережі (в нашій країні - в локальній). Втім, в локальній мережі (і будь-який швидкої) зручніше користуватися NFS-сервером, якщо він є.

Пакет - це ім'я вже встановленого пакету для режимів -e, -q і -y. Воно може вказуватися як з номером версії, так і без нього. Приклади: acroread-3.01-4. acroread. Якщо замість списку пакетів вказати ключ "-a" (a ll), то це буде означати "все пакети". Крім того, ключ "-f" дозволяє замість імені пакета вказати будь-якої файл, що належить цьому пакету (див. Нижче).

Можна вказувати не один файл-пакета або пакет, а відразу кілька, розділяючи їх пробілами.

Отримання інформації

Команда rpm -q дозволяє отримувати таку інформацію про пакет:
  • Версію пакету.
  • Список файлів.
  • Чого вимагає пакет.
  • Можна дізнатися, до якого пакунку належить файл.

Просто "rpm -qімя-пакета" видає повну назву пакета, разом з версією:

Але найчастіше команда "rpm -q" використовується для отримання списку файлів пакета.

Коротка інформація про пакет - rpm -qi

Команда "rpm -qi" (i nfo) видає зведення інформації про пакет - назва, версія, обсяг і т.д. плюс коротку анотацію:

Де ж був цей файл.

Аналогічно іноді виникає необхідність знайти якийсь файл, ім'я якого пам'ятаєш дуже приблизно, а вже в який він лежить директорії.

Замість того, щоб робити пошук по всьому диску (що дуже довго), можна змусити rpm видати список файлів всіх пакетів (ключ "-al") і відфільтрувати потрібне за допомогою grep. Приклад ( "де там був файл з параметрами залежно від виробу?"):

Шуканий файл в даному прикладі - другий.

Інформація про неінсталлірованном пакеті

Перед установкою нового пакета зазвичай має сенс подивитися інформацію про нього і / або список містяться в ньому файлів.

Отримати інформацію про вміст .rpm-файлу можна, якщо замість імені пакета вказати ключ "-p" (p ackage) і повне ім'я .rpm-файлу, що містить пакет. приклад:

Чого вимагає пакет - rpm -qR

Ключ "-R" (R equirements) дозволяє дізнатися, які пакети і бібліотеки потрібні пакету. Особливо часто це потрібно перед установкою пакета. приклад:

У наведеному вище прикладі видно, що даний пакет встановити не вдасться, як мінімум тому, що встановлена ​​версія пакету gtk + занадто стара.

Команда rpm -y пакет дозволяє порівняти поточний стан файлів пакета з інформацією, записаною в базі даних. Це потрібно, наприклад, при перевірці, не зіпсовані чи якісь важливі для системи файли (таке трапляється після раптового відключення живлення).

При знаходженні відмінностей друкується ключова рядок, з позначенням відмінностей і ім'я файлу, в якому вони знайдені.

Порівнюються наступні параметри: 5 Контрольна сума (підрахована за алгоритмом MD5) S Розмір файлу L Куди вказує символьний лінк (якщо перевіряється файл є симлінк) T Час модифікації D Пристрій (розділ), на якому розташований файл U Власник G Група-власник M Права доступу

Перевірку краще виконувати як "root", так як деякі файли (наприклад, / usr / X11R6 / bin / xterm) можуть бути недоступні на читання іншим користувачам і для них завжди буде видаватися розбіжність по контрольній сумі.

Як видно з цього прикладу, в деяких файлах обов'язково будуть відмінності, оскільки той же / etc / passwd змінюється при створенні і зміні користувачів.

Аналогічно команді rpm -q. rpm -y можна замість імені пакета вказувати "-f файл" або "-a".

Команда rpm -ya корисна для перевірки всієї системи, але її виконання займає багато часу.