RPM Oluşturmak | ||
---|---|---|
Sistem Hazırlığı | Mandrake İçin RPM Oluşturmak | Yöntemler |
RPM Oluşturmak - 050112
Tanju Taşçılar - tanju@elektronist.com
Registered Linux User #283274
Spec Dosyası
RPM paketi oluşturmanın merkezinde, aslında yapılacak işlemlerin listesi olan ve uzantısı genellikle .spec olduğu için specfile adı verilen dosyanın düzenlenme işlemi bulunmaktadır. RPM oluşturmanın kilidi bu dosyanın oluşturulmasıdır diyebiliriz. Burada örnek olarak aumix paketinin spec dosyasını ele alacak ve onun üzerinden açıklamalarımızı yapacağız.
%define version 2.8 %define release 7mdk Name: aumix Summary: A GTK+/Ncurses audio mixer Version: %{version} Release: %{release} License: GPL Group: Sound BuildRequires: ncurses-devel BuildRequires: gtk+2-devel Source0: http://www.jpj.net/~trevor/aumix/%{name}-%{version}.tar.bz2 # mute(1) man page (from debian): Source1: aumix-mute.1.bz2 Patch0: aumix-2.7-devfs-compliant.patch.bz2 Patch1: aumix-2.8-utf8_vs_gtk2.patch.bz2 Patch2: aumix-2.8-close-dialogs.patch.bz2 URL: http://www.jpj.net/~trevor/aumix.html Requires: initscripts >= 4.42 BuildRoot: %{_tmppath}/%{name}-%{version}-droot %description This is a program for adjusting audio mixers from the command line or scripts, or interactively at the console or a terminal with a full-screen, ncurses-based interface or a GTK-based X interface. %prep %setup -q %patch0 -p1 -b .devfs %patch1 -p1 -b .utf8 %patch2 -p0 -b .dialogs # (gc) move "xaumix" to "taumix" perl -pi -e 's|xaumix|taumix|g' doc/{*aumix.1,Makefile.am} src/{Makefile.am,xaumix} mv doc/xaumix.1 doc/taumix.1 mv src/xaumix src/taumix aclocal-1.4 automake-1.4 --gnu --include-deps src/Makefile WANT_AUTOCONF_2_1=1 autoconf %build %configure --with-alsa --without-gtk1 %make %install rm -rf $RPM_BUILD_ROOT %makeinstall # menu entry mkdir -p %buildroot/%_menudir cat > %buildroot/%_menudir/%name << EOF ?package(%name): \ command="%_bindir/%name" \ needs="X11" \ icon="sound_section.png" \ section="Multimedia/Sound" \ title="Aumix" \ longtitle="Audio Mixer based on GTK+ and NCurses" EOF bzcat %SOURCE1 > $RPM_BUILD_ROOT%_mandir/man1/mute.1 %find_lang %name %post %update_menus %postun %clean_menus %clean rm -rf $RPM_BUILD_ROOT %files -f %{name}.lang %defattr(-,root,root) %doc README TODO NEWS ChangeLog %_bindir/* %_mandir/man1/* %_datadir/%name %_menudir/* %changelog * Wed Jan 28 2004 Abel Cheung |
(Burada changelog kısmının devam eden satırları gösterilmemektedir.)
Bir spec dosyası
%ile başlayan çeşitli anahtar kelimeler içerir. Bunların bir kısmı bölüm başlığı iken bir kısmı da çalıştırılacak scriptlerdir. Kullandıkça bu karmaşık görünen yapıya alışacaksınız. Burada kullanılan makro scriptleri ile ilgili geniş bilgi ve tanımları /usr/lib/rpm/macros dosyasında bulabilirsiniz.
İlk bölümde programın version ve release olarak sürüm bilgileri yer almakta. Başlık olarak adlandırılabilecek bu bölümde dosyanın kalanında kullanılmak üzere değişkenler tanımlanmaktadır. Ayrıca Summary-Özet ile programın kısa bir tarifi yapılmaktadır.
%define version 2.8 %define release 7mdk Name: aumix Summary: A GTK+/Ncurses audio mixer Version: %{version} Release: %{release} |
Eğer RPM paketinizin Mandrake Linux'ta resmen kullanılmasını hedefliyorsanız GPL lisanslı olmasına dikkat etmeniz gerekir.
License: GPL |
Mandrake Linux'ta program grupları RedHat veya diğer rpm kullanan dağıtımlardan farklıdır. Eğer Mandrake Linux grupları yerine mesela RedHat gruplarını kullanırsanız sisteminizi karıştırmaktan başka bir işe yaramayacaktır. Mandrake Linux program gruplarının listesine buradan ulaşabilirsiniz: MandrakeGroups
Group: Sound |
RPM oluşumu sırasında gösterilen kaynaklar derlenecektir. Aynı kaynaktan kurulum gibi derleme sırasında sistemde kurulu olması gereken paketler burada belirtilmektedir. Bunlar genellikle tarball içinde yer alan ve genellikle INSTALL dosyasında programın geliştiricisi tarafından belirtilen paketler olacaktır. Derleme sırasında özellikle -devel paketlerinin gerekli olduğuna dikkat edilmelidir.
BuildRequires: ncurses-devel BuildRequires: gtk+2-devel |
Bir programın RPM paketi oluşturulması sırasında programın tarball'u dışında başka kaynak ve yama paketleri de kullanılabilir. Kaynak paketleri genellikle Sourcex, yama paketleri de Patchx şeklinde belirtilir. Source0 satırında yer alan URL kullanım sırasında dikkate alınmaz ve
%{name}-%{version}.tar.bz2kısmı kullanılır.
Source0: http://www.jpj.net/~trevor/aumix/%{name}-%{version}.tar.bz2 # mute(1) man page (from debian): Source1: aumix-mute.1.bz2 Patch0: aumix-2.7-devfs-compliant.patch.bz2 Patch1: aumix-2.8-utf8_vs_gtk2.patch.bz2 Patch2: aumix-2.8-close-dialogs.patch.bz2 |
URL ile GPL lisansına uygun olarak programın kaynak kodlarına erişilecek adres belirtilmelidir.