Створення rpm пакета з вихідних
Спосіб установки пакетів з вихідних за допомогою make install має кілька недоліків, а саме це пізніше заважає оновлень, засмічує систему, ускладнює контроль версій ПЗ і т.д. У багатьох дистрибутивах Лінукс для управління ПО використовується RPM (Red Hat Package Manager), який дозволяє встановлювати, видаляти і оновлювати програмне забезпечення.
У цій статті ми розглянемо спосіб збирання rpm пакетів з вихідних. Збірку пакету будемо виробляти в дистрибутиві RHEL6, а в якості початкових кодів використовувати keepalived-1.2.15.tar.gz
RPM-пакети діляться на пакети з вихідними кодами - src.rpm і пакети, готові до установки -% .rpm. У src.rpm пакетах міститься вихідний тарболл (исходник програми), будь-які інші вихідні, пачті і найголовніший spec-файл, який керує процесом складання. Всі ці файли упаковані в cpio архів. Коли ви спробуєте увійти в src.rpm пакет за допомогою файлового менеджера mc, ви його побачите. Також в пакеті присутній деякі файли з інформацією.
У% .rpm-пакетах міститься cpio-архів з файлами, які після установки разложатся за відповідними каталогами, файли інформації і настановні скрипти.
Збирати пакети можна з-під будь-якого користувача. Робити це з-під root'а не рекомендується, тому що є ймовірність, що коренем для секції інсталяції виявиться каталог / і тоді команда rm -rf% видалить кореневі файли. Також буває, що «криві» пакети не правильно виконують інсталяцію, і ставляться не в тимчасовий каталог, а прямо кудись в% (/ usr). Частина файлів в цьому випадку може бути втрачена, хоча на працездатності пакета на цій машині це не позначиться.
Створимо для зборки пакета користувача testrpm:
Для складання пакетів необхідна наявність утиліти rpmbuild. Встановимо її:
В домашній директорії необхідно створити структуру каталогів, яку ми будемо испльзовать для зборки пакета. Зробити це можна двома способами. Безпосередньо створивши каталоги:
Або ж скориставшись командою rpmdev-setuptree (входить в пакет rpmdevtools):
Розміщуємо файл з кодами keepalived-1.2.15.tar.gz в папці
Далі необхідно створити або відредагувати .spec файл, в якому описаний процес і параметри збірки rpm-пакету. В архіві з файлами keepalived-1.2.15.tar.gz вже є приклад .spec файлу:
Пояснення часто використовуваних областей в .spec файлі
/ Rpmbuild / SOURCES. Патчів може бути кілька.
BuildRoot: Місце, виділене для компіляції і установки початкових кодів програми під час виконання процесу «% install».
BuildRequires: Список необхідних додатків для зборки пакета (через кому). Автоматично не визначаються.
Requires: Список необхідних додатків для роботи після установки (через кому). У більшості випадків визначаються автоматично rpmbuild.
.escription: Опис програми, рядки не повинні бути довшими 80 символів.
% Prep: Скрипти для підготовки програми, розпакування і підготовки до складання.
% Build: Скрипти для збірки програми, компіляції та підготовки до установки.
% Install: Скрипти для установки програми, команди скопіюють файли з «build directory»% (яка знаходиться
/ Rpmbuild / BUILD) в директорію buildroot%, яка обино знаходиться в / var / tmp.
% Clean: Інструкції для очищення buildroot, наприклад,
rm -rf%
% Files: Список встановлюваних файлів.
% Changelog: Зміни в програмі.
Ми відредагуємо тільки шлях до установочних файлів:
Коли все готово, запускаємо компіляція і створення RPM:
В результаті буде створений .rpm пакет і .src.rpm
Встановити пакет в систему можна командою: