Debian üzerinde RPM Paketi oluşturma

Ali Orhun Akkirman - Aug 1 '20 - - Dev Community

Debian tarafında Centos, RHEL veya Fedora gibi sistemlerde kullanılan RPM paket yapısı oluşturulabilmektedir. Oluşturulduktan sonra kurulum için ise RPM tabanlı dağıtımlar kullanılabilmektedir.

Paketin Yüklenmesi

Debian tabanlı sistemlerde rpm paketinin yüklenmesi gerekmektedir.

sudo apt install rpm
Enter fullscreen mode Exit fullscreen mode

Temel RPM build klasörü

Öncelikle temel RPM build alınacaksa öncelikle .rpmmacros dosyası ile varsayılan rpmbuild klasörünün belirlenmesi gerekmektedir. Eğer bu yol değiştirilmezse ev dizininin altında /rpmbuild klasörü oluşmaktadır. Bu durumda ~/rpmbuild olarak düşünülmektedir.

Eğer rpmbuild klasörünü değiştirmek isterseniz ev dizini altında bulunan ~/.rpmmacros dosyası düzenlenmelidir. Herhangi bir dosya yoksa aşağıdaki şekilde düzenlenmelidir:

%_topdir            /home/aciklab/calismalar/rpmtest/rpmbuild
Enter fullscreen mode Exit fullscreen mode

Bu gibi durumda aşağıdaki komut ile rpmmacros dosyası içindeki build klasöründe aşağıdaki klasörler oluşturulmalıdır:

mkdir -p /home/aciklab/calismalar/rpmtest/rpmbuild/{BUILD,BUILDROOT,RPMS,SOURCES,SPECS,SRPMS}
Enter fullscreen mode Exit fullscreen mode

SPEC dosyasının düzenlenmesi

RPM Paketinde belki de en önemli madde SPEC klasörü içerisinde spec dosyasının oluşturulması. Bunun için aşağıdaki gibi örnek dosya oluşturulabilinir. Buradaki en temel satır requires kısmında belirtilen bağımlı paketlerin listelenmesidir.

Name:       merhabadunya
Version:    0.10
Release:    1
Summary:    Temel RPM paketi
License:    GPLv2
Packager:   Ali Orhun Akkirman
Requires:   bash

%description
Örnek ve basit bir RPM paketi

%prep
# hazırlık içerikleri

%pre
# yükleme öncesi yapılacak betikler

%post
# yükleme sonrası yapılacak betikler

%build
cat > merhabadunya.sh <<EOF
#!/usr/bin/bash
echo "Merhaba Dünya"
EOF

%install
mkdir -p %{buildroot}/usr/bin/
install -m 755 merhabadunya.sh %{buildroot}/usr/bin/merhabadunya

%files
/usr/bin/merhabadunya

%changelog
# degisenler
Enter fullscreen mode Exit fullscreen mode

İlgili dosyada build edilecek kısımda oluşturmak istediğiniz dosyaları oluşturabiliyorsunuz. Örneğin yukarıdaki örnekte /rpmbuild/BUILD klasörü altında içerisinde "Merhaba Dünya" yazısını barındıran merhabadunya.sh dosyası oluşturulmaktadır.

Yukarıdaki örnekte install kısmında ise kök dizini üzerinde klasör oluşturma ve bu klasöre bir dosyayı göndermek yer almaktadır. Ve tabi bu klasörü files kısmında da belirtmek gerekmektedir.

Paketin İnşaası

Gerekli SPEC dosyasını hazırladıktan sonra aşağıdaki komut ile RPM paketi oluşturulabilmektedir:

rpmbuild -ba  /home/aciklab/calismalar/rpmtest/rpmbuild/SPECS/merhabadunya.spec
Enter fullscreen mode Exit fullscreen mode

Paket inşaa edildiğinde /home/aciklab/calismalar/rpmtest/rpmbuild/RPMS/x86_64/ klasörü içerisinde dosya adı ve sürüm numarasına göre rpm paketi oluşturulmaktadır.

Dum spiro spero

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .