Опубліковано 19 липня19 лип Адміністратор Що таке RPM взагалі?Допустимо, є файл wood.png , і його потрібно встановити /usr/share/wallpapers/ . Це робить файл RPM. Це такий архів, усередині якого створені папки "usr", у ній - "share", у ній - "wallpapers", у ній - wood.png. При установці він копіює wood.png у /usr/share/wallpapers.Підготуємо те, що упаковуватимемоПакувати можна що завгодно. Давайте для прикладу візьмемо просту програму мовою bash . Bash є у всіх (що ми вводимо в термінал, це насправді команди bash), він простий, тому візьмемо саме його. Вона виводитиме " Привіт з RPM, Пінгвінус! ". Напишемо її: створимо файл під назвою hello-pingvinus і вставимо туди ось цей текст:#!/usr/bin/env bash echo 'Привет из RPM, Пингвинус!'Перший рядок каже, що треба запускати через bash, а другий друкує наш текст у консоль. Перевіримо:Зробимо файл виконуваним: chmod +x hello-pingvinusЗапустимо: ./hello-pingvinusУ консолі побачимо висновок " Привіт із RPM, Пінгвінус! ". Після встановлення створеного за цією статтею пакета RPM можна буде вводити в термінал "hello-pingvinus" і отримувати даний висновок.Створимо SPEC файлСаме SPEC файл вказує як саме збирати RPM і містить інформацію про пакет. Створимо файл hello-pingvinus.spec. Про пункти поясню нижче.Name: hello-pingvinus Version: 1.0 Release: 1.opensuse Summary: Prints a greeting to the console Summary(ru): Выводит в консоль приветствие License: MIT Source0: hello-pingvinus.tar BuildArch: noarch URL: https://pingvinus.ru Requires: bash %description A simple program that prints "Привет из RPM, Пингвинус!" to the console. %description -l ru Простая программа, которая выводит "Привет из RPM, Пингвинус!" в консоль. %prep %setup -q -n hello-pingvinus %install mkdir -p %{buildroot}/usr/bin cp hello-pingvinus %{buildroot}/usr/bin %files /usr/bin/hello-pingvinusName – ім'я пакета.Version – версія програми.Release — версія пакета RPM. Якщо програму (навіть із безліччю випусків за багаторічну історію) пакують у RPM вперше — ставлять одиницю. Після неї за бажанням можна поставити крапку та назву дистрибутива, особливо якщо є кілька RPM-файлів для різних дистрибутивів, щоб знати, де який.Summary - короткий опис пакета в одну коротку пропозицію. Пишеться як правило англійською.Summary(ru) - Summary російською мовою. Якщо у користувача російська локаль – він побачить саме його. Аналогічно можна й інших мов.License – назва ліцензії Вашої програми. Наприклад MIT, GPLv2 тощо.Source0 - архів з якого будемо збирати програму. Поки не зважайте, він буде наступним пунктом.BuildArch – архітектура Вашого пакету. Оскільки пакет, який містить лише просту bash-комманду, не залежить від конкретної архітектури на кшталт x86_64 або ARM, працюючи скрізь — ставимо noarch.URL – посилання на сайт Вашої програми.Requires – залежності. Для цього пакета можна було нічого не писати, оскільки bash є скрізь, але для більш складних програм тут вказуються залежності.На цьому шапка скінчилася. Далі – секції.%description - довгий опис, на відміну від короткого Summary. Можна різними мовами за прикладом російської.%setup - розпаковує файли з архіву для якого в наступному пункті. -q - не показує виведення розпакування архіву, -n - прапор після якого ім'я папки в архіві, яка містить файли та головне, SPEC-файл.%prep — підготовка до збирання RPM.%install — Створення збірної папки з файлами. Потрібно знати, що щоб ввести в термінал наприклад "hello-pingvinus" або будь-яку іншу команду, треба, щоб у папці /usr/bin/ був файл з такою назвою. Тому створюємо ці папки і копіюємо наш файл з кодом «hello-pingvinus» туди.%files — перераховує файли, які потрібно включити в RPM пакет. Якщо ми скопіювали в секції %install файл у збірну папку, але в секції %files він не перерахований - у RPM він не потрапить.Створення TAR архівуНайпростіший спосіб створити RPM - створити архів TAR, в якому одна головна папка (в даному випадку - hello-pingvinus), яка містить:SPEC файл,Файли програми (у разі — hello-pingvinus).Робимо. Думаю писати як це зробити не треба – будь-який менеджер архівів із середовища робочого столу це вміє. Щоб перевірити – відкрийте менеджер архівів; якщо там папка "hello-pingvinus", а в ній два наші файли - все правильно. Якщо там одразу 2 файли (в корені архіву, а не в hello-pingvinus - неправильно).Упаковка в RPMНастав час нарешті створити RPM. Встановимо утиліту rpmbuild (шукаємо в репозиторії) та вводимо в термінал наступну команду:rpmbuild -tb hello-pingvinus.tar --define "_topdir $PWD"На виході отримаємо наш файл RPM. Він має бути у папці RPMS/noarch/. Пробуємо встановити. Можна через графічний інтерфейс, а можна і через dnf чи zypper:dnf : sudo dnf install./hello-pingvinus-1.0-1.opensuse.noarch.rpmzypper : sudo zypper install ./hello-pingvinus-1.0-1.opensuse.noarch.rpmЯкщо все успішно встановилося, при введенні в консоль hello-pingvinus отримаємо " Привіт із RPM, Пінгвінус! ".
Для публікації повідомлень створіть обліковий запис або авторизуйтесь