SUSE Paket Yapılandırma

(SUSE Build Tutorial sayfasından yönlendirildi)
Şuraya atla: kullan, ara

Giriş

Burada, ilk olarak Suse'nin yapısını ve RPM paketleri incelenecektir.Bu belge, size kendi yapılandırmanızı kurmakta yardımcı olacaktır.Bu belgedeki ilk dört bölümün amacı sizlerin verilen örneklerinde yardımı ile işlemler hakkında genel fikir sahibi olmanızdır.

Ön Gereklilik

İlk etapta şunu belirtelim,RPM kurulumu hakkında yeterli bilgi sahibi olmanız gerekmektedir ve bu belge, varolan RPM belgesinin yerine geçmesi için hazırlanmamıştır.Zaten hazırda RPM ile ilgili birçok belge ve kitap mevcuttur. resources paragraph

Aynı zamanda PGP araçları ile tecrübeniz olması gerekmektedir, özellikle [GNU Privacy Guard] OpenPGP en çok kullanılan implantasyon olduğu için büyük önem taşımaktadır.ikinci etapta, paket imzalarından bahsederken PGP'nin neden önemli olduğu açıklanacaktır.SUSE mimarisinde kuruluma başlamadan önce, kendi paketlerinizi imzalayabilmeniz için kendi PGP anahtarınızın olması gerekmektedir.

Şunu da hatırlatmalıyızki, projenizde kendi paketinizin kullandığı kaynak kod ortamı hakkında da bilgi sahibi olmanız faydalı ve gereklidir.Paketlerle çalışırken, Suse kurulum mimarisi bazı hatalara rağmen çalışabilir ancak proje sorumlusunun make, autoconf, imake konularında veya diğer kaynak kod konfigürasyon mekanizmaları hakkında bilgi sahibi olması, paket çalışmalarında büyük fayda sağlar.

Gerekenler

İlk önce, gerekenler, harddiskinizde 3GB boş yeriniz ve kurulum aracınızdır. y2pmbuild. 3GB boş yere ihtiyacınız vardır.Çünkü kurulum aracınız, paketlerinizi kurmak için, sistem içerisinde ayrı bir Linux ortamı varmış gibi davranıyor.Bu izole edilmiş halde çalışan ortamın bize en büyük faydası paket kurulumlarının herhangi bir şekilde mevcut ortamı etkilememesidir.Tek eksisi ise, her ayrı kurulum ortamı için; 3GB yere ihtiyaç duymasıdır.Ancak, günümüzdeki harddisk kapasitelerini düşünürsek bunun bizler için bir sorun olacağını sanmıyoruz.

Kurulum aracımız, (y2pmbuild) sistemde belirttiğimiz yerde, kurulum ortamını hazırlar ve paketleri de bu ortam içerisinde kurar.Kurulum ortamı, temel sistem ve sizin RPM özellikleri dosyasında belirlediğiniz ek paketlerden oluşmaktadır.


İş Akışı

Şimdi, paket kurulumunda normal bir işlem akışı incelenecektir.Siz kendi denemenizde hatalarla karşılaşabilirsiniz ancak; denemeniz hata vermeyinceye kadar üzerinde çalışınız.Yapacağımız inceleme ve örneklemelerdeki temel amaç, ilk etapta sizin , hangi noktaya ulaşmaya çalışıldığını daha iyi ve kolay anlamasıdır.

İlk adım - Kurulum gereksinimleri

Eğer kurulu değilse; aşağıdakileri Suse cd,dvd veya kaynağından “yast” ile kurmanız gerekmektedir:

  • y2pmsh
  • bzip2
  • gpg

İkinci adım - y2pmsh yapılandırması

Bu aracı yapılandırırken; sizin ihtiyaçlarınızı karşılaması için, sistemde bazı ufak değişiklikler yapılacaktır. Bazı dikkat etmemiz gereken noktalar vardır. Örneğin::

  • Kurulum ortamını oluşturabilmek için RPM paketlerini nereden alacağız?
  • Kurulum root(yönetici) dizini için kullanılacak temel isim ne olacak?
  • Kurulan RPM leri nereye kaydedeceğiz?
  • Kendi RPM Makro larımızı hazırlamak
  • Kendi RPM brp komutlarımızı veya komut dosyalarımızı kullanmak
  • Kendi gpg kurulumumuzu kopyalamak


and things like that.

Üçüncü Adım – Kaynak dizinini oluşturmak

Paketimizi kurarken kullanacağımız dosyalarımızı bulundurmak için, sizin ve yöneticinin ulaşabileceği bir dizin oluşturmalısınız.Bu dizin sistem içerisinde herhangi bir lokasyonda olabilir.Şunu hatırlatmalıyızki; kurulum ortamını kuracak kişinin root yani yönetici veya yönetici haklarına sahip bir kişi olması gerekmektedir.Eğer sürekli yönetici oturumunda çalışmak istemiyorsanız dosyaları paylaşımlı bir dizin klasör içerisinde bulundurmanızda fayda vardır.

Dördüncü adım – Projemiz için gerekli kaynak dosyaları edinmek

Projemiz için gerekli kaynak dosyalara sahip olmamız gerekmektedir.Birçok proje sıkıştırılmış tarball dosyaları içinde kaynak kodları sunmaktadır.

Beşinci adım – özellikler (spec) dosyasını oluşturmak

Standart RPM kurulumu için gerekli kaynağa sahip olduğunuza göre; ilk önce, paket için bir specfile oluşturmalısınız.Specfile ile ilgili detaylı bilgiyi Suse'de “spec dosyası bölüm 59494” te bulabilirsiniz.

Altıncı adım – Paket kurulumu

Spec dosyasını oluşturduktan sonraki adım; paket kurulumunu test etmektir. Acaba paket kuruluyor mu yoksa işlem başarısız mı? Bunun için yönetici oturumu açılır ve spec dosyası,kaynak ve yamaların olduğu dizin içerisinde y2pmbuild çalıştırılır.

Yedinci adım – paketi test etmek

Eğer kurulum başarılı ise; y2pmbuild kurulan paketleri kendi içinde depolayacaktır.Bu depolama, kurulum için düz geçici yast deposudur.Ayrıca bir sonraki kurulumda da y2pmbuild deposu temel veya ana depo olarak kullanılacaktır.Bu depolama işlemindeki temel amaç; bir sonraki kurulan paketin kendisinden daha önce kurulan pakete ihtiyaç duyması durumunda sorun yaşanmamasını sağlamaktır.


Spec Dosyaları

RPM Spec dosyaları, açık kaynak kodlu Suse'nin paket derleme politikasına uygun olmak zorundadır.Bu terimler size biraz karışık gelebilir.Bunun için daha detaylı bir açıklama vardır. Spec dosyasını kurarken; lütfen, bu dökümanı takip ediniz. Package Conventions.


Y2pmbuild özellikleri

Konfigürasyon

Y2pmbuild Ortamı Değişkenleri

  • BUILD_DIST

Hangi Linux dağıtımı için kurulum yapmak istiyorsunuz.


   export BUILD_DIST=10.0; y2pmbuild


Y2pmbuild Konfigürasyon Dosyaları

y2pmbuild konfigürasyon dosyaları şu dizinde bulunmaktadır;

   /etc/y2pmbuild

Bu dizin altında bütün linux dağıtımları için genel bir konfigürasyon dosyası bulunmaktadır.

   /etc/y2pmbuild/dists_common

ve aynı zamanda belirli bir linux dağıtımı için, özellikle bir konfigürasyon dosyasına sahip olan bir dizin

   /etc/y2pmbuild/dists/DISTRONAME/

y2pmbuild ilk önce genel konfigürasyon dosyasını, daha sonra kullanılan linux dağıtımı için bulunan özel konfigürasyon dosyasını, okumaktadır.

Konfigürasyon dosyaları, y2pmbuild tarafından parsellenmiş olay kabuk komut dizininde bulunmaktadır.Dosyaların diğer programlarca kolay ulaşılabilir olması için özel kabuk komutları kullanmamanız tavsiye edilmektedir.Yorum ve/veya komutlar, bilgi bölümü hariç, dosyanın herhangi bir yerinde bulunabilir. Komutlar # karakteri ile başlar ve satır sonunda sonlanır.Boş satır,boşluk içeren veya yorum içeren satırlar reddedilir.Aşağıda değişkenler,değerler ve anlamları ile ilgili bazı bilgiler bulunmaktadır.

Kurulum kaynağı nasıl ayarlanır:

  • url_*

RPM paketlerinin kaynağı için çeşitli URL adresleri belirleyebilirsiniz.Bu adresler Yast'ın kabul ettiği FTP,HTTP,samba/CIFS,NFS,CD,DVD veya sistem içerisindeki bir lokasyon olabilir..

   url_opensuse="file:/space/dist/opensuse/10.0/"
   url_kde4="http://opensuse.org/projects/kde4/packages/"
   url_gcc5="ftp://ftp.gcc.gnu.org/pub/releases/gcc5/RPMS/"
  • add_sources

Kurulu yönetici kurulumunun kullanacağı kaynakların belirlenmesi:

   add_sources="opensuse kde4 gcc5"


  • buildrootbase

buildrootbase komutu güncel kurulum dizinini belirtmektedir.En son isim ise şu halde olacaktır: $buildrootbase.$USER.$BUILD_DIST

   buildrootbase="/space/build"

Paket imzalamak:

  • rpm_sign_name

paketleri hangi ünvan veya isim ile imzalamak istediğinize karar veriniz.

   rpm_sign_name="Tux Builder <tux@example.com>"

Veya

   rpm_sign_name="tux@example.com"


  • rpm_sign_key

İmzalamak için kullanılacak olan anahtar dosyayı belirleyiniz.

   rpm_sign_key="/etc/y2pmbuild/signkey.asc"

Dosyayı şöyle kurunuz

   gpg -a --export tux@example.com > signkey.asc
   gpg -a --export-secret-key tux@example.com >> signkey.asc

Kurulmuş olan RPM dosyalarını nasıl kullanacağız:

  • repository

Depo dizini kurulmuş olan RPM'leri saklamak istediğimiz yerdir.

   repository="/space/done/$BUILD_DIST"
  • regen_repository

Bir sonraki kurulacak paketin kendisinden daha önce kurulmuş olan pakete ihtiyaç duyması durumunda RPM dosyalarının ve dizininin Yast'ın anlayabileceği bir şekilde bir kurulum kaynağına transfer edilmiş olması gerekmektedir.Bunu yapmak için şunlar kullanılabilir: genIS_PLAINcache (plain), createrepo (yum) veya create_package_descr (ul) aracı.

   regen_repository="plain yum"

Yast kurulum detayları için kurulum kaynaklarına bakmanız tavsiye edilmektedir Installation Sources

Y2pmbuild hazır olduktan sonra, kendisine kurulum ortamına kopyalaması için ekstra dosyalar verebilirsiniz.Aşağıda özellikle bir linux dağıtımı için belirtilen özel dizinler yer almaktadır.”rsync” in kullanıldığını hatırlatmak isteriz, buradan yola çıkarak ne zaman çizgileri dizin isimlerine eklemeniz gerektiğini anlayabilirsiniz.

   /etc/y2pmbuild/files/DISTRONAME/
  • extra_copy

Paketler kurulduktan sonra kurulum kaynağına kopyalanacak olan dizinleri belirlemek için kullanılmaktadır.

   extra_copy="/etc/profile"

Örnekler

Burada gerçekten denenmiş,değişik paket grupları ve belirli bir paket özelliği ile ilgili örnek denemeler bulacaksınız.

KDE Paketleri

BuildRequires: kdelibs3-devel update-desktop-files
Name: kvpnc License: GPL Group: Productivity/Networking/System Summary: GUI frontend for openswan and vpnc Version: 0.7.2 Release: 1 URL: http://home.gna.org/kvpnc/ BuildRoot:  %{_tmppath}/%{name}-%{version}-build Source0:  %name-%{version}.tar.bz2
%description The application can create configurations for various kinds of VPN connections. You should install also the "vpnc" or "openswan" package.
%prep # extract the source and go into the kvpnc-0.7.2 directory %setup -q # source the standard build enviroment as defined in kdelibs3 package . /etc/opt/kde3/common_options # replace the admin/ folder with the version from kdelibs3 (will work for sure with # current autoconf and automake) and create Makefile.in and configure script. update_admin --no-unsermake
%build # source the standard build enviroment as defined in kdelibs3 package . /etc/opt/kde3/common_options ./configure $configkde --disable-final # do compile with the number of jobs given to the --jobs parameter of the build script. make %{?jobs:-j%jobs}
%install iconv -f iso8859-1 -t utf-8 src/kvpnc.desktop > w && mv w src/kvpnc.desktop # install all files into the BuildRoot make DESTDIR=$RPM_BUILD_ROOT install rm -rf $RPM_BUILD_ROOT/opt/kde3/share/doc/HTML/kvpnc # updates the .desktop file. It applys additional translations and Categories for a # proper position in the KDE menu %suse_update_desktop_file %name System Network # does find all localisation files and adds proper database attributes to them %find_lang %name
%clean # clean up the hard disc after build rm -rf $RPM_BUILD_ROOT
%files -f %name.lang %defattr(-,root,root) %dir /opt/kde3/share/icons/hicolor/16x16/apps %dir /opt/kde3/share/icons/hicolor/32x32/apps /opt/kde3/bin/kvpnc /opt/kde3/share/appl*/*/kvpnc.desktop /opt/kde3/share/apps/kvpnc /opt/kde3/share/icons/*/*/*/kvpnc*.png

Gnome Paketleri

# the following line is not a remark, but contains a macro for all 
# needed packages for a standard Gnome application:
# neededforbuild  gnome2-devel-packages
Name: gwget %define prefix /opt/gnome %define sysconfdir /etc%{prefix} License: GPL Group: Productivity/Networking/Web/Utilities Requires: wget Version: 0.95 Release: 1 Summary: Front-end for wget written in GTK+ URL: http://gnome.org/projects/gwget/ # the packages filesystem and gconf2 needs to be installed, before this # package gets installed. Otherwise the script in %post would fail. PreReq: filesystem gconf2 Source:  %{name}-%{version}.tar.bz2 Source:  %name.desktop BuildRoot:  %{_tmppath}/%{name}-%{version}-build
%description Front-end for wget written in GTK+
# extract source tar ball %prep %setup -n %{_name}-%{version}
%build # use global compile flags and run configure script CFLAGS="$RPM_OPT_FLAGS" \ ./configure \ --prefix=%prefix \ --libexecdir=%prefix/lib/gwget \ --libdir=%prefix/%_lib \ --sysconfdir=%sysconfdir \ --datadir=%prefix/share \ --localstatedir=/var/lib \ --mandir=%{_mandir} \ --disable-schemas-install # do compile make
%install # install all files make DESTDIR=$RPM_BUILD_ROOT install # create file list of localized files into file %name.lang %find_lang %{name} # install the gwget.desktop file from %Source1 and apply Catgories (Network and FileTransfer) %suse_update_desktop_file -i gwget Network FileTransfer
# the calls which does get called after installing this package %post # update the gconf database export GCONF_CONFIG_SOURCE=`opt/gnome/bin/gconftool-2 --get-default-source` opt/gnome/bin/gconftool-2 --makefile-install-rule etc/opt/gnome/gconf/schemas/gwget.schemas >/dev/null
%clean # clean up the hard disc after build rm -rf $RPM_BUILD_ROOT
%files -f %{name}.lang %defattr(-,root,root) # the files to package


Perl Paketleri

Perl paketlerini anlamak ve kullanmak çok zor değildir.Çünkü; perl normal paketlemeye oldukça benzer ve kullanımı kolaydır.Tamamen Cpan arşivi için hazırlardır.

Name:         perl-Curses
Version:      1.12
Release:      1
# define the name from CPAN
%define cpan_name Curses
# do this package was known as "perl_cur" in old times. So we do need to Provide and Obsolete
# this package. YaST will install this package during update instead of the old one in this way.
Provides:     %cpan_name
# we better require the exact perl version, which was used to create this package
Requires:     perl = %{perl_version}
Group:        Development/Libraries/Perl
License:      Artistic License, Other License(s), see package
URL:          http://cpan.org/modules/by-module/Curses/
Summary:      A Dynamic Loadable Curses Module for Perl5
Source:       %cpan_name-%{version}.tar.bz2
BuildRoot:    %{_tmppath}/%{name}-%{version}-build
%description This is a dynamic loadable curses module for Perl5. This package can be found at any CPAN archive.
%prep %setup -q -n %cpan_name-%{version}
%build perl Makefile.PL OPTIMIZE="$RPM_OPT_FLAGS -Wall" make make test
%install make DESTDIR=$RPM_BUILD_ROOT install_vendor %perl_process_packlist
%clean # clean up the hard disc after build rm -rf $RPM_BUILD_ROOT
%files %defattr(-,root,root) %doc Artistic Copying README %doc %{_mandir}/man3/* %{perl_vendorarch}/%cpan_name.pm %{perl_vendorarch}/auto/%cpan_name /var/adm/perl-modules/%{name}

Kaynaklar