RPM Oluşturmak
Tarball'dan RPM - gerbv Mandrake İçin RPM Oluşturmak Diğer Yöntemler

RPM Oluşturmak - 050112
Tanju Taşçılar - tanju@elektronist.com
Registered Linux User #283274

Tarball'dan RPM - muhasebeci

RPM oluşturmak için ele alacağımız sıradaki program bizden biri, muhasebeci. Hızla gelişimini sürdüren muhasebeci programı ülkemizde Linux kullanımının yaygınlaşmasında büyük öneme sahip. Muhasebeci geliştirme ekibine başarılar dileriz. Bu programdan RPM oluşturma sırasında karşılaşacağımız sorunlar ve eksiklikler programın gelişmesinin tamamlanmamış olmasından kaynaklanıyor.

Kullanacağımız paket muhasebeci-0.5-YTL.tar.gz. Bu paketi açıyoruz. Açtığımız tar.gz dosyasına kaynaktan kurulum işlemini uygulamaya başladığımızda automake ile ilgili dosyaların link'ler olarak kaldığını görüyoruz. (sonu @ olan dosyalar)

[tanju@gezgin muhasebeci-0.5-YTL]$ ls
ABOUT-NLS*       config.status*  Makefile                news*
acconfig.h*      config.sub*     Makefile.am*            NEWS
acinclude.m4*    configure*      Makefile.in             pixmaps/
aclocal.m4*      configure.in*   missing@                po/
authors*         COPYING@        mkinstalldirs*          readme*
AUTHORS          data/           muhasebeci.desktop      README
autogen.sh*      depcomp@        muhasebeci.desktop.in*  setup-gettext*
autom4te.cache/  INSTALL@        muhasebeci.glade        SQLChangeLog
cachegrind.cmd*  install*        muhasebeci.gladep       src/
ChangeLog*       install-sh@     muhasebeci.prj          stamp-h1
compile@         intl/           muhasebeci.pws*         stamp-h.in*
config.guess*    libtool*        muhasebeci.rapor        todo*
config.h         ltmain.sh       muhasebeci.spec*        TODO
config.h.in      m4/             muhasebeci.spec.in*
config.log       macros/         muhasebeci.sql*

Bu durumda eğer sisteminizde ilgili sürüm yoksa ./configure adımını bile geçemezsiniz. RPM oluşturacağımız sistemde olan automake-1.8 sürümünün dosyalarını bu linklerin üzerine kopyalayarak sabit hale gelmelerini sağlıyoruz. Bunun dışında bir gariplik daha var ama bu bizim işimizi engellemiyor. Paketi açtığımız yerde muhasebeci-0.5-YTL dizini oluşuyor ama ayrıca bir de mkinstalldirs dosyası da açılan paketten çıkıyor.

[tanju@gezgin muhasebeci]$ ls
mkinstalldirs*     muhasebeci-0.5-YTL/  muhasebeci-0.5-YTL.tar.gz

Ayrıca authors, install, news, readme, todo adlı dosyalar hem büyük hem de küçük harfler ile bulunuyor. Bunların küçük harfle olanlarını siliyoruz.

Açtığımız dizinin ismini karşılaştırma için muhasebeci-0.5.5 olarak değiştirip kullanacağız. İkon olarak muhasebeci-0.5.5/pixmaps/muhasebeci-icon.png dosyasını kullanarak gerbv örneğinde olduğu gibi muhasebeci-icons.tar.bz2 dosyasını oluşturup SOURCES alanına kopyalıyoruz. mkinstalldirs dosyasının garip yerinden dolayı muhasebeci-0.5.5 dizini ve mkinstalldirs dosyalarından muhasebeci-0.5.5.tar.bz2 paketini oluşturuyoruz ve bunu da SOURCES alanına kopyalıyoruz.

Aslında paket içinde bir muhasebeci.spec dosyası bulunuyor. Ancak bunu incelediğimizde Mandrake Linux gereklerini yerine getirmediğini görebiliriz. Linkler yerine dosyaları koyduktan sonra bu spec dosyasını kullanarak Mandrake Linux için de RPM oluşturabilirsiniz. Ancak bu Mandrake Linux RPM'leri ile uyumlu olmayacaktır. Mandrake Linux için hiçbir önemi olmayan dosyaları oluşturduğu halde gerekli olan menü dosyalarını ve ikonları oluşturmayacaktır. Bu nedenle kendi spec dosyamızı oluşturacağız.

%define name    muhasebeci
%define version 0.5.5
%define release YTLmdk

# Macros for in the menu-file.
%define section More applications/Finances
%define title   Muhasebeci
%define Summary Open Source Financial Application

Summary:        %Summary
Name:           %name
Version:        %version
Release:        %release
License:        GPL
Group:          Office
URL:            http://muhasebeci.sf.net
Packager:       Tanju TASCILAR <tanju@elektronist.com>

# Please add comment with the right url/downloadpage.
Source0:        %name-%version.tar.bz2

Source1:        %name-icons.tar.bz2

BuildRoot:      %_tmppath/%name-buildroot

# Buildrequires:
# Requires:  

%description
Muhasebeci uygulaması, Linux altında GPL olarak yazılan bir muhasebe programıdır. Uygulama MySQL veritabanini kullanir

%prep
%setup -q
%setup -q -T -D -a1 # unpack icons

%build
%configure
%make

%install
rm -rf %buildroot
%makeinstall

# Menu
mkdir -p %buildroot/%_menudir
cat > %buildroot/%_menudir/%name << EOF
?package(%name): \
command="%_bindir/%name" \
needs="X11" \
icon="%name.png" \
section="%section" \
title="%title" \
longtitle="%Summary"
EOF

# icon
%__install -D -m 644 %{name}-48.png %buildroot/%_liconsdir/%name.png
%__install -D -m 644 %{name}-32.png %buildroot/%_iconsdir/%name.png
%__install -D -m 644 %{name}-16.png %buildroot/%_miconsdir/%name.png

# Macro for locales
%find_lang %name

%post
%update_menus

%postun
%clean_menus

%clean
rm -rf %buildroot

%files -f %name.lang
%defattr(0755, root, root, 0755)
%_bindir/*
%defattr(0644, root, root, 0755)

%doc COPYING README INSTALL AUTHORS

%_menudir/*
%_miconsdir/*
%_iconsdir/*
%_liconsdir/*

%changelog

RPM oluşturmaya çalıştığımızda aşağıdaki hataları elde ediyoruz.

RPM derleme hataları:
    Dosya iki kere gösterildi: /usr/share/icons/large/muhasebeci.png
    Dosya iki kere gösterildi: /usr/share/icons/mini/muhasebeci.png
    Installed (but unpackaged) file(s) found:
   /usr/doc/muhasebeci/ABOUT-NLS
   /usr/doc/muhasebeci/AUTHORS
   /usr/doc/muhasebeci/COPYING
   /usr/doc/muhasebeci/ChangeLog
   /usr/doc/muhasebeci/INSTALL
   /usr/doc/muhasebeci/NEWS
   /usr/doc/muhasebeci/README
   /usr/doc/muhasebeci/TODO
   /usr/share/gnome/apps/Applications/muhasebeci.desktop
   /usr/share/pixmaps/muhasebeci/muhasebeci-icon.png

Bu durumu düzeltebilmek için spec dosyasına %doc bölümünün altına aşağıdaki satırları ekliyoruz.

%doc COPYING README INSTALL AUTHORS

/usr/share/gnome/apps/Applications/muhasebeci.desktop
/usr/share/pixmaps/muhasebeci/muhasebeci-icon.png

/usr/doc/muhasebeci
/usr/doc/muhasebeci/ABOUT-NLS
/usr/doc/muhasebeci/AUTHORS
/usr/doc/muhasebeci/COPYING
/usr/doc/muhasebeci/ChangeLog
/usr/doc/muhasebeci/INSTALL
/usr/doc/muhasebeci/NEWS
/usr/doc/muhasebeci/README
/usr/doc/muhasebeci/TODO

Bu sefer işlemin başarıyla tamamlandığını gösteren exit 0 mesajını görüyoruz.

Yazıldı: /home/tanju/rpm/SRPMS/muhasebeci-0.5.5-YTLmdk.src.rpm
Yazıldı: /home/tanju/rpm/RPMS/i586/muhasebeci-0.5.5-YTLmdk.i586.rpm
%clean icra ediliyor: /bin/sh -e /home/tanju/rpm/tmp/rpm-tmp.26740
+ umask 022
+ cd /home/tanju/rpm/BUILD
+ cd muhasebeci-0.5.5
+ rm -rf /home/tanju/rpm/tmp/muhasebeci-buildroot
+ exit 0
[tanju@gezgin SPECS]$

Muhasebeci için RPM oluşturduk. Ancak bunu incelediğimizde bazı 'uyumsuzluklar' göreceğiz. Oluşturduğumuz RPM Mandrake Linux'ta çalışacaktır. Ancak Mandrake Linux sistemine gerekli olmayan bazı dosyaların kurulduğunu bazılarının da yanlış yerlere kurulduğunu göreceğiz. Dosya listesini incelediğimizde /usr/doc/muhasebeci dizini altına yerleştirilen dosyaların Mandrake Linux'ta standart olarak /usr/share/doc/muhasebeci-0.5.5 dizinine yerleştirilmesi gerektiğini ve zaten bir kısmının da doğru olarak yerleştiğini görebiliriz. Sorun yaratan dosyalar RPM oluşturulması sırasında Mandrake Linux scriptleri tarafından otomatik olarak yerleştirilmemiş olan dosyalardır. Biraz yukarda bunları files listesine elle eklemek zorunda kalmıştık. Bunun dışında /usr/share/gnome/apps/Applications/muhasebeci.desktop ve /usr/share/pixmaps/muhasebeci/muhasebeci-icon.png dosyalarının da Mandrake Linux için hiçbir işe yaramadığı halde sisteme kurulduğunu görüyoruz. Bunların yerine Mandrake Linux'da menu dosyası ve yukarda hazırladığımız üç ikon kullanılmaktadır. Bunlar da spec dosyamız aracılığı ile doğru olarak yerleştirilmişlerdir.

Sorun yaratan bu dosyaların kullanılmaması için muhasebeci-0.5.5 dizinindeki Makefile.am dosyasını inceleyip değiştirmemiz gerekiyor. Önce aşağıdaki satırda yer alan pixmaps girişini siliyoruz.

SUBDIRS = intl po macros src pixmaps

Ardından /usr/doc dizinine yerleştirilecek dosyaları belirleyen aşağıdaki satırları ve muhasebeci.desktop dosyasını oluşturan satırları siliyoruz.

muhasebecidocdir = ${prefix}/doc/muhasebeci
muhasebecidoc_DATA = \
	README\
	COPYING\
	AUTHORS\
	ChangeLog\
	INSTALL\
	NEWS\
	TODO\
	ABOUT-NLS

EXTRA_DIST = $(muhasebecidoc_DATA)

gnomemenudir = $(prefix)/@NO_PREFIX_PACKAGE_MENU_DIR@/Applications
gnomemenu_DATA = muhasebeci.desktop

Bunun ardından Makefile.am dosyasından Makefile.in dosyasının oluşturulması için automake komutunu kullanıyoruz. Burada po/tr_TR.po dosyasının sorun olduğunu belirten bir mesaj alıyoruz ve bu dosyayı siliyoruz. automake ile işlemi tamamladıktan sonra muhasebeci-0.5.5.tar.bz2 dosyasını yeniden oluşturup SOURCES alanına kopyalıyoruz. Yukarda spec dosyasına elle eklediğimiz satırları silip RPM'i oluşturuyoruz. Artık işlem tamamdır. Bu konuya Yamalar bölümünde yeniden değineceğiz.

 


Tarball'dan RPM - gerbv Ön sayfa Diğer Yöntemler
Mandrake İçin RPM Oluşturmak

Bu ve ilişkilendirilmiş yazılar GPL lisansına göre yayınlanmaktadır. Bütün hakları yazarına aittir. Yazarının ismi belirtilerek serbestçe dağıtılabilir ve kullanılabilir. Ancak bunların hiçbiri, hiçbir şekilde ve şartta GPL lisansı haricinde kullanılamaz. Burada yer alanları bulundurmaktan, kullanmaktan veya alıntı yapmaktan dolayı hiçbir sunucu, servis veya protokol, yazı veya içeriği üzerinde hak iddia edemez. info@elektronist.com