Перейти до змісту

Посібник розробника та із упаковки для початківців

Rocky Devtools — це набір домашніх сценаріїв і утиліт, створених членами спільноти Rocky Linux, щоб допомогти з пошуком, створенням, брендингом, виправленням і створенням програмних пакетів, що поширюються разом з операційною системою Rocky Linux. Rocky Devtools складається з rockyget, rockybuild, rockypatch і rockyprep.

На низькому рівні Rocky Devtools — це оболонка для запуску користувальницьких і традиційних програм для різноманітних завдань керування пакетами. Rocky Devtools значною мірою покладається на srpmproc, go, git< /code> і <code>rpmbuild.

Для встановлення та використання інструментів розробника Rocky вам знадобиться сучасна система Linux на базі RPM.

Давайте розглянемо типовий сценарій встановлення та використання devtools.

Залежності

Перш ніж ви зможете почати використовувати інструменти розробника, у системі потрібно кілька пакетів. Ці команди були перевірені на Rocky Linux, але також повинні працювати на CentOS 8 / RHEL 8

dnf install git make golang

1. Завантаження Rocky Devtools

Завантажте архівований вихідний код devtools за такою URL-адресою:

https://github.com/rocky-linux/devtools/archive/refs/heads/main.zip

Тут ми використовуємо команду curl:

curl -OJL https://github.com/rocky-linux/devtools/archive/refs/heads/main.zip

Тепер у вас має бути заархівований архів під назвою devtools-main.zip

2. Встановлення Rocky Devtools

Знайдіть і розпакуйте архів devtools, який ви щойно завантажили.

Тут ми використаємо утиліту командного рядка unzip:

unzip devtools-main.zip

Змініть свій робочий каталог на новий вихідний каталог devtool, який щойно було створено:

cd devtools-main

Запустіть make, щоб налаштувати та скомпілювати інструменти розробника:

make

Встановіть devtools:

sudo make install

3. Використовуйте Rocky Devtools (rockyget) для пошуку та завантаження Source RPM (SRPM)

Після встановлення основною утилітою для пошуку та завантаження SRPM є утиліта rockyget.

Давайте використаємо rockyget, щоб завантажити SRPM для популярного пакету sed:

rockyget sed
Під час першого запуску rockyget він автоматично створить структуру каталогів, яка приблизно імітує структуру сховища серверів збірки Rocky. Наприклад, автоматично буде створено папку ~/rocky/rpms.

Для нашого поточного прикладу sed його джерела зберігатимуться в такій зразковій ієрархії папок:

~rocky/rpms/sed/
└── r8
    ├── SOURCES
    │   ├── sed-4.2.2-binary_copy_args.patch
    │   ├── sed-4.5.tar.xz
    │   ├── sedfaq.txt
    │   ├── sed-fuse.patch
    │   └── sed-selinux.patch
    └── SPECS
        └── sed.spec

Підказка :

Отримавши вихідні коди, можливо, саме час переглянути файл SPECs (~rocky/rpms/sed/SPECS/specs.spec), щоб знайти потенційні можливості дебрендування в даному пакеті. Дебрендінг може включати заміну зображень/логотипів і так далі.

Підказка

Якщо ви шукаєте інші пакунки Rocky для створення та експериментів, ви можете переглянути список пакунків, які наразі не працюють у автоматизованому середовищі збирання Rocky тут - https://kojidev.rockylinux.org/ koji/builds?state=3&order=-build_id

4. Використовуйте Rocky Devtools (rockybuild), щоб створити новий пакет для ОС Rocky

Під капотом rockybuild викликає утиліти rpmbuild і mock для створення вихідного пакета в середовищі chroot для програми, зазначеної в командному рядку. Він покладається на джерела програми та файл RPM SPEC, який було автоматично завантажено за допомогою команди rockyget.

Використовуйте rockybuild для створення утиліти sed:

rockybuild sed

Час, необхідний для завершення процесу/етапу створення, залежить від розміру та складності програми, яку ви намагаєтеся створити.

Наприкінці запуску rockybuild результат, подібний до наведеного тут, вказує на те, що збірка була успішно завершена.

..........
+ exit 0
Finish: rpmbuild sed-4.5-2.el8.src.rpm
Finish: build phase for sed-4.5-2.el8.src.rpm
INFO: Done(~/rocky/rpms/sed/r8/SRPMS/sed-4.5-2.el8.src.rpm) Config(baseos) 4 minutes 34 seconds
INFO: Results and/or logs in: /home/centos/rocky/builds/sed/r8
........

Якщо все піде добре, у каталозі ~/rocky/builds/sed/r8 має бути готовий до Rocky файл SRPM.

~/rocky/rpms/sed/r8/SRPMS/sed-4.5-2.el8.src.rpm

5. Налагодження невдалої збірки пакета

Попередній процес rockybuild створить деякі файли журналу, які можна використовувати для налагодження невдалих збірок програми. Результати та/або журнали процесу збирання зберігаються в ~/rocky/builds/<ІМ'Я ПАКЕТА>/r8. Наприклад ~/rocky/builds/sed/r8

~/rocky/builds/sed/r8
├── build.log
├── hw_info.log
├── installed_pkgs.log
├── root.log
├── sed-4.5-2.el8_3.src.rpm
├── sed-4.5-2.el8_3.x86_64.rpm
├── sed-debuginfo-4.5-2.el8_3.x86_64.rpm
├── sed-debugsource-4.5-2.el8_3.x86_64.rpm
└── state.log

Основними файлами для пошуку підказок щодо причин будь-якої помилки є build.log і root.log. Файл build.log має детально описувати всі помилки збірки, а файл root.log міститиме інформацію про налаштування середовища chroot і процеси демонтажу. За інших рівних умов більшу частину процесу налагодження та усунення несправностей збірки можна виконати за допомогою вмісту файлу build.log.