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  2.8-7mdk
- BuildRequires

(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.bz2
kı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.