on
RPM (.rpm) Paketi Nasıl Oluşturulur
rpmbuild
aracını kullanarak RPM paketi derlemek için önce aşağıdaki kurulumlar yapılmalı.
Debian tabanlı dağıtımlar:
sudo apt-get install rpm
Fedora tabanlı dağıtımlar:
sudo yum install rpm-build
Kurulumdan sonra rpmbuild
için home dizininde .rpmmacros
isimli bir dosya oluşturarak rpmbuild
aracına çeşitli ayarlar verilebilir. Paketi oluşturmak için gerekli bileşenleri bulabileceği klasörü rpmbuild
aracına göstermek için %_topdir
değişkeni kullanılır. .rpmmacros
dosyası içerisine aşağıdaki satır eklenerek yapılabilir.
%_topdir /home/username/rpmbuild
Yukarıda belirtilen klasörü ve içinde olması gerekenleri oluşturmak için:
mkdir -p ~/rpmbuild/{BUILD,BUILDROOT,RPMS,SOURCES,SPECS,SRPMS}
Örnek olarak ilk adım paket için bir klasör oluşturalım.
mkdir ornek-1.0
cd ornek-1.0
Program ornek.py
dosyamız olacak.
#!/usr/bin/python
print "Ornek Program"
Şimdi paket klasörünü sıkıştırıyoruz.
tar -czvf ornek-1.0.tar.gz ornek-1.0/
rpmbuild
aracı SOURCES dizinine bakacaktır. Yukarıdaki gibi %_topdir
makrosunu kullandıysanız dizin ~/rpmbuild/SOURCES
olacak. Bu yüzden sıkıştırılan dosyayı bu dizine taşıyoruz.
mv ornek-1.0.tar.gz ~/rpmbuild/SOURCES
Şimdi bir .spec
dosyası oluşturmalıyız. Bir SPEC dosyası, yazılımın nasıl oluşturulacağını ve paketleneceğini anlatır.
Name: ornek
Version: 1.0
Release: 1%{?dist}
Summary: Ornek program
License: MIT
URL: https://oguzhaninan.gitlab.io
Source0: ornek-1.0.tar.gz
%description
Ornek bir program.
%prep
%setup
%install
mkdir -p %{buildroot}/usr/bin
install -m 0755 ornek.py %{buildroot}/usr/bin/ornek
%files
%{_bindir}/ornek
RPM paketini derlemek için SPEC dizininde aşağıdaki komutu çalıştırılır.
rpmbuild -ba ornek-1.0.spec
Derleme işlemi tamamlandıktan sonra ~/RPMS/x86_64/ornek-1.0-1.x86_64.rpm
dizinindeki rpm paketi ile kurulum yapabiliriz.
SPEC dosyasında kullanılabilecek değişkenler:
%{_sysconfdir} /etc
%{_prefix} /usr
%{_exec_prefix} %{_prefix}
%{_bindir} %{_exec_prefix}/bin
%{_libdir} %{_exec_prefix}/%{_lib}
%{_libexecdir} %{_exec_prefix}/libexec
%{_sbindir} %{_exec_prefix}/sbin
%{_sharedstatedir} /var/lib
%{_datarootdir} %{_prefix}/share
%{_datadir} %{_datarootdir}
%{_includedir} %{_prefix}/include
%{_infodir} /usr/share/info
%{_mandir} /usr/share/man
%{_localstatedir} /var
%{_initddir} %{_sysconfdir}/rc.d/init.d
%{_var} /var
%{_tmppath} %{_var}/tmp
%{_usr} /usr
%{_usrsrc} %{_usr}/src
%{_lib} lib (lib64 on 64bit multilib systems)
%{_docdir} %{_datadir}/doc
%{buildroot} %{_buildrootdir}/%{name}-%{version}-%{release}.%{_arch}
$RPM_BUILD_ROOT %{buildroot}
.rpmmacros
dosyasında kullanılabilecek değişkenler.
%{_topdir} %{getenv:HOME}/rpmbuild
%{_builddir} %{_topdir}/BUILD
%{_rpmdir} %{_topdir}/RPMS
%{_sourcedir} %{_topdir}/SOURCES
%{_specdir} %{_topdir}/SPECS
%{_srcrpmdir} %{_topdir}/SRPMS
%{_buildrootdir} %{_topdir}/BUILDROOT