Arch derleme sistemi

Arch Linux Türkiye Belgeleri sitesinden
Atla: kullan, ara


Konu başlıkları

ABS Nedir?

ABS, Arch Derleme Sistemi' dir. ABS, uygulamaları kaynaktan derlemek ve paketlemek için oluşturulmuş 'ports-benzeri' bir sistemdir. Pacman ikili paket yönetimi için özelleştirilmiş bir Arch aracı iken ABS de kaynaktan pkg.tar.gz paketleri derlemek için özelleştirilmiş bir Arch aracıdır.

Ports-benzeri Sistem Ne Demektir?

'Ports' kaynak paketlerin indirilmesini, açılmasını, yamalanmasını, derlenmesini ve kurulmasını sağlayan bir *BSD sistemidir. Bir 'port' kullanıcının bilgisayarında yer alan ve kurulacak uygulamanın adını taşıyan, içinde uygulamanın indirilip derlenmesini ve kurulmasını sağlayan talimatları içeren bir kaç yapım dosyası bulunan küçük bir dizindir. Sistem istenen uygulamayı, bu dizine ya da port' a girerek ve 'make' ve 'make install' komutlarını kullanarak indirir, derler ve kurar.

ABS Benzer Bir Yapıdadır.

ABS; /var/abs dizini altında alt dizinler halinde, derlenebilir paketlerin adlarını taşıyan kategorileri içeren bir ağaç dizini (ABS ağacı) şeklinde yapılandırılmıştır. Bu ağaç, SVN sisteminden alınabilen bütün resmi Arch yazılımlarını sunar (ama bunları içermez). Her paket-adlı alt dizine 'ABS' olarak, tıpkı bir 'port' gibi, başvurulabilir. Bu ABS' ler veya alt dizinler, yazılım paketini veya kaynak kodunu içermemekle birlikte bir PKGBUILD dosyası ve bazen de gerekli başka dosyaları içerirler. Bir PKGBUILD, bir paketin kaynak kodunun indirilebileceği adresi ve derleme için gerekli komutları içeren bir BASH kabuk betiğidir. ABS' nin en önemli bileşeni bu PKGBUILD dosyalarıdır. ABS, Ports sisteminden üstündür; çünkü yazılım önce derlenir sonra da paketlenir ve bu paketten kurulur. Böylece, pacman, Arch Linux Paket Yöneticisi, paket kurulumu, yükseltilmesi ve kaldırılıması işlemlerini yapar.

Özet Yol Haritası

Abs' yi pacman -S abs komutu ile kurun.Root kullanıcı olarak 'abs' komutunu çalıştırdığınızda Arch Linux sunucusu ile eş zamanlı olarak ABS ağacı oluşur. Bir paketi kaynaktan derlemek istediğinizde o paketin derleme dosyalarını (/var/abs/<depo>/<paket_adı> dizininde bulunur.) derlemeyi yapacağınız dizine kopyalayın ve makepkg komutunu verin. PKGBUILD içindeki talimatlara göre, makepkg uygun kaynak arşivini indirecek, açacak, arzu edilirse yamalayacak, makepkg.conf dosyasındaki CFLAGS uyarınca derleyecek ve sonuçta .pkg.tar.gz uzantılı bir paket oluşturacaktır. PKGBUILD dosyaları sizin yapılandırma isteklerinize ve ihtiyaçlarınıza göre ya da yama uygulamak üzere özelleştirilebilirler. Oluşturulan paket pacman -U <.pkg.tar.gz dosyası> komutu ile sisteme kolayca kurulabilir. Paketin sistemden kaldırılması da yine pacman tarafından yapılır.

Ayrıca, başka kaynaklardan kendi paketinizi oluşturmak için de makepkg kullanabilirsiniz. (İngilizce olan paket yapımı makalesini okuyun.)


ABS Ağacı kullanarak; bir Arch kullanıcısı, Arch yazılımlarını kolaylıkla kaynaktan derleyebilir, istediği gibi özelleştirebilir, otomatik biçimde .pkg.tar.gz paketleri oluşturabilir ve sonra pacman ile kurabilir.

Genel Olarak ABS

'ABS' genel bir terim olarak kullanılabilir; çünkü birçok bileşene dayanı ve bunları içerir.Teknik olarak kesinlik taşımamakla birlike, 'ABS' tam bir alet çantası olmak üzere aşağıdaki yapı ve araçlerı ifade eder:

  • ABS ağacı: (yerel) makinenizdeki /var/abs/ altında bulunan ABS dizin yapısı. Birçok alt dizini içerir. Bütün erişilebilir Arch Linux derleme dosyalarının adını alır ama paketlerin kendilerini içermez.
  • ABS: Arch Linux PKGBUILD dosyalarını almayı ve derlemeyi sağlayan araçlar topluluğudur. Örnek PKGBUILD dosyaları da bulunur.
  • PKGBUILD Dosyaları: Paket derlemek için gerekli talimatları ve kaynak paketin bağlantısını içeren, ABS dizinlerinde bulunan veya kişisel olarak oluşturulmuş bash betikleridir.
  • makepkg: ABS kabuk komutu aracıdır. PKGBUILD dosyalarını okuyarak kaynak paketlerini kendiliğinden indirip derler ve .pkg.tar.gz uzantılı Arch Linux paketlerini oluşturur.
  • Pacman: Pacman tamammen bu sistemden ayrı olmakla birikte, derlenen paketleri kurmak veya kaldırmak ve bağımlılıkları kurmak için zorunlu olarak makepkg tarafından veya elle çalıştırılan yazılım yöneticisidir.
  • AUR : Arch Kullanıcı Topluluğu Deposu (Arch User-Community Repository, ABS' den tamamen ayrıdır. Fakat AUR [unsupported] PKGBUILD dosyaları ABS' nin makepkg aracı kullanılarak derlenerek paketlenebilir. AUR, resmi Arch depolarında bulunmayan, kullanıcılar tarafından düzenlenmiş 8000' i aşkın PKGBUILD dosyası içerir. Resmi Arch ağacı dışındaki bir paketi derlemek isterseniz AUR bunun için iyi bir kaynaktır.

Neden ABS kullanmak isteyeyim ki?

Arch Derleme Sistemi (kısaca ABS) şu işlere yarar:

  • Henüz paketlenmemiş yazılımları kaynaktan derlemenizi sağlar (Bkz Paket oluşturma)
  • Varolan paketi ihtiyaçlarınıza göre düzenlemeye yarar (özellik etkinleştirme, etkisizleştirme ve yamalamak gibi)
  • Derleyici flag'lerinizle tüm sistemi yeniden inşa etmenizi sağlar "FreeBSD'deki gibi"
  • Temiz bir çekirdek inşa edip kurmanızı sağlar (Bkz Kernel Compilation)
  • Çekirdek modüllerinin kendi inşa ettiğiniz çekirdekle çalışmasını sağlar.

ABS Arch Linux kullanmak için gerekli değildir, fakat kaynaktan derlemede bazı görevleri otomatikleştirme adına oldukça faydalıdır.

Bu NASIL dökümanı size Arch paketleri ve ABS hakkında genel bir bakış sağlayacaktır. Bu bir Rehber değildir! Daha fazla bilgi istiyorsanız "man" sayfalarını deneyiniz.

Başlangıç: Paketleri Kurmak

Abs' yi kullanabilmek için öncelikleTo use abs, core deposundan abs paketini kurmalısınız; bu kolayca, şu komut verilerek yapılır:

pacman -S abs

Böylece zorunlu bağımlılıklar da kurulacaktır.

/etc/abs.conf

Kök olarak arzu ettiğiniz depoları içermesi için /etc/abs.conf dosyasını düzenleyin:

vim /etc/abs.conf

veya:

nano -w /etc/abs.conf

Gerekli yerlerde depoların önündeki ! işaretini kaldırın. Mesela.:

REPOS=(core extra community !testing)

ABS Ağacını Oluşturun

Kök olarak şu komutu verin:

abs

Şimdi ABS ağacınız /var/abs dizini altında oluşturulacaktır. ABS ağacının uygun dalları oluşmuş olacak ve daha önce /etc/abs.conf dosyasında tanımladıklarınızla eşleşecektir.

abs komutu, ABS ağacını periyodik olarak eşleştirmek ve güncellemek için kullanılabilir.

/etc/makepkg.conf

/etc/makepkg.conf, genel ortam değişkenlerini ve derleyici bayraklarını belirler. Bir SMP sisteminiz varsa veya arzu ettiğiniz iyileştirmeler varsa bu dosyayı değiştirebilirsiniz. Öntanımlı ayarlar tek işlemcili sistemlerde kararlı çalışacak x86_64 ve i686 mimariler için düzenlenmiştir.(Öntanımlılılar SMP makinelerde de çalışacaktır; ancak derleme esnasında sadece tek çekirdek/ işlemci kullanacaktır. Bkz.: makepkg)

ABS Ağacı

ABS'yi ilk çalıştırdığınızda, ABS ağacı ile Arch Linux sunucusunu senkronize eder. Peki nedir bu ABS ağacı? /var/abs altındadır ve şuna benzer:

| -- core/
|     || -- base/
|     ||     || -- acl/
|     ||     ||     || -- PKGBUILD
|     ||     || -- attr/
|     ||     ||     || -- PKGBUILD
|     ||     || -- ...
|     || -- devel/
|     ||     || -- abs/
|     ||     ||     || -- PKGBUILD
|     ||     || -- autoconf/
|     ||     ||     || -- PKGBUILD
|     ||     || -- ...
|     || -- ...
| -- extra/
|     || -- daemons/
|     ||     || -- acpid/
|     ||     ||     || -- PKGBUILD
|     ||     ||     || -- ...
|     ||     || -- apache/
|     ||     ||     || -- ...
|     ||     || -- ...
|     || -- ...
| -- community/
|     || -- ...

Yani ABS ağacı paket veritabanıyla tamamen aynı yapıya sahiptir:

  • İlk seviye dizin Kategorileri temsil eder
  • İkinci sevice dizinler ABS'nin kendisini temsil eder. Yani dizin isimleri inşa etmek istediğiniz paketlere karşılık gelir.
  • PKGBUILD dosyaları paketi ilgilendiren gerekli bütün bilgiyi barındırır.
  • Gerisinde ise yamaları ya da inşa için gerekli diğer dosyaları içeren bir ABS dizini olabilir

Şunu anlamak önemlidir ki paketin kaynak kodu ABS dizininde değildir. Bunun yerine PKGBUILD dosyası ABS'nin otomatik indireceği linki barındırır.

Bir İnşa Dizini Yaratmak

Derleme işleminin gerçekleşeceği bir inşa klasörü yaratmalısınız. Burası ABS ağacını inşa etmek dışında herşeyi yapacağınız yer olacak. Yoksa her ABS güncellemesinde veri kaybı olacaktır. Pratik yapmak için "home" klasörünüzü kullanabilirsiniz. Buna karşın bazı Arch kullanıcıları /var/abs altında normal kullanıcının sahip olduğu bir yerel dizin oluşturmayı tercih edebilirler. ABS'yi ağaçtan (var/abs/branch/category/pkgname) inşa dizinine kopyalayın. /inşa/dizini/

İnşa dizininizi oluşturun. Örneğin:

mkdir -p /home/kullanıcıadınız/abs

NOT: ABS ağacının ilk indirmesi en büyüğüdür. Sonradan ise küçük güncellemeler gerekmektedir. Bu yüzden ilk indirme uzun sürerse endişelenmeyin.

Artık ABS ağacının ne olduğunu biliyoruz. Peki nasıl kullanabiliriz?

İnşa İşlevi, Geleneksel Yöntem

Eğer kaynaktan derlemeye aşina değilseniz şunu bilin ki çoğu paketi bu geleneksel yöntemle kaynaktan derleyebilirsiniz:

  • Kaynak tar dosyasını karşıdan indirin (Web tarayıcınız, ftp, wget vs hangi yöntemle isterseniz)
  • Kaynak dosyayı açın
  tar -xzf foo-0.99.tar.gz
  tar -xjf foo-0.99.tar.bz2
  • Dizine girin
cd foo-0.99
  • Paketi düzenleyin. Genelde paketleri düzenlemek için (ekleme, kaldırma desteği, kurulum yeri vs) kaynak dizin içinde configure adı verilen bir betik vardır. Paketin gereksinim duyduğu yazılımlar sisteminizde var mı kontrol edin. Düzenleme betiğini şu komutla çalıştırabilirsiniz:
./configure [[option]]

İsterseniz nasıl çalıştığını daha iyi anlayabilmek için ilk önce yardımı deneyebilirsiniz

./configure --help

Eğer betikte bir --prefix seçeneği geçmiyorsa çoğu betik kurulum dizini olarak /usr/local'ı kullanır. Fakat diğerleri /usr'yi kullanır. Tutarlılık için genelde seçeneklerde --prefix=/usr/local geçmesi tavsiye edilir. Kişisel programları /usr/local içine, dağıtımın kullandığı programları ise /usr içine kurmak en uygunudur. Böylece kurulan paket versiyonları ile paket yöneticisindeki paketlerin bir arada olması sağlanmış olur.

./configure --prefix=/usr/local
  • Kaynağı derleyin:
make
  • Kurun
make install
  • Programı kaldırma işlemi kaynak klasöre girip şu komutu yazarak gerçekleştirilebilir:
make uninstall

Fakar, her zaman öncelikle paketin nasıl derlenip kurulacağını öğrenmek için INSTALL dosyasını okumalısınız. Bütün paketler configure; make; make install sistemiyle kurulmaz.



Kalem.png
ÖNEMLİ:
Yukarıdaki tar dosyasından derleme yöntemi tabi ki Arch Linux için de kullanılabilir. Ama eğer dikkatli olmazsanız dosyalar dosya sisteminde dağınık halde ya da pacman'in algılayamayacağı durumlarda olabilirler. Bu yöntemi sadece elle derleme ve sistem yazılım takibi konusunda tecrübeli iseniz kullanın. Çünkü ilerde bu Arch'da ya da paket yöneticisi kullandığınız herhangi başka bir dağıtımda sorunlara neden olabilir.

ABS yöntemi ile paket derlemek

ABS inşa sürecini özelleştirme konusunda güçlü bir yardım sunan mükemmel bir araçtır. ABS yöntemi ile, paket inşa dosyaları, paketin derleneceği dizine kopyalanır ve makepkg ile paket oluşturulur. Örneğimizde, slim için bu işlemi nasıl gerçekleştireceğimizi göreceğiz:

  • 1. slim inşa dosyalarını paketi oluşturmak istediğiniz dizine kopyalayın.
cp -r /var/abs/extra/x11/slim/ /home/kullanıcı/abs
  • 2. Dizine girin
cd /home/kullanıcı/abs/slim
  • 3. Normal kullanıcı olarak paketi oluşturun:
makepkg -c

Yetkili kullanıcı olarak oluşan paketi kurun:

# pacman -U slim 1.3.0-2-i686.pkg.tar.gz

Bu kadar. Bu işlemler sonucunda slim uygulamasını kaynak kodundan derleyip sisteme kurmuş oldunuz. Paketi kaldırmak istediğinizde pacman kullanarak paketi kaldırabilirsiniz. (pacman -R slim)

  • Hangi işlemler yapıldı?

Yukarıda anlatıldığı gibi, ./configure, make ve make install komutları çalıştırıldı, fakat bu işlem sahte bir root ortamında gerçekleştirildi. (Bu ortamı sağlayan uygulama, fakeroot uygulamasıdır ve fakeroot uygulaması ile, tıpkı gerçek bir root kullanıcısıymış gibi paket kurulur ve kurulan pakete root izinleri atanır.) Daha sonra oluşturulan ikili dosyalar bir .pkg.tar.gz arşivine sıkıştırılarak konuldu (paket haline getirildi). Kurulumda pacman bu arşivi gerçek kök dizine açar. Bu işlem bundan ibarettir.

  • ABS yöntemi paket inşasının ve kurulum fonksiyonlarının kontrolünü ve şeffaflığını bozmadan PKGBUILD içerisinde tanımlanan seçenekler yardımıyla otomatik ve rahat bir kurulum imkanı sağlar.

Daha detaylı bir PKGBUILD anlatımı için paket oluşturma sayfasını incelemeniz tavsiye edilmektedir.

ABS Kaynakları

Kişisel araçlar
GOOGLE
Diğer dillerde