ΠΠ΅ΡΡΠΈΡ: Π΄Π»Ρ 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
Π Π΅ΡΠ΅Π½ΠΈΠ΅:
- ΠΡΠΎΠ²Π΅ΡΡΡΠ΅, ΠΊΡΠ΄Π° ΡΠ΅Π°Π»ΡΠ½ΠΎ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°ΡΡΡΡ ΡΠ°ΠΉΠ»Ρ:
# ΠΡΠ΅ΠΌΠ΅Π½Π½ΠΎ ΠΎΡΠΊΠ»ΡΡΠΈΡΠ΅ ΠΏΡΠΎΠ²Π΅ΡΠΊΡ ΡΠ°ΠΉΠ»ΠΎΠ²
# ΠΠΎΠ±Π°Π²ΡΡΠ΅ Π² ΠΊΠΎΠ½Π΅Ρ spec-ΡΠ°ΠΉΠ»Π°:
%define _missing_doc_files_terminate_build 0
- ΠΠ»ΠΈ ΠΈΡΠΏΡΠ°Π²ΡΡΠ΅ ΡΠΏΠΈΡΠΎΠΊ Π²
%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'
Π Π΅ΡΠ΅Π½ΠΈΠ΅:
- ΠΠΎΠΏΡΠΎΠ±ΠΎΠ²Π°ΡΡ Π±ΠΎΠ»Π΅Π΅ ΡΡΠ°ΡΡΡ Π²Π΅ΡΡΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ
- Π‘Π΄Π΅Π»Π°ΡΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΡ Π½Π΅ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎΠΉ Π² meson.build:
%prep
%setup -q
sed -i "s/dependency('libname'/dependency('libname', required: false/" meson.build
- ΠΠ±Π½ΠΎΠ²ΠΈΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Π² ΡΠΈΡΡΠ΅ΠΌΠ΅ (Π΅ΡΠ»ΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ)
ΠΡΠΈΠ±ΠΊΠ° 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} | Release | 1 |
ΠΠ°ΠΊΡΠΎΡΡ Π΄Π»Ρ ΡΠΊΡΠΈΠΏΡΠΎΠ²
| ΠΠ°ΠΊΡΠΎΡ | ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ |
|---|---|
%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. π‘ Π‘ΠΎΠ²Π΅ΡΡ Π½ΠΎΠ²ΠΈΡΠΊΠ°ΠΌ
- ΠΠ°ΡΠΈΠ½Π°ΠΉΡΠ΅ Ρ ΠΏΡΠΎΡΡΡΡ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ² β Π²ΡΠ±Π΅ΡΠΈΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Ρ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΡΠΌΠΈ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΡΠΌΠΈ
- ΠΠ·ΡΡΠ°ΠΉΡΠ΅ Π³ΠΎΡΠΎΠ²ΡΠ΅ spec-ΡΠ°ΠΉΠ»Ρ β ΡΠΌΠΎΡΡΠΈΡΠ΅ Π²
/usr/share/doc/rpm/ΠΈΠ»ΠΈ Π½Π° ABF - Π‘ΠΎΡ
ΡΠ°Π½ΡΠΉΡΠ΅ Π»ΠΎΠ³ΠΈ ΡΠ±ΠΎΡΠΊΠΈ β
rpmbuild -ba spec.spec 2>&1 | tee build.log - Π’Π΅ΡΡΠΈΡΡΠΉΡΠ΅ Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎ β ΠΏΠ΅ΡΠ΅Π΄ ΠΎΡΠΏΡΠ°Π²ΠΊΠΎΠΉ Π² ABF ΡΠ±Π΅Π΄ΠΈΡΠ΅ΡΡ, ΡΡΠΎ ΠΏΠ°ΠΊΠ΅Ρ ΡΠΎΠ±ΠΈΡΠ°Π΅ΡΡΡ Ρ Π²Π°Ρ
- ΠΠ΅ Π±ΠΎΠΉΡΠ΅ΡΡ ΠΎΡΠΈΠ±ΠΎΠΊ β ΠΊΠ°ΠΆΠ΄Π°Ρ ΠΎΡΠΈΠ±ΠΊΠ° ΡΡΠΈΡ ΡΠ΅ΠΌΡ-ΡΠΎ Π½ΠΎΠ²ΠΎΠΌΡ
- ΠΠΎΠΊΡΠΌΠ΅Π½ΡΠΈΡΡΠΉΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ β Π²Π΅Π΄ΠΈΡΠ΅
%changelogΠ΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ - ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ 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 ΠΈΠ»ΠΈ ΡΠΎΡ ΡΠ°Π½ΡΠΉΡΠ΅ Π»ΠΎΠ³ΠΈ ΠΎΡΠΈΠ±ΠΎΠΊ Π΄Π»Ρ Π°Π½Π°Π»ΠΈΠ·Π°.