Посібник розробника та із упаковки для початківців¶
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 тут
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.