PersonalBlog

Blagovest Rosenov "Barış"

RPM Paketleme Sanatı: Fedora İçin Basit ve Etkili RPM Paketleri Oluşturmanın Rehberi

RPM, Fedora ve diğer RPM tabanlı dağıtımların (Red Hat, CentOS, OpenSUSE vs.) yazılımları yönetmek için kullandığı bir paket yönetim sistemidir. Bu blog yazısında, Fedora için bir RPM paketi nasıl oluşturulacağına dair bir örnekle detayları anlatacağım.

RPM Paket Oluşturma

Öncelikle, bir RPM paket oluşturmanın dört temel aşaması vardır:

  1. RPM Paketleme Ortamını Hazırlama
  2. SPECS Dosyasını Oluşturma
  3. Kaynak Dosyalarını ve Yama Dosyalarını Toplama
  4. RPM Paketini Oluşturma

1. RPM Paketleme Ortamını Hazırlama

Fedora üzerinde RPM paketleri oluşturabilmek için öncelikle rpmdevtools ve rpmbuild paketlerini kurmanız gerekmektedir. Bu paketleri yüklemek için terminalde aşağıdaki komutu çalıştırabilirsiniz:

sudo dnf install rpmdevtools rpmbuild

Ardından, kullanıcılar için RPM paketleme ortamını ayarlamak için rpmdev-setuptree komutunu kullanabiliriz:

rpmdev-setuptree

Bu komut, ev dizininizde (~/) bir rpmbuild dizini oluşturacak ve içerisine gerekli alt dizinleri (BUILD, RPMS, SOURCES, SPECS, SRPMS) ekleyecektir.

2. SPECS Dosyasını Oluşturma

RPM paketi oluştururken, RPM yapım işlemini kontrol eden bir .spec dosyasına ihtiyacınız olacaktır. Bu dosya paketin adı, versiyonu, lisansı ve diğer meta verileri ile birlikte kurulum ve derleme komutlarını içerir.

rpmdev-newspec komutunu kullanarak boş bir .spec dosyası oluşturabiliriz. Örneğin, helloworld isimli bir programı paketlemek istiyorsak:

rpmdev-newspec ~/rpmbuild/SPECS/helloworld.spec

Daha sonra bu dosyayı bir metin editörü ile açıp paketlemek istediğiniz yazılım ile ilgili bilgileri doldurmanız gerekmektedir. Örneğin:

Name:           helloworld
Version:        1.0
Release:        1%{?dist}
Summary:        Simple Hello World program

License:        GPL
URL:            http://www.example.com/helloworld
Source0:        http://www.example.com/helloworld-%{version}.tar.gz

BuildRequires:  gcc

%description
This is a simple Hello World program written in C.

%prep
%setup -q

%build
gcc -o helloworld helloworld.c

%install
install -d %{buildroot}/usr/bin
install -m 755 helloworld %{buildroot}/usr/bin

%files
%doc README
/usr/bin/helloworld

3. Kaynak Dosyalarını ve Yama Dosyalarını Toplama

Kaynak kodları ve yama dosyaları SOURCES dizinine konulmalıdır. Bu örnekte, helloworld-1.0.tar.gz kaynak dosyasını http://www.example.com/helloworld-1.0.tar.gz adresinden indirip ~/rpmbuild/SOURCES/ dizinine kopyalamalıyız.

4. RPM Paketini Oluşturma

Artık .spec dosyamız ve kaynak dosyamız olduğuna göre RPM paketini oluşturabiliriz. Bunun için aşağıdaki komutu kullanabiliriz:

rpmbuild -ba ~/rpmbuild/SPECS/helloworld.spec

Eğer her şey yolunda gittiyse, ~/rpmbuild/RPMS/ ve ~/rpmbuild/SRPMS/ dizinlerinde RPM paketlerini bulabilirsiniz.

Bu, Fedora için bir RPM paketi oluşturmanın temel bir örneğidir. Gerçekte, bir paket oluşturmak daha karmaşık olabilir ve bazen daha fazla konfigürasyon gerektirebilir. Ancak bu örnek, RPM paketi oluşturmanın genel sürecini anlamanıza yardımcı olmalıdır.