DEV Community

Ali Orhun Akkirman for Açıklab

Posted on

9 1

Debian üzerinde RPM Paketi oluşturma

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

Image of Datadog

The Future of AI, LLMs, and Observability on Google Cloud

Datadog sat down with Google’s Director of AI to discuss the current and future states of AI, ML, and LLMs on Google Cloud. Discover 7 key insights for technical leaders, covering everything from upskilling teams to observability best practices

Learn More

Top comments (0)

Billboard image

The Next Generation Developer Platform

Coherence is the first Platform-as-a-Service you can control. Unlike "black-box" platforms that are opinionated about the infra you can deploy, Coherence is powered by CNC, the open-source IaC framework, which offers limitless customization.

Learn more

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay