Створення RPM пакетів із вихідних джерел

RPM пакети мають власну структуру, відмінну від інших. Але навіщо створювати свої RPM, якщо можна просто скомпілювати вихідні коди? Відповідь на це питання у рутинній установці, а також допомоги розробникам Fedora або іншим дистрибутивам. Встановлюючи щоразу одні й самі програми з вихідних джерел, можна написати скрипт для автоматизації цього, проте, якщо є RPM, то не треба витрачати багато часу на встановлення, так само як і необхідна програма буде постійно доступна онлайн з репозиторію (звичайно ж, якщо ви її туди відправте).

Отже приступимо до підготовки робочого середовища до створення RPM.

# yum groupinstall "Development Tools" # yum install rpmdevtools На цій стадії відбувається встановлення необхідних утиліт та різних бібліотек розробника.

НІКОЛИ НЕ СТВОРЮЙТЕ RPM ВІД ROOT!(це може порушити роботу системи, збільшити можливість злому тощо)

Після закінчення установки, запустіть

rpmdev-setuptree Це призведе до створення гілки директорій BUILD BUILDROOT RPMS SOURCES SPECS SRPMS

З усіх директорій нас цікавить тільки SOURCES SPECS, інформація в інших, якщо все зроблено правильно, згенерується автоматично.

Тепер нам потрібний .spec файл, приклади можна знайти шляхом сточування .src.rpm з репозиторію, після розпакування, буде .spec файл, який необхідно поправити під наші потреби.

Самі вихідники з патчами або без копіюємо в SOURCES.

Коли все готово, запускаємо компілювання та створення RPM

rpmbuild -ba ШЛЯХ/NAME.spec для створення .src.rpm rpmbuild -bi ШЛЯХ/NAME.spec для створення бінарника або просто .rpm

Для встановлення та/або тестування

# rpm -ivh sourcepackage-name*.src.rpm або # rpm -ivh package-name*.rpm Якщо все зробленоправильно, то програма встановиться з попередженням, що rpb database змінена сторонньою програмою (правильно, ми її ще не залили на Fedora сервер).

Пояснення часто використовуваних областей у .spec файлі

Name: Базове ім'я пакета, що відповідає вимогам Packagen Naming Guidelines. Після цього, макрос% звертатиметься до цього розділу.

Version: Номер версії, використовуючи дату у версії, використовуйте формат, мм (приклад 11.02).% для подальшого звернення до цієї галузі.

Release: Має бути1% , таким чином, число буде збільшуватися щоразу, коли створюється пакет для однієї версії дистрибутива.

Summary: Короткий опис пакета.

Group: Існуюча група пакетів, наприклад Applications/Databases.

Щоб дізнатися весь список # less /usr/share/doc/rpm-*/GROUPS Для документації буде відповідно група Documentation.

License: Ліцензія на програму, повинна бути для відкритих вихідних записів, наприклад "GPLv2+" (GPL версії 2 або новіше). Для кількох ліцензій використовуйте "and" або "or" "GPLv2 and BSD". Слід вказувати ліцензію максимально точно, можна вказувати кілька ліцензій за допомогою "and" та "or", наприклад, "GPLv2 and BSD".

URL: Посилання на сайт програми/проекту.

Patch0: Назва першого патча для програми, ім'я файлу має закінчуватися на .patch і лежати в директорії

/rpmbuild/SOURCES. Патч може бути кілька.

BuildArch: Архітектура програми під певні процесори. Для універсальних пакунків "noarch".

BuildRoot: Місце, виділене для компіляції та встановлення вихідних програм під час виконання процесу "%install". За стандартом Fedora, будестворено спеціальну директорію в /var/tmp. Нові версії RPM пропустять це значення і помістять build root в %/BUILDROOT/

BuildRequires: Список необхідних програм для збирання пакета (через кому).Автоматично не визначаються. Деякі стандартні програми можуть бути опущені у цьому списку. Повний список додатків, які можна пропустити тут (https://fedoraproject.org/wiki/Packaging/Guidelines).

Requires: Список необхідних програм для роботи після встановлення (через кому).У більшості випадків автоматично визначаються rpmbuild.

%description: Опис програми, рядки не повинні бути довшими за 80 символів.%prep: Скрипти для підготовки програми, розпакування та підготовки до складання.%build: Скрипти для складання програми, компіляції та підготовки до встановлення.%test: Скрипти для тестування програми виконуються після %build, але до %install.%install: Скрипти для встановлення програми, команди скопіюють файли з "build directory" % (яка знаходиться

/rpmbuild/BUILD) до директорії buildroot %, яка зазвичай знаходиться в /var/tmp.%clean: Інструкції для очищення buildroot, наприклад, rm -rf %%files: Список файлів, що встановлюються.%changelog: Зміни у програмі.

Стаття підготовлена, спираючись на офіційне джерело від Fedora