Kısa bir süre önce rpm paketinin nasıl yapılacağını öğrendim. İlk defa böyle bir işe kalkıştığım için başta çok zorlandım. Ama bir hocamın yardımıyla nasıl yapılacağının mantığını anladım. Daha bu konuda öğrenilecek çok şey var ancak daha önce hiç paketleme yapmamış arkadaşların ilk paketlemelerini yapabilmesi için anlatablidiğim kadar adım adım anlatacağım.
1. Paketleme için gerekli paketi kuruyoruz.
# yum install rpmdevtools
# useradd yeni_kullanici_adi
# passwd yeni_kullanici_adi
3. Şimdi bu kullanıcıya geçiş yapıyoruz.
$ su - yeni_kullanici_adi
4. Kurduğumuz bu paketin sağladığı bir aracı kullanarak gerekli dizinleri oluşturuyoruz .(Bu işlem mkdir komutu kullanılarakta yapılabilir.)
$ rpmdev-setuptree
5. Şimdi bulunduğumuz dizinde neler oluşmuş görelim.
$ ls
$ cd rpmbuild
$ ls
Görüldüğü üzere rpmbuild dizini ve altında 5 adet dizin oluşmuş. Şimdi adımlara ara verip bu dizinler altında neler tutuluyor onları konuşalım. İlk paketleme için şunları bilmemiz yeterli:
SOURCE : Paketlenecek olan dosyamızın tar.gz halini bu dizin altına kopyalarız
SPEC : .spec uzantılı dosyayı tutar. Bu dosyadan ileriki adımlarda uzunca bahsedeceğiz
RPMS : En son oluşturduğumuz RPM paketleri bu dizin altında durur.
6. Şuan rpmbuild dizini içindeyiz. Yapacağımız paket 1. sürüm olacağı için o sürüm ismini içeren bir dizin oluşturuyoruz ve o dizine geçiyoruz.
$ mkdir test-1.0
$ cd test-1.0
7. İçinde herhangi birşey olan bir dosya oluşturalım ve bi üst dizine geçelim.
$ echo "echo \"Merhaba ilk RPM paketi\"" > test.sh
$ cd ..
8. Şimdi oluşturduğumuz dizini arşivleyip sıkıştıralım ve SOURCE dizini altına gönderelim.
$ tar czvf SOURCES/test-1.0.tar.gz test-1.0/
9. Sıra geldi spec dosyasını oluşturmaya. SPEC dizinine geçelim ve bir spec dosyası oluşturalım.
$ cd SPEC
$ rpmdev-newspec test.spec
10. Şimdi oluşturduğumuz test.spec dosyasını düzenleyelim. Ben vim kullanıyorum isteğiniz bir metin editörünü kullanabilirsiniz.
$ vim test.spec
11. Dosyayı aşağıdaki şekilde düzenleyelim.
###################################################
Name: test Version: 1.0 Release: 1%{?dist} Summary: Bu bir testtir Group: Utilities License: GPL URL: http://www.linux.com Source0: test-1.0.tar.gz BuildArch: noarch BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) #BuildRequires: bash #Requires: bash %description Bir test dosyasını içeren rpm paketidir. %prep %setup -q %build %install rm -rf $RPM_BUILD_ROOT install -d $RPM_BUILD_ROOT/opt/test install test.sh $RPM_BUILD_ROOT/opt/test/test.sh %clean rm -rf $RPM_BUILD_ROOT %files %dir /opt/test %defattr(-,root,root,-) /opt/test/test.sh %post chmod 755 -R /opt/test
###################################################
Şimdi bu dosyanın bu içeriğini konuşalım.
(Name) kısmına paketimizin ismini yazıyoruz.
(Version) kısmına peketimizin versiyonunu yazıyoruz.
(Summary) kısmına paket hakkında bir cümlelik özet bilgi yazıyoruz
(Group) kısmına paketimizin hangi gruba ait olduğunu yazıyoruz. Applications/Multimedia, Utililies, ... gibi
(Licence) kısmına hangi lisans altında paketlediğimizi belirtiyoruz
(URL) kısmına paketlediğimiz uygulamanın web adresini yazabiliriz.
(Source0) kısmına SOURCE dizini altında kopyaladığımız tar.gz dosyanın ismini yazıyoruz. Eğer birden fazla kaynak kullanılarak paketleme yapacaksak alt alta Source1,Source2... diyerek istediğimiz kadar kaynak belirtebiliriz.
(BuildRequires) kısmına derleme için gereken bağımlılıkları yazarız.
(Requires) kısmına paketlediğimiz bu uygulamanın çalışabilmesi için gerekli bağımlılıkları belirtiriz. İlk Paketleme için bir bağımlılığa ihtiyaç olmadığından ama bu satırı doldurmazsakta hata alacağımızdan sistemimizde var olan herhangi bir programı yazabiliriz. Bu işlemleri bash kabuğunda yaptığımızı varsayarak bash yazdım
(descriptions) kısmına paketimizle ilgili istediğimiz uzunlukta tanımlama yazabiliriz.
(install) kısmı paketimizdeki dosyaların nerelere kopyalanacağını belirlediğimz kısımdır. İkinci satırda dağıtım dışı bir paket olduğundan /opt altına programımızın ismiyle bir dizin oluşturuyoruz. Üçüncü satırda ilk parametre olarak kurulacak dosyanın adını ikinci parametre olarakta kurulacağı yeri ve oraya hangi isimle kurulacağını belirtiyoruz.
(files) kısmına kurulacak olan her dosya için bu dosyaların bilgisyarımızda nerelerde olacağını belirten bir satır yazıyoruz.
(post) kısmında kurduğumuz dosyaların erişim haklarını belirten bir satır yazdık
12. Şuan SPEC dizini içindeyiz. test.spec dosyasını kaydettik şimdi paketi oluşturuyoruz.
$ rpmbuild -bb -v test.spec
13. Paketimiz oluştu ve RPMS altına geldi. Bakalım gerçekten orda mı.
$ cd ..
$ cd RPMS/noarch
$ ls
14. Evet gerçekten orda. O zaman oluşturduğumuz paketi kuralım ve çalıştıralım.
# rpm -Uvh test-1.0-1.el6.noarch.rpm
# /opt/test/test.sh
Merhaba ilk RPM paketi çıktısını vermiş olması gerekiyor
Umarım anlatabilmişimdir. Baştada dediğim gibi daha öğrenilecek çok şey var. Bi başlangıç yapmış olduk. Umarım faydalı olmuştur. Kolay gelsin :)