RPM Oluşturmak | ||
---|---|---|
Diğer Yöntemler | Mandrake İçin RPM Oluşturmak | Test ve Sonrası |
RPM Oluşturmak - 050112
Tanju Taşçılar - tanju@elektronist.com
Registered Linux User #283274
Yamalar
RPM'ini oluşturduğunuz paket size ait değilse, RPM oluşturma sırasında yaptığınız değişiklikleri ayrıca belirtmeniz 'açık kaynak kodlu yazılımlar' için saygılı davranmanın gereğidir. Bunu patch-yama'lar aracılığı ile yaparız. RPM oluşturma sırasında yalnızca hataları düzeltme değil programda da değişiklikler yapabilirsiniz. Bu durumda yamaların kullanılması daha da büyük önem taşır.
Gerbv için yama çözümü
gerbv paketini hazırlarken küçük bir değişiklik yapmıştık. Şimdi bunu yama aracılığı ile uygulayalım. Yamalar için diff programı bulunmaktadır. Diff programı iki dosyayı veya iki dizin altındaki dizin ve programları karşılaştırarak farklılıkları gösteren bir dosya oluşturur. Benzeri bir uygulamayı gendiff komutu ile de yapabiliriz.
Farklılıkları bulmak ve bundan bir yama dosyası oluşturmak için diff programını kullanmadan önce programımızın tam olarak işlenmiş ve RPM oluşturma sorunları olmayan örneğinin yanında orijinal tarball'un açıldığı dizine de ihtiyacımız vardır. Örneğimizde üzerinde çalıştığımız gerbv-1.0.0 dizinini gerbv-1.0.0-patch olarak yeniden isimlendirip. Orijinal gerbv-1.0.0.tar.gz paketini tekrar açıp gerbv-1.0.0 dizinini elde ederiz. Yama dosyasını oluşturmak için:
diff -uNr gerbv-1.0.0 gerbv-1.0.0-patch > gerbv.patch |
komutunu kullanırız. Bu komut ile oluşan gerbv.patch dosyasını gerbv.patch.tar.bz2 şeklinde sıkıştırılmış pakete çevirdikten sonra kullanabiliriz.
Bu işlemin biraz daha farklı şeklini gendiff ile yapabiliriz. Bu durumda RPM oluştururken sorun çıkaran src/Makefile.am ve src/Makefile.in dosyalarını değiştirilmemiş (orijinal) halleri ile src/Makefile.am.patch ve src/Makefile.in.patch olarak yeniden kopyalayalım. Hem src/Makefile.am hem de src/Makefile.in dosyalarını dist_scmdata_DATA = init.scm satırının önüne # koyarak değiştirelim. Sonuçta orijinal dosyaların arkasına .patch eki getirmiş ve diğerleri üzerinde gerekli değişiklikleri yapmış olduk. Şimdi gerbv-1.0.0 dizininin bir altında
gendiff gerbv-1.0.0 .patch > gerbv.patch |
komutu ile gerbv.patch dosyasını oluşturalım. Bu dosya üzerinde sağ tıklayarak Eylemler -> bziplenmiş tar Arşivi Oluştur seçeneği ile gerbv.patch.tar.bz2 paketini oluşturup bunu SOURCES alanına kopyalayalım. Aynı şekilde orijinal gerbv-1.0.0.tar.gz dosyasının da .tar.bz2 şeklini SOURCES alanına (daha öncekinde değişiklikler yapmıştık) kopyalayalım. Bunun ardından gerbv.spec dosyasında Patch0: içeren satırları ekleyerek aşağıdaki değişiklikleri yapalım.
Source0: %name-%version.tar.bz2 Source1: %name-icons.tar.bz2 Patch0: %name.patch.tar.bz2 |
%prep %setup -q %setup -q -T -D -a1 # unpack icons %patch0 -p1 -b .patch |
RPM'i yeniden oluşturduğumuzda elle yaptığımız değişikliğin yama dosyası ile yapıldığını ve RPM'lerimizin oluşturulduğunu göreceğiz.
Muhasebeci için yama çözümü
Muhasebeci örneğimizde normal olarak karşılaşmayacağımız bazı durumlar var. Bunları bilerek özel durumlara örnek olarak çözüm getirmek için kullanacağız. Muhasebeci'nin ilerki sürümlerinde bu gibi durumlarla karşılaşmayız.
Önce tarball içinde link olarak verilen dosyaları normal dosyalarla değiştirmek için normal dosyaları içeren bir kaynak paketi oluşturacağız. Bunun için (örnek sistemde mevcut olan) /usr/share/automake-1.8 dizininden gerekli dosyaları alıp bir tar.bz2 dosyası oluşturuyoruz.
[tanju@gezgin muhasebeci-pre]$ ls compile* COPYING depcomp* INSTALL install-sh* missing* [tanju@gezgin muhasebeci-pre]$ tar cjf muhasebeci-fix-links.tar.bz2 * [tanju@gezgin muhasebeci-pre]$ ls compile* depcomp* install-sh* muhasebeci-fix-links.tar.bz2 COPYING INSTALL missing* |
Oluşturduğumuz muhasebeci-fix-links.tar.bz2 dosyasını SOURCES alanına kopyalıyoruz. Ardından muhasebeci.spec dosyasında kaynak dosyaların belirtildiği satırların altına aşağıdaki gibi Source2 satırını ekliyoruz.
Source0: %name-%version.tar.bz2 Source1: %name-icons.tar.bz2 Source2: %name-fix-links.tar.bz2 |
Bunun açılması için de prep bölümüne -a2 içeren son satırı ekliyoruz.
%prep %setup -q %setup -q -T -D -a1 # unpack icons %setup -q -T -D -a2 |
Yaptığımız değişikliklerin etkisini görebilmek için orijinal dosyadaki linkleri, üzerinde çalışmalarımızı yaptığımız muhasebeci-0.5.5 dizininde düzelttiğimiz dosyaların üzerine kopyalayıp, işlemi prep bölümünün sonuna kadar yapan parametre olarak -bp kullandığımızda aşağıdaki sonucu elde ediyoruz.
[tanju@gezgin SPECS]$ rpm -bp muhasebeci.spec %prep icra ediliyor: /bin/sh -e /home/tanju/rpm/tmp/rpm-tmp.7391 + umask 022 + cd /home/tanju/rpm/BUILD + cd /home/tanju/rpm/BUILD + rm -rf muhasebeci-0.5.5 + /usr/bin/bzip2 -dc /home/tan |