Fedora'da GNU Merhaba Dünya RPM Paketi Nasıl Oluşturulur
RPM (RPM Paket Yöneticisinin özyinelemeli kısaltması), Linux için ücretsiz ve açık kaynaklı bir paket yönetim sistemidir. Başlangıçta Red Hat Linux'ta kullanılmak üzere oluşturulmuş olmasına rağmen artık CentOS, Fedora ve gibi birçok Linux dağıtımında kullanılmaktadır. >OpenSuse. Daha da önemlisi, RPM adı paket yöneticisi programını ifade eder ve .rpm
bir dosya biçimidir.
Bu makalede, basit bir kaynak ve ikili yazılım paketlerinin, örneğin Fedora Linux'ta GNU “Merhaba Dünya” RPM paketinin nasıl kolayca oluşturulacağını gösteren RPM dosyalarının yazılmasını açıklayacağız. güçlü > dağılım. Önceden hazırlanmış RPM paketleri ve Ücretsiz Açık Kaynak Yazılım oluşturma süreci hakkında temel bilgilere sahip olduğunuzu varsayıyoruz.
Geliştirme Araçlarını Fedora'ya yükleyin
RPM oluşturmak için gerekli araçları yüklemek üzere aşağıdaki komutu çalıştırarak Fedora Linux'ta geliştirme ortamını kurarak başlayalım.
sudo dnf install fedora-packager @development-tools
Daha sonra, ayrıcalıklı olmayan hesabınızı aşağıdaki gibi 'sahte' grubuna ekleyin (tecmint'i gerçek kullanıcı adınızla değiştirin). Bu, derleme prosedürünü temiz bir chroot'ta test etmenize olanak sağlayacaktır.
sudo usermod -a -G mock tecmint
Şimdi ~/rpmbuild
dizininizde bir RPM yapısı oluşturun ve aşağıdaki komutları kullanarak yapıyı doğrulayın. Proje kaynak kodunu, RPM yapılandırma dosyalarını ve ikili paketleri içeren alt dizinlerin bir listesini gösterecektir.
rpmdev-setuptree
tree ~/rpmbuild/
Her dizinin ne anlama geldiği aşağıda açıklanmıştır:
- BUILD – paketler oluşturulduğunda çeşitli %buildroot dizinlerini saklar.
- RPMS – Mimarinin alt dizinlerindeki ikili RPM'leri içerecektir.
- KAYNAKLAR – sıkıştırılmış kaynak arşivlerini ve tüm yamaları saklar; rpmbuild komutunun onları arayacağı yer burasıdır.
- SPECS – SPEC dosyalarını saklar.
- SRPMS – İkili RPM yerine Kaynak RPM'yi saklar.
Bir “Merhaba Dünya” RPM'si Oluşturmak
Bu adımda, paketlediğimiz Merhaba Dünya projesinin kaynak kodunu ("yukarı akış" kaynağı olarak da bilinir) ~/rpmbuild/SOURCE 'a indirmeniz gerekir. dizini aşağıdaki wget komutuyla oluşturun.
cd ~/rpmbuild/SOURCES
wget http://ftp.gnu.org/gnu/hello/hello-2.10.tar.gz -P ~/rpmbuild/SOURCES
Daha sonra, ~/rpmbuild/SPECS.spec dosyası kullanarak RPM paketini yapılandıralım (bu durumda onu hello.spec
olarak adlandıralım). > dizini, rpmdev-newspec programını kullanarak.
cd ~/rpmbuild/SPECS
rpmdev-newspec hello
ls
Daha sonra favori düzenleyicinizi kullanarak hello.spec
dosyasını açın.
vim hello.spec
Varsayılan şablon şöyle görünmelidir:
Name: hello
Version:
Release: 1%{?dist}
Summary:
License:
URL:
Source0:
BuildRequires:
Requires:
%description
%prep
%autosetup
%build
%configure
%make_build
%install
rm -rf $RPM_BUILD_ROOT
%make_install
%files
%license add-license-file-here
%doc add-docs-here
%changelog
* Tue May 28 2019 Aaron Kili
Bir .spec
dosyasındaki varsayılan parametreleri kısaca açıklayalım:
- Ad – pakete bir ad ayarlamak için kullanılır.
- Sürüm – yukarı yönde yansıtılmalıdır.
- Yayınlama – Fedora'da çalıştığınız sayılar.
- Özet – paketin tek satırlık kısa bir açıklamasıdır; rpmlint şikayetlerini önlemek için ilk harf büyük harf olmalıdır.
- Lisans – kaynak dosyaları ve/veya LİSANS dosyalarını inceleyerek ve/veya yazarlarla konuşarak yazılımın Lisans durumunu kontrol edin.
- URL – yazılım paketinin ana sayfasını belirtir.
- Kaynak0 – kaynak dosyalarını belirtir. Doğrudan bir URL veya yazılımın sıkıştırılmış kaynak kodunun yolu olabilir.
- BuildRequires – yazılımı oluşturmak için gereken bağımlılıkları belirtir.
- Gerektirir – yazılımı çalıştırmak için gereken bağımlılıkları belirtir.
- %prep – rpm paketini oluşturmaya yönelik ortamı oluşturmak için kullanılır.
- %build – kaynak kodlarını derlemek ve oluşturmak için kullanılır.
- %install – bu, programları yüklemek için kullanılır. Ortaya çıkan dosyayı derleme işleminden BUILDROOT dizinine kopyalamak için gereken komutları listeler.
- %files – bu bölüm, paket tarafından sağlanan ve sisteme yüklenecek dosyaları listeler.
- %changelog – özellikle temel yukarı akış kaynağının üstünde güvenlik ve hata düzeltme ekleri varsa, RPM'nin hazırlanmasına yönelik çalışmaları saklamalıdır. hello.spec dosyası oluşturulurken otomatik olarak oluşturulur. Değişiklik günlüğü verileri genellikle
rpm --changelog -q
ile görüntülenir.
Şimdi .spec
dosyanızı düzenleyin ve gösterildiği gibi değişiklikleri yapın.
Name: hello
Version: 2.10
Release: 1%{?dist}
Summary: The "Hello World" program from GNU
License: GPLv3+
URL: http://ftp.gnu.org/gnu/%{name}
Source0: http://ftp.gnu.org/gnu/%{name}/%{name}-%{version}.tar.gz
BuildRequires: gettext
Requires(post): info
Requires(preun): info
%description
The "Hello World" program package
%prep
%autosetup
%build
%configure
make %{make_build}
%install
%make_install
%find_lang %{name}
rm -f %{buildroot}/%{_infodir}/dir
%post
/sbin/install-info %{_infodir}/%{name}.info %{_infodir}/dir || :
%preun
if [ $1 = 0 ] ; then
/sbin/install-info --delete %{_infodir}/%{name}.info %{_infodir}/dir || :
fi
%files -f %{name}.lang
%{_mandir}/man1/hello.1.*
%{_infodir}/hello.info.*
%{_bindir}/hello
%doc AUTHORS ChangeLog NEWS README THANKS TODO
%license COPYING
%changelog
* Tue May 28 2019 Aaron Kili
Yukarıdaki dosyada henüz açıklanmayan bazı yeni parametreler kullandığımızı fark edeceksiniz. Bunlara makrolar adı verilir ve paketler için kurulum yollarını ayarlamak amacıyla RPM tarafından tanımlanan sistem çağrılarını oluşturmak için kullanılır. Bu nedenle, genellikle bu yolları spesifikasyon dosyalarına sabit kodlamamak, tutarlılık için aynı makroları kullanmak tercih edilir.
Aşağıda, tanımları ve varsayılan değerleriyle birlikte RPM derlemesi ve dizin makroları yer almaktadır:
- %{make_build – spesifikasyon dosyasının %build bölümünde kullanılır, make komutunu çalıştırır.
- %{name – paket veya dizin adını tanımlar.
- %{buildroot – %{_buildrootdir}/%{name}-%{version}-%{release}.%{_arch}, $BUILDROOT ile aynı
- %{_infodir – %{_datarootdir}/info, varsayılan: /usr/share/info
- %{_mandir – %{_datarootdir}/man, varsayılan: /usr/share/man
- %{_bindir – %{_exec_prefix}/bin, varsayılan: /usr/bin
Bu makrolara ilişkin değerleri /usr/lib/rpm/platform/*/macros'da bulabileceğinizi veya Paketleme Yönergeleri:RPM Makroları'na başvurabileceğinizi unutmayın.
RPM Paketini Oluşturma
Kaynak, ikili ve hata ayıklama paketlerini oluşturmak için aşağıdaki rpmbuild komutunu çalıştırın.
rpmbuild -ba hello.spec
Oluşturma işleminden sonra, kaynak RPM'ler ve ikili RPM'ler sırasıyla ../SRPMS/
ve ../RPMS/
dizinlerinde oluşturulacaktır. Oluşturulan spesifikasyon dosyasının ve RPM dosyalarının RPM tasarım kurallarına uygunluğunu kontrol etmek ve sağlamak için rpmlint programını kullanabilirsiniz:
rpmlint hello.spec ../SRPMS/hello* ../RPMS/*/hello*
Yukarıdaki ekran görüntüsünde gösterildiği gibi herhangi bir hata varsa, devam etmeden önce bunları düzeltin.
Son olarak, Fedora sınırlı derleme ortamında paket derlemesinin başarılı olup olmayacağını kontrol etmek için sahte programı kullanın.
mock --verbose ../SRPMS/hello-2.10-1.fc29.src.rpm
Daha fazla bilgi için Fedora belgelerine bakın: RPM Paketleri Oluşturma.
Bu kadar! Bu yazımızda Fedora sisteminizi basit bir kaynak ve ikili yazılım paketi oluşturacak şekilde nasıl yükseltebileceğinizi anlattık. Ayrıca GUN Hello Word RPM paketinin nasıl oluşturulacağını da gösterdik. Her türlü soru veya yorumunuz için bize ulaşmak için aşağıdaki geri bildirim formunu kullanın.