RPM Guide
Eric Foster-Johnson
Copyright ї 2005 Eric Foster-Johnson
От переводчика:
Данный текст в его исходном варианте выложен Red Hat под лицензией Open Publication License. Надеюсь, что эта лицензия подразумевает возможность самодеятельного перевода с указанием авторов и правообладателей. Если это, паче ожидания, не так, сообщите мне, пожалуйста, об этом на
vlad_goreletsky(at)lexpr.ru
Там, где обсуждается система пакетного менеджмента, обычно употребляется аббревиатура RPM. Там, где речь идет о пакетах или утилите rpm, используется rpm или src.rpm
Замечания по орфографии принимаются. Замечания по стилю не принимаются. Любой из вас может сделать это лучше, если знает как.
В тексте по отношению к оригинальному множество сокращений. Много слов иногда ничего не добавляют к ЗНАНИЮ. Тут возможны претензии, но таков уж мой произвол. Считаю, что потенциальные читатели в основном люди занятые.
Влад Горелецкий
Источник: http://www.lexpr.ru/node/11
Полное руководство Red Hat Package Manager
Раздел 1. Введение в RPM
1.1 Необходимость системы управления пакетами
1.2 Цели разработки RPM
1.2.1 Легкость использования
1.2.2 Ориентирование на понятие "пакет"
1.2.3 Возможность обновления пакетов
1.2.4 Межпакетные зависимости
1.2.5 Возможность запросов
1.2.6 Верификация пакетов
1.2.7 Поддержка различных архитектур
1.2.8 "Чистые" исходные коды
1.3 Терминология RPM
Раздел 2. Обзор RPM
2.1.1 Введение в структуру файла пакета
2.1.2 Формат файла rpm
2.1.3 Бинарные rpm и rpm с исходным кодом
2.2 База данных RPM
2.3 Команды RPM
Раздел 3. Использование RPM
3.1 Утилита rpm
3.2 Установка и обновление пакетов
3.2.1 Режим установки
3.2.2 Режим обновления
3.2.3 Обновление в режиме freshen
3.2.5 Установка через сеть
3.2.6 Установка пакетов с исходным кодом
3.3 Удаление пакетов
3.4 Другие опции rpm
Раздел 4. Использование базы данных RPM
4.1 Запросы к БД RPM
4.1.1 Запросы о пакетах
4.1.3 Как повысить информативность запроса
4.1.4 Какому пакету принадлежит файл?
4.2 Получение информации о пакетах
4.2.1 Описание пакета
4.2.2 Группы пакетов
4.2.3 Список файлов пакета
4.2.4 Список конфигурационных файлов пакета
4.2.5 Список файлов документации пакета
4.2.6 Список статуса файлов пакета
4.2.7 Список скриптов
4.2.8 Список изменений
4.2.9 Комбинирование запросов
4.2.10 Пользовательские запросы
4.2.11 Прочие запросы
4.3 Получение информации из файла rpm-пакета
4.4 Верификация установленных пакетов
4.4.1 Верификация системы в целом
4.4.2 Настройка проверок
4.5 Работа с БД RPM
4.5.1 Создание резервной копии БД RPM
4.5.2 Перестройка БД RPM
4.5.3 Создание новой БД RPM
Раздел 5. Зависимости пакетов
5.1 Введение в концепцию зависимостей
5.1.1 Возможности
5.1.2 Зависимости версий
5.1.3 Конфликты
5.1.4 Неактуальные возможности
5.2.1 Проверка зависимостей вида Requires
5.2.2 Проверка зависимостей вида Provides
5.2.3 Проверка на конфликты
5.2.4 Какой пакет требует данную возможность?
5.2.5 Какой пакет предоставляет данную возможность?
5.3 Триггеры
Раздел 6. Транзакции
6.1 Введение в транзакции
6.1.1 Когда транзакции необходимы
6.1.2 Возврат транзакции
6.2 Транзакции с командой rpm
6.2.1 Идентификаторы транзакций
6.2.2 Откат транзакций
6.3 Сохранение старых пакетов
Раздел 7. Программное обеспечение для управления RPM
7.1 Нахождение программного обеспечения в формате rpm-пакетов
7.1.1 rpmfind и rpm2html
7.2 Сайты, посвященные RPM, в Интернете
7.3 Утилиты расширенного менеджмента пакетов
7.3.1 Yum
7.3.2 Рекомендуемые плагины yum
7.3.3 Графические фронтенды программ управления пакетами
Раздел 8. Создание rpm-пакетов: обзор
8.1 Подготовка к сборке пакета
8.1.1 Планирование - что хотим собрать
8.1.2 Консолидация программного обеспечения
8.1.3 Воспроизводимая сборка ПО
8.1.4 Планирование обновлений
8.1.5 Удовлетворение зависимостей
8.2 Сборка rpm-пакета
8.2.1 Разворачивание структуры директорий
8.2.2 Размещение исходного кода в дереве сборки
8.2.3 Создание spec-файла
8.2.4 Сборка пакета с помощью утилиты rpmbuild
8.2.5 Верификация собранных пакетов
Раздел 9. Работа со spec-файлом
9.1 Чтение spec-файла
9.2 Начинаем создавать spec-файл
9.3 Информация о пакете в spec-файле
9.3.1 Описание пакета
9.3.2 Установка пути сборки
9.3.3 Имена файлов архивов с исходным кодом
9.3.4 Имена патчей
9.4 Контроль сборки
9.4.1 Подготовка к сборке
9.4.2 Сборка ПО
9.4.3 Инсталляция ПО
9.4.4 Очистка после сборки
9.4.5 Определение установочных скриптов
9.5 Заполнение списка файлов
9.5.1 Использование шаблонов
9.5.2 Имена каталогов
9.5.3 Пометка файлов как файлов документации или конфигурационных
9.5.4 Определение атрибутов файлов
9.5.5 Верификация секции %files
9.5.6 Автоматизированное создание списка файлов
9.5.7 Обработка ошибок для неупакованных файлов
9.6 Добавление записей в журнал изменений
9.7 Макросы
9.7.1 Встроенные макросы
9.7.2 Макросы, специфичные для spec-файла
9.7.3 Определение нового макроса
9.7.4 Параметры макросов
9.8 Создание spec-файла в XML формате
Раздел 10. Расширенные возможности RPM
10.1 Зависимости пакета
10.1.1 Имена зависимостей
10.1.2 Установка предварительных требований
10.1.3 Зависимости сборки
10.1.4 Автоматизация создания списка зависимостей
10.2 Установка триггеров
10.3 Написание проверочных скриптов
10.4 Создание субпакетов
10.4.1 Предоставление информации о субпакетах
10.4.2 Скрипты в субпакетах
10.4.3 Сборка субпакетов
10.5 Создание пакетов с переопределяемыми путями
10.5.1 Задание префикса
10.5.2 Редактирование секции files
10.5.3 Проблемы создания пакетов с переопределяемыми путями
10.6 Условная сборка
10.6.1 Условные макросы
10.6.2 Условные блоки
10.6.3 Архитектурно-зависимые условия
Раздел 11. Контролирование сборки с помощью утилиты rpmbuild
11.1.1 Настройка сборки
11.1.2 Тестирование сборки
11.1.3 Отладка сборки
11.1.4 Очистка
11.1.5 Сборка для других платформ
11.2 Сборка rpm-пакетов без внешнего spec-файла
11.2.1 Опции rpmbuild для работы с tar-архивами
11.2.2 Ожидаемая структура архива
11.3 Работа с пакетами, содержащими исходный код (src.rpm)
11.3.1 Пересборка бинарных пакетов из src.rpm
11.3.2 Перекомпиляция бинарных пакетов из src.rpm
11.4 Подписывание собранных пакетов
11.4.1 Проверка установки программного обеспечения GPG
11.4.2 Конфигурирование подписи
11.4.3 Подписывание пакетов с помощью утилиты rpmbuild
11.4.4 Подписывание с помощью утилиты rpm
11.4.5 Верификация подписей
11.4.6 Импорт публичного ключа
Раздел 12. Вспомогательное программное обеспечение сборщика пакетов
12.1.1 Использование плагинов vim для облегчения редактирования spec-файлов
12.1.2 Добавление функций с помощью emacs-плагина rpm-spec-mode
12.1.3 Отладка spec-файла с помощью rpmlint
12.1.4 Использование rpm2cpio для извлечения файлов из нагрузки пакетов
Раздел 13. Пакетостроение - генеральная линия партии или колхоз "Светлый путь"
13.1 Наука о граблях - как избегать повторения наиболее общих ошибок
13.1.1 Просматривайте тематические рассылки
13.1.2 Используйте rpmbuild
13.1.3 Не пытайтесь победить систему
13.1.4 Отключите автоматическую генерацию зависимостей
13.1.5 Не помещайте в секцию %files каталоги
13.1.6 Разомкните циклические зависимости
13.2 Наука об изучении опыта передовиков производства. Следуйте лучшей практике
13.2.1 Передовой опыт: подготовка к сборке
13.2.2 Передовой опыт: сборка
Раздел 14. Автоматизация операций RPM с помощью скриптов
14.1 Скриптинг
14.2 Отличительные черты скриптовых языков
14.3 Как определить, когда нужна программа, а когда - скрипт?
14.4 Основы shell-скриптинга
14.4.1 Создание скрипта
14.4.2 Запуск скрипта
14.4.3 Проблемы при запуске скрипта
14.4.4 Преобразование скрипта в команду
14.4.5 Передача параметров в скрипт
14.5 Файлы в rpm-пакетах
14.6 Запросы к БД RPM
14.6.1 Запрос списка пакетов, установленных единовременно
14.6.2 Чтение html-документации о пакете
Раздел 15. Программирование RPM на C
15. Программирование RPM на C
15.1.1 Установка окружения для C-программирования
15.1.2 Установка окружения программирования RPM
15.1.3 Использование библиотеки RPM
15.1.4 Компиляция и линковка RPM программ
15.1.5 Получение информации о RPM окружении
15.2 Мощь popt
15.2.1 Псевдонимы popt
15.2.2 Программирование с popt
15.2.3 Обработка ошибок
15.2.4 Работающий пример
15.2.5 Обработка опций командной строки rpm
15.3 Работа с rpm-файлами
15.3.1Открытие rpm-файла
15.3.2 Чтение начального идентификатора rpm и сигнатуры
15.3.3 Чтение хэдера
15.3.4 Короткий путь к информации хэдера
15.3.5 Закрытие rpm-файла
15.4 Программирование с БД RPM
15.4.1 Итераторы БД
15.4.2 Сет зависимости
15.5 Сравнение rpm-файла и установленного пакета
Раздел 16. Программирование RPM на Python
16.1.1 Установка окружения для программирования на Python
16.1.2 Использование Python в графических приложениях
16.2 Иерархия Python API
16.3 Программирование с БД RPM
16.3.1 Доступ к БД RPM
16.3.2 Запросы к БД RPM
16.3.3 Работа с хэдером пакета
16.3.4 Запросы о конкретных пакетах
16.3.5 Вывод информации о пакетах
16.3.6 Уточнение запросов
16.4 Чтение файлов пакетов
16.4.1 Чтение хэдера из файла пакета
16.4.2 Установка флагов верификации
16.5 Сравнение зависимостей
16.6 Установка и обновление пакетов
16.6.1 Построение сета транзакции
16.6.2 Элементы транзакции
16.6.3 Проверка и переопределение порядка элементов транзакции
Раздел 17. Программирование RPM на Perl
17. Программирование RPM на Perl
17.1 Получение и использование RPM-модулей Perl
17.2 Работа с rpm-файлами
17.2.1 Открытие rpm-файла
17.2.2 Получение значений полей хэдера из файла пакета
17.2.3 Удобные методы
17.2.4 Вывод имени и версии
17.2.5 Проверка, является ли файл пакета пакетом с исходными кодами
17.3 Работа с БД RPM
17.3.1 Открытие БД RPM
17.3.2 Поиск пакетов
17.3.3 Обход списка пакетов
17.3.4 Дополнительные функции поиска
17.3.5 Получение информации о пакетах
17.3.6 Сравнение версий
17.3.7 Закрытие БД
Раздел 18. Использование RPM в не-Red Hat Линуксах
18.1 О проблемах установки rpm-пакетов в не-Red Hat Линуксах
18.1.1 Версии системы RPM
18.1.2 Разделение ПО по пакетам
18.1.3 Зависимости
18.1.4 Пути установки
18.1.5 Если ничего не помогает, соберите пакет из исходников
18.2 Решение проблем сборки пакетов
18.2.1 Создание пакетов, специфичных для конкретного дистрибутива
18.2.2 Работа с автоматической генерацией зависимостей
18.2.3 Работа с различающимися макросами
18.2.4 Создание пакетов с переопределимыми путями
18.2.5 Построение окружения сборки RPM
18.3 Работа с не-rpmbased дистрибутивами и утилита alien
18.4 Стандартизация RPM
Раздел 19. Использование RPM в других операционных системах
19.1 Запуск RPM на других операционных системах
19.1.1 Получение RPM для целевой системы
19.1.2 Запуск RPM под Windows
19.2 Разворачивание RPM на других операционных системах
19.2.1 Скачивание кода
19.2.2 Извлечение ПО
19.2.3 Информация в файле INSTALL
19.2.4 Библиотеки, необходимые RPM
19.2.5 Инструменты для сборки RPM
19.2.6 Сборка RPM
19.2.7 Решение проблем
19.3 Установка и настройка системы RPM
19.3.1 Разворачивание БД RPM
19.3.2 Создание окружения RPM
19.4 Создание rpm-пакетов для не-Linux систем
19.4.1 Настройка окружения сборки
19.4.2 Кросс-сборка пакетов
Раздел 20. Изменение поведения RPM
20.1 Настройка поведения с помощью RPM-макросов
20.1.1 Определение макросов
20.1.2 Пользовательские макросы
20.2 Конфигурирование RPM
20.2.1 Просмотр текущих установок
20.2.2 Расположение rpmrc-файлов
20.2.3 Изменение установок
20.3 Добавление псевдонимов popt
20.3.1 Определение псевдонимов
20.3.2 Пользовательские псевдонимы
Раздел 21. Справочник по командам RPM
21.1.1 Команда rpm в режиме запросов
21.1.2 Команда rpm в режимах установки и обновления (upgrade, freshen, install)
21.1.3 Команда rpm в режиме удаления
21.1.4 Команда rpm в режиме подписи
21.1.5 Команда rpm в режиме верификации
21.1.6 Команда rpm в режиме работы с БД RPM
21.1.7 Разные опции
21.2.1 Утилита rpmbuild. Сборка посредством указания spec-файла
21.2.2 Утилита rpmbuild. Сборка из tar-архива
21.2.3 Пересборка пакетов из пакетов с исходным кодом
21.2.4 Изменение хода сборки
Раздел 22. Синтаксис spec-файла
22.1 Поля, содержащие информацию о пакете
22.1.1 Комментарии
22.1.2 Параметры сборки
22.1.3 Поля, содержащие информацию о зависимостях
22.1.4 Файлы с исходным кодом
22.2.1 Макросы определения переменных
22.2.2 Макросы условий
22.2.3 Встроенные макросы
22.3.1 Подготовка к сборке
22.3.2 Сборка
22.3.3 Установка
22.3.4 Очистка
22.3.5 Скрипты стадий установки и удаления
22.4 Файлы
22.4.1 Создание пакетов с переопределимыми путями
22.5 Журнал изменений
Раздел 23. Эволюция функциональности RPM
23 Эволюция функциональности RPM
Раздел 24. Формат файла rpm-пакета
24.1 Файл пакета
24.1.1 Начальный идентификатор
24.1.2 Подпись
24.1.3 Хэдер
24.1.3.1 Поля хэдера
24.1.3.2 Скрытые поля хэдера
24.1.3.3 Поля подписи
24.1.3.4 Поля для установочной информации
24.1.3.5 Поля информации о файлах
24.1.3.6 Поля зависимостей
24.1.4 Нагрузка
Раздел 25. Ресурсы, посвященные RPM
25.1.1 Сайт rpm.org
25.1.2 Сайты для поиска пакетов rpm
25.1.3 Сайты, посвященные утилитам RPM
Как не относящиеся к делу пропущены разделы 26 - Текстовые редакторы и вспомогательные средства разработки в Linux, 27 - Лицензирование RPM (текст GPL)
Ветка форума, в которой обсуждается данная работа