πŸ“š ПАМЯВКА: Π‘Π±ΠΎΡ€ΠΊΠ° ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² локально Π½Π° ROSA Linux

ВСрсия: для ROSA 13
Π€ΠΎΡ€ΠΌΠ°Ρ‚ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ²: RPM
Π˜Π½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚Ρ‹: rpmbuild, meson, cmake, make


1. πŸ”§ ΠŸΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠ° окруТСния

Π¨Π°Π³ 1.1: УстановитС инструмСнты для сборки

sudo dnf install -y rpm-build rpmdevtools wget git
ΠŸΠ°ΠΊΠ΅Ρ‚ΠΠ°Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅
rpm-buildΠ‘Π°Π·ΠΎΠ²Ρ‹Π΅ инструмСнты сборки RPM
rpmdevtoolsΠ£Ρ‚ΠΈΠ»ΠΈΡ‚Ρ‹ для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² (rpmdev-setuptree, etc.)
wget / curlΠ—Π°Π³Ρ€ΡƒΠ·ΠΊΠ° исходников
gitΠ Π°Π±ΠΎΡ‚Π° с рСпозиториями

Π¨Π°Π³ 1.2: Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ структуру Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΉ

rpmdev-setuptree

Π­Ρ‚ΠΎ создаст ΡΡ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½ΡƒΡŽ структуру Π² ~/rpmbuild/:

~/rpmbuild/
β”œβ”€β”€ BUILD/          # Распаковка ΠΈ компиляция исходников
β”œβ”€β”€ BUILDROOT/      # ВрСмСнная корнСвая систСма для установки
β”œβ”€β”€ RPMS/           # Π“ΠΎΡ‚ΠΎΠ²Ρ‹Π΅ Π±ΠΈΠ½Π°Ρ€Π½Ρ‹Π΅ ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ (.rpm)
β”œβ”€β”€ SOURCES/        # Π˜ΡΡ…ΠΎΠ΄Π½Ρ‹Π΅ Π°Ρ€Ρ…ΠΈΠ²Ρ‹, ΠΏΠ°Ρ‚Ρ‡ΠΈ, ΠΈΠΊΠΎΠ½ΠΊΠΈ
β”œβ”€β”€ SPECS/          # Spec-Ρ„Π°ΠΉΠ»Ρ‹ (инструкции сборки)
└── SRPMS/          # Π˜ΡΡ…ΠΎΠ΄Π½Ρ‹Π΅ ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ (.src.rpm)

Π¨Π°Π³ 1.3: ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° структуры

ls -la ~/rpmbuild/

2. πŸ“ Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΉ (ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ)

ДирСкторияНазначСниСЧто Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ
SOURCES/Π˜ΡΡ…ΠΎΠ΄Π½Ρ‹Π΅ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Ρ‹.tar.gz, .patch, .desktop, .png
SPECS/Π˜Π½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΠΈ сборки.spec Ρ„Π°ΠΉΠ»Ρ‹
BUILD/Рабочая ΠΎΠ±Π»Π°ΡΡ‚ΡŒΠΠ²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π΅ΡΠΊΠΈ создаётся ΠΏΡ€ΠΈ сборкС
BUILDROOT/ΠŸΡΠ΅Π²Π΄ΠΎΠΊΠΎΡ€Π΅Π½ΡŒΠΠ²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π΅ΡΠΊΠΈ создаётся ΠΏΡ€ΠΈ сборкС
RPMS/Π“ΠΎΡ‚ΠΎΠ²Ρ‹Π΅ ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹.rpm Ρ„Π°ΠΉΠ»Ρ‹ (Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚)
SRPMS/Π˜ΡΡ…ΠΎΠ΄Π½Ρ‹Π΅ ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹.src.rpm (для ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠΌ)

3. πŸ“„ Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ spec-Ρ„Π°ΠΉΠ»Π°

Π¨Π°Π³ 3.1: Π¨Π°Π±Π»ΠΎΠ½ spec-Ρ„Π°ΠΉΠ»Π°

Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ Ρ„Π°ΠΉΠ» ~/rpmbuild/SPECS/имя-ΠΏΠ°ΠΊΠ΅Ρ‚Π°.spec:

nano ~/rpmbuild/SPECS/myapp.spec

Π¨Π°Π³ 3.2: ΠœΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ шаблон

# ========== Π—ΠΠ“ΠžΠ›ΠžΠ’ΠžΠš ==========
Name:           myapp
Version:        1.0.0
Release:        1
Summary:        ΠšΡ€Π°Ρ‚ΠΊΠΎΠ΅ описаниС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹
License:        GPLv2
Group:          Applications/Other
URL:            https://example.com/myapp
Source0:        %{name}-%{version}.tar.gz

# ========== Π—ΠΠ’Π˜Π‘Π˜ΠœΠžΠ‘Π’Π˜ ==========
# Для сборки (Π½Π΅ Π²ΠΎΠΉΠ΄ΡƒΡ‚ Π² Π³ΠΎΡ‚ΠΎΠ²Ρ‹ΠΉ ΠΏΠ°ΠΊΠ΅Ρ‚)
BuildRequires:  meson
BuildRequires:  ninja
BuildRequires:  gtk3-devel

# Для запуска (Π²ΠΎΠΉΠ΄ΡƒΡ‚ Π² зависимости ΠΏΠ°ΠΊΠ΅Ρ‚Π°)
Requires:       gtk3
Requires:       lib64gtk3.0_0

# ========== ΠžΠŸΠ˜Π‘ΠΠΠ˜Π• ==========
%description
ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΠ΅ описаниС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Π§Ρ‚ΠΎ ΠΎΠ½Π° Π΄Π΅Π»Π°Π΅Ρ‚,
для Ρ‡Π΅Π³ΠΎ ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π°, основныС возмоТности.

# ========== ΠŸΠžΠ”Π“ΠžΠ’ΠžΠ’ΠšΠ ==========
%prep
%setup -q
# Π—Π΄Π΅ΡΡŒ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΏΠ°Ρ‚Ρ‡ΠΈ:
# %patch -p1 -i %{SOURCE1}

# ========== Π‘Π‘ΠžΠ ΠšΠ ==========
%build
%meson
%meson_build

# ========== Π£Π‘Π’ΠΠΠžΠ’ΠšΠ ==========
%install
%meson_install

# ========== ЀАЙЛЫ ==========
%files
%{_bindir}/myapp
%{_datadir}/applications/*.desktop
%{_datadir}/icons/hicolor/*/apps/*.png
%doc README.md LICENSE
%{_mandir}/man1/*.1*

# ========== БКРИПВЫ ==========
%post
%desktop_database_update
%icon_theme_cache_update

%postun
%desktop_database_update
%icon_theme_cache_update

# ========== ЖУРНАЛ Π˜Π—ΠœΠ•ΠΠ•ΠΠ˜Π™ ==========
%changelog
* Fri Mar 20 2026 Your Name <your@email.com> - 1.0.0-1
- Initial build for ROSA Linux

Π¨Π°Π³ 3.3: ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ поля Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ°

ΠŸΠΎΠ»Π΅ΠžΠΏΠΈΡΠ°Π½ΠΈΠ΅ΠŸΡ€ΠΈΠΌΠ΅Ρ€
NameИмя ΠΏΠ°ΠΊΠ΅Ρ‚Π° (строчныС Π±ΡƒΠΊΠ²Ρ‹, Π±Π΅Π· ΠΏΡ€ΠΎΠ±Π΅Π»ΠΎΠ²)myapp
VersionВСрсия ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹1.0.0
ReleaseНомСр сборки ΠΏΠ°ΠΊΠ΅Ρ‚Π°1
SummaryΠšΡ€Π°Ρ‚ΠΊΠΎΠ΅ описаниС (ΠΎΠ΄Π½Π° строка)Мой ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅
LicenseЛицСнзияGPLv2, MIT, BSD
GroupΠ“Ρ€ΡƒΠΏΠΏΠ° ΠΏΠ°ΠΊΠ΅Ρ‚Π°Applications/Other
URLΠ‘Π°ΠΉΡ‚ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°https://example.com
Source0Π˜ΡΡ…ΠΎΠ΄Π½Ρ‹ΠΉ Π°Ρ€Ρ…ΠΈΠ²%{name}-%{version}.tar.gz

4. πŸš€ ΠŸΡ€ΠΎΡ†Π΅ΡΡ сборки

Π¨Π°Π³ 4.1: ΠŸΠΎΠΌΠ΅ΡΡ‚ΠΈΡ‚Π΅ исходники Π² SOURCES

cd ~/rpmbuild/SOURCES
wget https://example.com/myapp-1.0.0.tar.gz

Π¨Π°Π³ 4.2: ЗапуститС сборку

cd ~/rpmbuild/SPECS
rpmbuild -ba myapp.spec
ΠšΠ»ΡŽΡ‡ΠžΠΏΠΈΡΠ°Π½ΠΈΠ΅
-baΠ‘Π±ΠΎΡ€ΠΊΠ° Π±ΠΈΠ½Π°Ρ€Π½ΠΎΠ³ΠΎ + исходного ΠΏΠ°ΠΊΠ΅Ρ‚Π°
-bbВолько Π±ΠΈΠ½Π°Ρ€Π½Ρ‹ΠΉ ΠΏΠ°ΠΊΠ΅Ρ‚
-bsВолько исходный ΠΏΠ°ΠΊΠ΅Ρ‚
-biВолько установка (%install)
-bcВолько компиляция (%build)

Π¨Π°Π³ 4.3: ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚

# Π“ΠΎΡ‚ΠΎΠ²Ρ‹Π΅ ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹
ls -lh ~/rpmbuild/RPMS/x86_64/*.rpm

# Π˜ΡΡ…ΠΎΠ΄Π½Ρ‹ΠΉ ΠΏΠ°ΠΊΠ΅Ρ‚
ls -lh ~/rpmbuild/SRPMS/*.src.rpm

Π¨Π°Π³ 4.4: УстановитС ΠΏΠ°ΠΊΠ΅Ρ‚

sudo dnf install ~/rpmbuild/RPMS/x86_64/myapp-1.0.0-1.x86_64.rpm

5. πŸ” ΠŸΠΎΠ»Π΅Π·Π½Ρ‹Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹

ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° ΠΈ ΠΎΡ‚Π»Π°Π΄ΠΊΠ°

# ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ spec-Ρ„Π°ΠΉΠ» Π½Π° ошибки
rpmlint ~/rpmbuild/SPECS/myapp.spec

# ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Π³ΠΎΡ‚ΠΎΠ²Ρ‹ΠΉ ΠΏΠ°ΠΊΠ΅Ρ‚
rpmlint ~/rpmbuild/RPMS/x86_64/myapp-*.rpm

# ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ зависимости ΠΏΠ°ΠΊΠ΅Ρ‚Π°
rpm -qpR ~/rpmbuild/RPMS/x86_64/myapp-*.rpm

# ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ Ρ„Π°ΠΉΠ»Ρ‹ Π² ΠΏΠ°ΠΊΠ΅Ρ‚Π΅
rpm -qlp ~/rpmbuild/RPMS/x86_64/myapp-*.rpm

# ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ ΠΏΠ°ΠΊΠ΅Ρ‚Π΅
rpm -qip ~/rpmbuild/RPMS/x86_64/myapp-*.rpm

Поиск зависимостСй

# Найти ΠΏΠ°ΠΊΠ΅Ρ‚ ΠΏΠΎ ΠΈΠΌΠ΅Π½ΠΈ
dnf search Π½Π°Π·Π²Π°Π½ΠΈΠ΅

# Найти ΠΏΠ°ΠΊΠ΅Ρ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ прСдоставляСт Ρ„Π°ΠΉΠ»
dnf provides /usr/bin/ΠΊΠΎΠΌΠ°Π½Π΄Π°

# Найти development-ΠΏΠ°ΠΊΠ΅Ρ‚
dnf search Π½Π°Π·Π²Π°Π½ΠΈΠ΅ | grep devel

# ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ установлСнныС ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹
rpm -qa | grep Π½Π°Π·Π²Π°Π½ΠΈΠ΅

Π Π°Π±ΠΎΡ‚Π° с pkg-config

# ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ
pkg-config --exists названиС && echo "НайдСно" || echo "НС найдСно"

# Π£Π·Π½Π°Ρ‚ΡŒ Π²Π΅Ρ€ΡΠΈΡŽ
pkg-config --modversion Π½Π°Π·Π²Π°Π½ΠΈΠ΅

# Π£Π·Π½Π°Ρ‚ΡŒ Ρ„Π»Π°Π³ΠΈ компиляции
pkg-config --cflags Π½Π°Π·Π²Π°Π½ΠΈΠ΅

# Π£Π·Π½Π°Ρ‚ΡŒ Ρ„Π»Π°Π³ΠΈ Π»ΠΈΠ½ΠΊΠΎΠ²ΠΊΠΈ
pkg-config --libs Π½Π°Π·Π²Π°Π½ΠΈΠ΅

# Найти .pc Ρ„Π°ΠΉΠ»
find /usr -name "Π½Π°Π·Π²Π°Π½ΠΈΠ΅*.pc" 2>/dev/null

ΠžΡ‡ΠΈΡΡ‚ΠΊΠ°

# ΠžΡ‡ΠΈΡΡ‚ΠΈΡ‚ΡŒ BUILD (освобоТдаСт мСсто)
rm -rf ~/rpmbuild/BUILD/*

# ΠžΡ‡ΠΈΡΡ‚ΠΈΡ‚ΡŒ BUILDROOT
rm -rf ~/rpmbuild/BUILDROOT/*

# ΠžΡ‡ΠΈΡΡ‚ΠΈΡ‚ΡŒ кэш dnf
sudo dnf clean all

6. ❌ ЧастыС ошибки ΠΈ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ

Ошибка 1: НСудовлСтворённыС зависимости сборки

ошибка: НСудовлСтворСнныС зависимости сборки:
        gtk3-devel Π½ΡƒΠΆΠ΅Π½ для myapp-1.0.0-1.x86_64

РСшСниС:

# Найти ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠ΅ имя ΠΏΠ°ΠΊΠ΅Ρ‚Π°
dnf search gtk3 | grep devel

# Π£ΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ
sudo dnf install lib64gtk3.0-devel

# Π—Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ сборку снова
rpmbuild -ba myapp.spec

Ошибка 2: Ѐайл нС найдСн в %files

ошибка: Ѐайл нС найдСн: /home/teo/rpmbuild/BUILDROOT/.../usr/bin/myapp

РСшСниС:

  1. ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅, ΠΊΡƒΠ΄Π° Ρ€Π΅Π°Π»ΡŒΠ½ΠΎ ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°ΡŽΡ‚ΡΡ Ρ„Π°ΠΉΠ»Ρ‹:
   # Π’Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ Ρ„Π°ΠΉΠ»ΠΎΠ²
   # Π”ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ Π² ΠΊΠΎΠ½Π΅Ρ† spec-Ρ„Π°ΠΉΠ»Π°:
   %define _missing_doc_files_terminate_build 0
  1. Или ΠΈΡΠΏΡ€Π°Π²ΡŒΡ‚Π΅ список Π² %files

Ошибка 3: Архив распаковываСтся Π² Π΄Ρ€ΡƒΠ³ΡƒΡŽ ΠΏΠ°ΠΏΠΊΡƒ

cd: myapp-1.0.0: No such file or directory

РСшСниС:

# Π£Π·Π½Π°ΠΉΡ‚Π΅ Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠ΅ имя ΠΏΠ°ΠΏΠΊΠΈ
tar -tzf ~/rpmbuild/SOURCES/myapp-1.0.0.tar.gz | head -1

# Π£ΠΊΠ°ΠΆΠΈΡ‚Π΅ Π΅Π³ΠΎ Π² %prep
%prep
%setup -q -n RealFolderName-1.0.0

Ошибка 4: Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½Π° (pkg-config)

Dependency "libname" not found, tried pkgconfig and cmake

РСшСниС:

# Найти .pc Ρ„Π°ΠΉΠ»
find /usr -name "libname*.pc" 2>/dev/null

# Если Ρ„Π°ΠΉΠ» Π΅ΡΡ‚ΡŒ, Π½ΠΎ с Π΄Ρ€ΡƒΠ³ΠΈΠΌ ΠΈΠΌΠ΅Π½Π΅ΠΌ β€” ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ симлинк
sudo ln -s /usr/lib64/pkgconfig/real-name.pc /usr/lib64/pkgconfig/expected-name.pc

# Если Ρ„Π°ΠΉΠ»Π° Π½Π΅Ρ‚ β€” ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ development-ΠΏΠ°ΠΊΠ΅Ρ‚
sudo dnf install libname-devel

Ошибка 5: ΠΠ΅ΡΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ΡŒ вСрсий Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ

Invalid version, need 'libname' ['>= 2.0'] found '1.5'

РСшСниС:

  1. ΠŸΠΎΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Ρ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ ΡΡ‚Π°Ρ€ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹
  2. Π‘Π΄Π΅Π»Π°Ρ‚ΡŒ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠΉ Π² meson.build:
   %prep
   %setup -q
   sed -i "s/dependency('libname'/dependency('libname', required: false/" meson.build
  1. ΠžΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Π² систСмС (Ссли Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ)

Ошибка 6: Vala Π½Π΅ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ ΠΏΠ°ΠΊΠ΅Ρ‚

error: Package 'packagename' not found in specified Vala API directories

РСшСниС:

# Найти .vapi Ρ„Π°ΠΉΠ»Ρ‹
find /usr -name "*.vapi" 2>/dev/null | grep packagename

# Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ симлинк с ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌΡ‹ΠΌ ΠΈΠΌΠ΅Π½Π΅ΠΌ
sudo ln -s /usr/share/vala/vapi/real-name.vapi /usr/share/vala/vapi/expected-name.vapi

7. πŸ“– Π¨ΠΏΠ°Ρ€Π³Π°Π»ΠΊΠ° ΠΏΠΎ макросам

Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½Ρ‹Π΅ макросы ROSA

ΠœΠ°ΠΊΡ€ΠΎΡΠ—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠŸΡ€ΠΈΠΌΠ΅Ρ€
%{_prefix}/usr%{_prefix}/bin
%{_bindir}/usr/bin%{_bindir}/myapp
%{_libdir}/usr/lib64%{_libdir}/lib.so
%{_datadir}/usr/share%{_datadir}/icons
%{_mandir}/usr/share/man%{_mandir}/man1/*.1
%{_sysconfdir}/etc%{_sysconfdir}/myapp.conf
%{name}Имя ΠΏΠ°ΠΊΠ΅Ρ‚Π°myapp
%{version}ВСрсия1.0.0
%{release}Release1

ΠœΠ°ΠΊΡ€ΠΎΡΡ‹ для скриптов

ΠœΠ°ΠΊΡ€ΠΎΡΠžΠΏΠΈΡΠ°Π½ΠΈΠ΅
%glib_schema_compileΠšΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡ GSettings схСм
%desktop_database_updateОбновлСниС Π±Π°Π·Ρ‹ .desktop Ρ„Π°ΠΉΠ»ΠΎΠ²
%icon_theme_cache_updateОбновлСниС кэша иконок
%ldconfigОбновлСниС кэша Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ

Π‘Π΅ΠΊΡ†ΠΈΠΈ spec-Ρ„Π°ΠΉΠ»Π°

Π‘Π΅ΠΊΡ†ΠΈΡΠžΠΏΠΈΡΠ°Π½ΠΈΠ΅
%prepΠŸΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠ° (распаковка, ΠΏΠ°Ρ‚Ρ‡ΠΈ)
%buildΠšΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡ
%installУстановка Π² BUILDROOT
%filesБписок Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΏΠ°ΠΊΠ΅Ρ‚Π°
%postΠ‘ΠΊΡ€ΠΈΠΏΡ‚ послС установки
%postunΠ‘ΠΊΡ€ΠΈΠΏΡ‚ послС удалСния
%changelogΠ˜ΡΡ‚ΠΎΡ€ΠΈΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ

8. 🎯 Π§Π΅ΠΊ-лист ΠΏΠ΅Ρ€Π΅Π΄ сборкой

  • [ ] УстановлСны rpm-build ΠΈ rpmdevtools
  • [ ] Π‘ΠΎΠ·Π΄Π°Π½Π° структура ~/rpmbuild/
  • [ ] Π˜ΡΡ…ΠΎΠ΄Π½Ρ‹ΠΉ Π°Ρ€Ρ…ΠΈΠ² Π² ~/rpmbuild/SOURCES/
  • [ ] Spec-Ρ„Π°ΠΉΠ» Π² ~/rpmbuild/SPECS/
  • [ ] ВсС BuildRequires ΡƒΠΊΠ°Π·Π°Π½Ρ‹ ΠΈ установлСны
  • [ ] Имя ΠΏΠ°ΠΏΠΊΠΈ Π² %prep соотвСтствуСт Π°Ρ€Ρ…ΠΈΠ²Ρƒ
  • [ ] Бписок %files соотвСтствуСт установлСнным Ρ„Π°ΠΉΠ»Π°ΠΌ
  • [ ] ЛицСнзия ΡƒΠΊΠ°Π·Π°Π½Π° ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ

9. πŸ“š Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ рСсурсы

Π Π΅ΡΡƒΡ€ΡΠžΠΏΠΈΡΠ°Π½ΠΈΠ΅
ROSA WikiΠžΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½Π°Ρ докумСнтация ROSA
forum.rosa.ruΠ€ΠΎΡ€ΡƒΠΌ сообщСства ROSA
ABF ROSAБистСма сборки ROSA (для ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΈ)

10. πŸ’‘ Π‘ΠΎΠ²Π΅Ρ‚Ρ‹ Π½ΠΎΠ²ΠΈΡ‡ΠΊΠ°ΠΌ

  1. НачинайтС с простых ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² β€” Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ с ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ зависимостями
  2. Π˜Π·ΡƒΡ‡Π°ΠΉΡ‚Π΅ Π³ΠΎΡ‚ΠΎΠ²Ρ‹Π΅ spec-Ρ„Π°ΠΉΠ»Ρ‹ β€” смотритС Π² /usr/share/doc/rpm/ ΠΈΠ»ΠΈ Π½Π° ABF
  3. БохраняйтС Π»ΠΎΠ³ΠΈ сборки β€” rpmbuild -ba spec.spec 2>&1 | tee build.log
  4. ВСстируйтС локально β€” ΠΏΠ΅Ρ€Π΅Π΄ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΎΠΉ Π² ABF ΡƒΠ±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ ΠΏΠ°ΠΊΠ΅Ρ‚ собираСтся Ρƒ вас
  5. НС Π±ΠΎΠΉΡ‚Π΅ΡΡŒ ошибок β€” каТдая ошибка ΡƒΡ‡ΠΈΡ‚ Ρ‡Π΅ΠΌΡƒ-Ρ‚ΠΎ Π½ΠΎΠ²ΠΎΠΌΡƒ
  6. Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΈΡ€ΡƒΠΉΡ‚Π΅ измСнСния β€” Π²Π΅Π΄ΠΈΡ‚Π΅ %changelog для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ измСнСния
  7. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ git β€” Ρ…Ρ€Π°Π½ΠΈΡ‚Π΅ spec-Ρ„Π°ΠΉΠ»Ρ‹ Π² git-Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ

πŸ“‹ Быстрый старт (ΠΊΠΎΠΏΠΈΡ€ΡƒΠΉ ΠΈ вставляй)

# 1. Установка инструмСнтов
sudo dnf install -y rpm-build rpmdevtools wget git

# 2. Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ структуры
rpmdev-setuptree

# 3. Π‘ΠΊΠ°Ρ‡ΠΈΠ²Π°Π½ΠΈΠ΅ исходников
cd ~/rpmbuild/SOURCES
wget https://example.com/app-1.0.tar.gz

# 4. Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ spec-Ρ„Π°ΠΉΠ»Π°
cd ~/rpmbuild/SPECS
nano app.spec

# 5. Π‘Π±ΠΎΡ€ΠΊΠ°
rpmbuild -ba app.spec

# 6. Установка
sudo dnf install ~/rpmbuild/RPMS/x86_64/app-*.rpm

# 7. ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ°
app --version

Π£Π΄Π°Ρ‡Π½ΠΎΠΉ сборки! πŸš€

Если Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡƒΡ‚ вопросы β€” ΠΎΠ±Ρ€Π°Ρ‰Π°ΠΉΡ‚Π΅ΡΡŒ Π½Π° forum.rosa.ru ΠΈΠ»ΠΈ сохраняйтС Π»ΠΎΠ³ΠΈ ошибок для Π°Π½Π°Π»ΠΈΠ·Π°.

ΠžΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΎΡ‚Π²Π΅Ρ‚

Π’Π°Ρˆ адрСс email Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½. ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ поля ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½Ρ‹ *