Konsol Kullanmadan Paket Yapımı

Pardus için nasıl paket yapılacağını anlatan onlarca güzel belge var. Bu da onlardan biri olması için başlanılmış olan bir yazının ilk cümleleri. Peki bunca belge varken yeni bir taneye ne gerek var diye sorabilirsiniz. Pisi paketi yapımı basit olmasına rağmen, GNU/Linux'la veya Pardus'la yeni tanışan kullanıcılarca mesafeli yaklaşılan bir konu. Bununla birlikte bir paket yapmanın kaynak koddan yazılım kurmaktan daha zor bir tarafı yok, hatta paket oluşturarak yazılımı bu şekilde kurmanın daha kolay olduğunu iddia edebilirim. Çünkü kaynak koddan yazılım kurarken en basitinden ./configure, make, sudo make install vb. komutları konsol üzerinden çalıştırmak gerekir. Bu işlemler eğer kullanıcı daha önceden konsol arayüzüyle tanışıklığı yoksa zor olarak değerlendirilebilir. Paket yapmanın kolaylığı ise bu noktada anlaşılıyor. Pardus için bir paket yapmak için hiçbir konsol komutu kullanmanıza gerek olmadığını gösterir bir örnek üzerinden bu durumu daha iyi anlatabilirim sanırım.

İlk önce kısa bir ihtiyaç listesi çıkaralım:
  • Pardus için paket yapmak isteyen bir bünye (yazıyı buraya kadar okumaya tahammül edebildiyseniz tamamdır).
  • Güncel bir Pardus 2009 kurulumuna sahip bilgisayar.
  • Temel geliştirme paketleri (http://svn.pardus.org.tr/pardus/2009/stable/system/devel/ adresinde bulunan paketleri Paket Yöneticisi'nde aratarak yükleyebilirsiniz).
  • Paketle servis menüsü (http://tinyurl.com/paketle adresinden indirebilir, /home/kullanıcı-adınız/.kde4/share/kde4/services/ServiceMenus dizinine kopyalayarak kullanıma hazır hale getirebilirsiniz).
  • PisiYap (Paket Yöneticisi aracılığıyla yükleyebilirsiniz).
  • KWrite
  • Dolphin

İhtiyaç listesindekileri tamamladıktan sonra aşağıdaki basamakları takip ederek paket yapımı adına ilginç bir yolculuğa çıkabilirsiniz:

1. KDE Menüsü içinde bulunan Geliştirme bölümüne girerek PisiYap'ı açın.


2. PisiYap ilk kez kullanıyorsanız bir kereye mahsus olarak çeşitli ayarları gerçekleştirmeniz gerekiyor. Ayarları yapabilmek için üst bölümde yer alan Ayar sekmesine basın. Ayar bölümünde paketçi bilgilerini ve paketlerin oluşacağı dizini belirleyin. Bilgileri girdikten sonra Tamam düğmesine basarak ayarların kaydedilmesini sağlayın.




3. Arşiv sekmesine geçerek paket yapımına devam edebilirsiniz. İnternetten indirmiş olduğunuz bir arşiv dosyası varsa bu dosyayı seçerek arşivin tekrar indirilmemesini sağlayabilirsiniz. Bu seçenek sayesinde incelemek için önceden indirdiğiniz arşivin tekrar indirilmesi önlenerek zaman ve bant genişliği kaybetmemeniz sağlanır. Gözat bölümünden arşiv dosyasının yerini seçer ve yönetici parolanızı girerseniz PisiYap sizin için arşiv dosyasını /var/cache/pisi/archives dizinine kopyalar.




Ev sayfası bölümünde yazılımın ana sayfasının adresini yazabilirsiniz. Arşiv adresi ise yazılımın paketlediğiniz sürümünün iternette bulunduğu yeri tanımlayacağınız bölümdür. Yazılımın indirme (download) bölümünde gerekli bağlantıları bulabilirsiniz. Yazılımın sürümü paket isminden otomatik olarak bulunmaktadır. Eğer arşiv dosyasında sürüm bilgileri yoksa veya herhangi bir nedenle sürüm bilgisi doğru tahmin edilmemişse sürüm numarasını elle de girebilirsiniz.

4. Paket sekmesinde ise paket isminin otomatik olarak seçildiğini görebilirsiniz. Eğer pakete farklı bir isim vermek isterseniz Yeni Paket İsmi bölümünden bu ismi girebilirsiniz. Paketçi ismi ve e-posta adresini Ayar bölümünde tanımladığınız için buradaki bilgiler eğer istediğiniz gibiyse değiştirmeden bırakabilirsiniz.






5. pspec.xml sekmesiyle paketimize şekil vermeye devam edelim. Lisans bölümünden özgür yazılımlarca sık kullanılan lisansları bulabilirsiniz. Eğer paketini yaptığınız yazılım bunlarda birini kullanıyorsa buradan seçim yapabilirsiniz. Eğer içlerinde aradığınız lisans yoksa Yeni Lisans bölümünde elle lisans ismini belirtebilirsiniz. Pisi paketleri için hangi lisansların tanımlı olduğu ve hangi kısaltmayı kullandığını http://svn.pardus.org.tr/uludag/trunk/pisi/pisi-spec.rng adresinde license araması gerçekleştirerek görebilirsiniz. Yazılımın hangi lisansı kullandığını ise yazılımın internet sitesinden veya arşivi içinden çıkan LICENSE, COPYING, vb. dosyadan öğrenebilirsiniz.



IsA bu bir kuş, bu bir uçak, hayır bu süper bir konsol yazılımı bölümüdür. Yazılımın ne tür bir yazılım olduğunu IsA etiketi aracılığıyla tanımlayabilirsiniz. Kısaca şu şekilde özetlenebilir seçilebilir değerlerin ne oldukları:

  • app genel olarak yazılımlar.
  • app:console konsol üzerinde çalışan yazılımlar.
  • app:gui grafik kullanıcı arayüzüne sahip yazılımlar.
  • app:web internetle ilgili yazılımlar (tarayıcı, sohbet yazılımları vs. değil)
  • data herhangi bir konuyla ilgili veri paketleri (oyunun haritaları, grafik yazılımları için fırçalar...)
  • data:doc belgelendirme içeren paketler.
  • data:font yazıtipleri.
  • driver sürücü paketleri.
  • library kütüphaneler.
  • locale yerelleştirmeler.
  • kernel çekirdekle ilgili şeyler.
  • service servisler.

Özet bölümünde paketi özetleyebilecek başlığımsı tanımlar kullanabilirsiniz. Başlılarda olduğu gibi kısalığına ve konuyu özetleyebilmesine dikkat etmeye çalışın ve sonda herhangi bir noktalama işareti kullanmayın.

Açıklama bölümünde ise paket hakkında kafanızda bir tanım veya verebileceğiniz bir örnek varsa eklemekten çekinmeyin. Paketin internet sayfasında veya indirdiğiniz arşiv dosyasında bulunması muhtemel README (OKUBENİ) dosyasında geliştiricisinin yazmış olduklarından kopya çekebilirsiniz.

actions.py sekmesinden yazılımın hangi derleme sistemi ile kuruluyorsa ona uygun modülü seçmeniz gerekmektedir. Arşiv dosyasının içine göz atarak, INSTALL (YÜKLE) dosyasını okuyarak veya yazılımın internet sitesinin kurulum hakkındaki sayfasını ziyaret ederek gerekli bilgileri edinebilirsiniz. İlgili modülleri nasıl kullanacağınız hakkında detaylı bilgiyi http://tr.pardus-wiki.org/Pardus:ActionsAPI adresinden edinebilirsiniz.




Derleme (inşa) sistemleri hakkında kendim için bir okuma listesi çıkardım, aşağıdaki gibidir. Şimdi değilse bile daha sonra oluşturacağınız paketler için faydalı bilgiler edinebilirsiniz.



6. Dosyalar sekmesinde pakete eklenecek ek dosyalarla ilgili ayarları gerçekleştirebilirsiniz. Eğer paketlediğiniz yazılım grafik kullanıcı arabirimine sahipse yazılımın KDE Menüsünde yer alması için Desktop dosyası oluşturma seçeneğini açabilir ve ayrıca yazılımın paket yöneticisinde hangi simgeyle görüneceğini ayarlayabileceğiniz simge etiketi ekleyebilirsiniz. Servis ve Çomar dosyaları oluşturma ise çeşitli gelişmiş paketler oluşturacağınız zaman ihtiyaç duyabileceğiniz seçenekler olduğu için şimdilik görmezden gelebilirsiniz.



İşlem bittikten sonra kaynak dizinini aç seçeneğini aktifleştirdikten sonra Oluştur düğmesine basarak paketimiz için taslak olarak niteleyebileceğimiz dosyaların oluşturulduğu dizine geçebiliriz.


7. Paket yapımına devam etmeden önce Hakkında sekmesine de göz atarak hem bir soluk alabilir hem de bu güzel yazılımın geliştiricilerini tanıyabilirsiniz. Buradan (ve şuradan) PisiYap'ı yapanlara; Murat Şenel, Serdar Soytetir, Kenan Pelit, Mehmet Nur Olcay ve H. İbrahim Güngör'e teşekkür ediyorum. Umarım yeni sürümler çıkarırlar.




8. Açılan Dolphin penceresine geçerek, bizden ilgi bekleyen paket dosyaları düzenlemeye başlayabilirsiniz. Unutmamanız gereken PisiYap'ın sadece işinizi kolaylaştıran bir araç olduğudur, paketi yapan yine siz olacaksınız. Bunun için de çeşitli temellleri bilmeniz gerekmektedir.




9. translations.xml dosyasıyla devam edelim. translations.xml pspec.xml dosyası için bir uluslararasılaştırma dosyasıdır, pspec.xml içindeki açıklama ve özet bölümleri gibi çok dilli olması gereken etiketler bu dosya içerisine alınarak pspec.xml dosyasının daha rahat okunabilir olması ve çeviri işlemlerinin daha kolay yapılması sağlanır. Bu dosya pspec.xml ile aynı dizinde bulunmalıdır. Çeviri yapacağınız dili belirtmek için http://www.iso.org/iso/english_country_names_and_code_elements adresindeki ülke kodlarını kullanabilirsiniz. Örneğin Türkçe için seçmeniz gereken kod tr'dir. Daha sonra da pspec.xml'in özet ve açıklama etiketi içindeki tanımları çevirmek istediğiniz dile aktarabilirsiniz. Bu işlemleri istediğiniz kadar dil için tekrar edebilirsiniz.




10. actions.py yazılımın kaynak dosyasından Pisi paketi haline hangi işlemlerden geçerek dönüştürüleceğinin tanımlandığı dosyadır. Python programlama dili yapısındadır. Paket yaptıkça, Pardus depolarındaki (http://paketler.pardus.org.tr/) kaynak paketleri inceledikçe, uygulama geliştirme arayüzünü (http://tr.pardus-wiki.org/Pardus:ActionsAPI) okudukça action.py üzerinde daha kolay işlem yapabilirsiniz.

Bu belgede tek seferde çok fazla detay verererek kafanızın karışmasını istemiyorum. Daha sonra okumak isteyebileceğiniz bir kaç yazının bağlantısı şu şekilde:


actions.py'de farklı python kodları ve fonksiyonları kullanmanıza imkan tanıyan kütüphaneleri kullanabilirsiniz. Paketi oluşturmak için ihtiyaç duyulan kütüphaneler varsa import ile actions.py içinde kullanılabilir olması sağlanabilir, nereden yükleneceği de from ile belirtilir. Örneğin SWFTools için sadece

from pisi.actionsapi import autotools
from pisi.actionsapi import pisitools

fonksiyonları yeterli olacaktır. Böylece pisi.actionsapi içindeki autotools ve pisitools dosyasındaki fonksiyonları pisitools.fonksiyon_adı(…) şeklinde kullanabilirsiniz.

Temel bir actions.py dosyası şu yapıdadır:

def setup():
   #Hazırlık işlemleri

def build():
    #Derleme işlemleri

def install():
    #Kurulum işlemleri


Yukarıdaki yapıyı paketlemek istediğiniz yazılıma göre şekillendirebilirsiniz. PisiYap'ın oluşturduğu actions.py'de küçük değişiklikler yaparak SWFTools için uygun hale getirebilirsiniz. get fonksiyonunu kullanmayacağınız için silebilirsiniz. pisitools.dodoc fonsiyonunu da sadece arşiv dosyasının içinden çıkan belgeleri yükleyecek şekilde değiştirebilirsiniz. Değişikliklerden sonra actions.py'yi kaydederek kapatabilirsiniz.




11. Paket dosyalarının bulunduğu dizine girerek pspec.xml dosyasını sağ tıklayarak Paketle düğmesine basın ve açılan iletişim penceresine yönetici parolanızı yazarak işlemin gerçekleşmesini onaylayın. İçinde bulunduğunuz dizinde swftools-0.9.0-1.pisi isminde bir Pisi paketi oluştu, fakat henüz işi bitmediği için yüklemeyin.




12. Dolphin'de yeni bir sekme açın ve /var/pisi/swftools-0.9.0-1/install dizinine girin. Bu, paketi sisteme kurmuş olsaydınız nereye ne yükleneceğini görebileceğiniz sanal bir kök dizindir. Buradaki dizinlere göre pspec.xml'yi şekillendirebilirsiniz.




13. pspec.xml içindeki Files (Dosyalar) etiketine geçerek all (hepsi) genel tanımı yerine daha özel tanımlamalar yapabilir ve böylece paketin bilginiz dahilinde olmadan herhangi bir yere bir şey kopyalamamasını sağlayabilirsiniz.




14. Bağımlılık bir paketin derlenebilmesi ve çalışabilmesi için gereken paketlerdir. İki çeşit bağımlılık vardır: Build Dependency (İnşa Bağımlılığı, paketin derlenebilmesi için gereken paketler) ve Runtime Dependency (Çalışmazamanı Bağımlılığı, paketin çalışabilmesi için gereken paketler). Paketlemek istediğiniz yazılımın derlenirken ve çalışırken hangi diğer paketlere ihtiyaç duyduğunu yazılımın sitesinden, arşiv dosyasının içindeki README ve INSTALL dosyalarından ve diğer dağıtımların bu yazılım için oluşturulmuş paketlerinden öğrenebilirsiniz.

Bağımlılık yazarken bazı noktalara dikkat etmelisiniz. Yazılımın derlenmesi için gereken diğer yazılımlar eğer http://svn.pardus.org.tr/pardus/2009/stable/system/devel/ adresinde bulunan temel derleme yazılımlarından biriyse bunları inşa bağımlılığı olarak yazmanıza gerek yok. Aynı şekilde yazılımın çalışması için gereken diğer yazılımlar eğer http://svn.pardus.org.tr/pardus/2009/stable/system/base/ adresindeki yazılımlar arasında bulunuyorsa bunları çalışma bağımlılığı olarak yazmanıza gerek yoktur.




SWFTools'un bağımlılıklarını arşiv dosyasının içindeki FAQ dosyasından öğrendikten sonra temel derleme ve temel sistem yazılımlarıyla karşılaştırarak pspec.xml'ye yazabilirsiniz.




15. Tüm bu işlemlerden sonra actions.py, pspec.xml ve translations.xml'in yeni halleri şöyledir:

actions.py:


#!/usr/bin/python
# -*- coding: utf-8 -*-
#
# Licensed under the GNU General Public License, version 3.
# See the file http://www.gnu.org/copyleft/gpl.txt

from pisi.actionsapi import autotools
from pisi.actionsapi import pisitools

def setup():
    autotools.configure()

def build():
    autotools.make()

def install():
    autotools.install()

    pisitools.dodoc("AUTHORS", "ChangeLog", "COPYING", "FAQ")


pspec.xml:

<?xml version="1.0" ?>
<!DOCTYPE PISI SYSTEM "http://www.pardus.org.tr/projeler/pisi/pisi-spec.dtd">
<PISI>
    <Source>
        <Name>swftools</Name>
        <Homepage>http://www.swftools.org</Homepage>
        <Packager>
            <Name>Anıl Özbek</Name>
            <Email>ozbekanil@gmail.com</Email>
        </Packager>
        <License>GPLv2</License>
        <IsA>app:console</IsA>
        <Summary>SWF manipulation and generation utilities</Summary>
        <Description>SWFTools is a collection of utilities for working with Adobe Flash (SWF) files.</Description>
        <Archive sha1sum="4860edc9f05e3cc5a55779aac3787cb0150146a8" type="targz">http://www.swftools.org/swftools-0.9.0.tar.gz</Archive>
        <BuildDependencies>
            <Dependency>freetype</Dependency>
            <Dependency>jpeg</Dependency>
        </BuildDependencies>
    </Source>

    <Package>
        <Name>swftools</Name>
        <Files>
            <Path fileType="executable">/usr/bin</Path>
            <Path fileType="data">/usr/share/swftools</Path>
            <Path fileType="man">/usr/share/man</Path>
            <Path fileType="doc">/usr/share/doc/swftools</Path>
        </Files>
    </Package>

    <History>
        <Update release="1">
            <Date>2009-12-11</Date>
            <Version>0.9.0</Version>
            <Comment>First release</Comment>
            <Name>Anıl Özbek</Name>
            <Email>ozbekanil@gmail.com</Email>
        </Update>
    </History>
</PISI>


translations.xml:

<?xml version="1.0" ?>
<PISI>
    <Source>
        <Name>swftools</Name>
        <Summary xml:lang="tr">SWF işleme ve üretme araçları</Summary>
        <Description xml:lang="tr">SWFTools Adobe Flash (SWF) dosyalarıyla çalışmak için oluşturulmuş bir araç takımıdır.</Description>
    </Source>
</PISI>


16. Son olarak pspec.xml'yi sağ tıklayarak ve Paketle seçeneğini çalıştırarak SWFTools'un paketini oluşturabilir ve oluşan paket dosyasını tıklayarak sisteminize kurabilirsiniz. Bu kadar.

Bu belge sadece Pardus paket yapımının zor olmadığını göstermek için yazılmıştır. Tek başına bir paket yapım kılavuzu olmasından ziyade paket yapmaya özendirici bir etki oluşturması amacıyla yazılmıştır. Eğer uzun bir süre kullanacağınız, yeni sürümü çıktığında sürüm yükseltmek isteyeceğiniz ve bakımını yaparken zevk alacağınız yazılımlar varsa bunları kaynak koddan yüklemek yerine paketini yaparak yükleyin. Böylece hem sisteminizle daha bütünleşik ve uyumlu bir şekilde yazılım yüklemiş olursunuz hem de paketinizi paylaşırsanız diğer kullanıcıların hiç uğraşmadan yazılımı yüklemesini sağlayabilirsiniz. Paket yapma konusunda yeteri kadar deneyime kavuştuktan sonra http://tr.pardus-wiki.org/Pardus:Yeni_geli%C5%9Ftirici_k%C4%B1lavuzu adresinde yer alan Yeni geliştirici kılavuzu izleyerek paketlerinizi resmi Pardus depolarına yükleyebilirsiniz.

Bu yazıyı yazarken ve paket yaparken yararlandığım kaynaklar aşağıdaki gibidir. Eğer paket yapmak istiyorsanız bu sayfaları tarayıcınızın yer imlerine ekleyerek ihtiyacınız olduğunda kullanabilirsiniz.



Bu yazı iki parçalı bir nasıl belgesinin ilk bölümüdür. İkinci bölümde yama hazırlama için kullanılabilecek yazılımlar, diğer dağıtımların depolarından nasıl yararlanılabileceği, karşılaşılan hataların giderilmesi için izlenecek yollar gibi biraz daha gelişmiş konuları örnekleyen bir yazılımın paketlenmesi anlatılacaktır.

Paket yaparken takıldığınız yerler olursa birçok destek yönteminden birini tercih edebilirsiniz:

  • E-posta Listeleri: Pardus-Kullanıcıları e-posta listesine üye olabilir ve sorularınızı yöneltebilirsiniz.
  • Özgürlükİçin: Pardus hakkında en hızlı geri dönüş ve yardım alabileceğiniz portalın forumunda yer alan PiSi Paket Yapımı bölümünde sorularınızı iletebilirsiniz.
  • Pardus Ansiklopedisi: Paket yapımıyla ilgili birçok konuda bilgi ve ipucu sunan bu kaynak aracılığıyla merak ettiğiniz çoğu şeye kendiniz cevap bulabilirsiniz. Geliştirici adayları ve katkıcılar için belgeler başta olmak üzere ilgili diğer pek çok belge sayesinde kolayca paket yapabilirsiniz.
  • Sohbet (IRC): Pardus geliştirici, katkıcı ve kullanıcıları ile yardımlaşmak ve bilgi alışverişinde bulunmak için irc.freenode.net sunucusunda bulunan resmi olmayan pardus sohbet kanalını da ziyaret edebilirsiniz.

Yorumlar

  1. Üşenmeden bu kadar yazıyı yazdığın için seni tebrik ederim. Güzel bir kaynak olmuş. Pardus-wiki'ye PisiYap'lı kısımları yazsan fena olmaz aslında :D

    YanıtlaSil
  2. kendime not: son okumayı blogger'da değil ooo writer'da yap.

    YanıtlaSil
  3. Bize alkışlamak düşer...
    Bu yazıyı en kısa zamanda Pardus Wiki'sinde görmek istiyoruz. Zamanım yok uğraşamam diyorsanız ben hallederim, bunu her yazı için yapmam ona göre :)

    YanıtlaSil
  4. Ali Bey eğer böyle bir güzellik yaparsanız çok güzel olur. Yazıyı biraz Wiki formatına uyarlar ve bariz imla hatalarımı da düzeltirseniz çok sevinirim :)

    Kolaylık sağlaması açısından görselleri ve düz yazı belgesini de e-posta adresinize gönderiyorum (göndereceğim).

    Temeli siz attıktan sonra ben ve diğer kullanıcılar da belgeyi son kullanıcıların rahatlıkla takip edebilmesi için eklemeler yapacaktır (cümle düşük oldu ama).

    YanıtlaSil
  5. Bende yazının Öİ Atölye kısmında yer almasını isteyecektim. Ayrıca bu güzel yazı için çok teşekkürler...

    YanıtlaSil
  6. http://tr.pardus-wiki.org/NASIL:%C4%B0%C3%A7indekiler#Geli.C5.9Ftirici_adaylar.C4.B1_ve_katk.C4.B1c.C4.B1lar_i.C3.A7in_belgeler

    Belgeyi düzenleyip geliştirebilirsiniz.

    YanıtlaSil
  7. güzel bir çalışma olmuş, tebrikler. Bu arada swftools paketini depoda görecek miyiz ?

    YanıtlaSil
  8. En son size GAP'ı depolara hemen ekliyorum dediğimde uzun bir süre bekletmiştim. Şimdi de öyle bir şey yaşanmaması için sadece gelişmeleri buradan [1] takip edebilirsiniz diyeceğim. Ayrıca oyun alanındaki paket dosyalarını [2] veya paketin ikili halini [3] test ederek varsa hatalarını ve eksikliklerini bildirerek sürecin hızlanmasını sağlayabilirsiniz.


    [1] http://bugs.pardus.org.tr/show_bug.cgi?id=11758

    [2] http://svn.pardus.org.tr/pardus/playground/maidis/swftools/

    [3] http://dl.dropbox.com/u/1836567/Paketler/swftools-0.9.0-1.pisi

    YanıtlaSil
  9. Çok güzel bir yazı olmuş. Ellerin dert görmesin.

    YanıtlaSil

Yorum Gönder

sen de yaz yaz yaz buraya yaz bütün sözlerini

Bu blogdaki popüler yayınlar

Mızıka Tabları Nasıl Okunur

conio.h

Muhtar Kellesi