Slackware Linux Esasları
İkinci Basım
(Bölüm 18 Slackware Paket Yönetimi)
Alan Hicks Chris Lumens David Cantrell Logan Johnson Çeviri: İsmail Demiral
Bölüm 18
Slackware Paket Yönetimi
Bir yazılım paketi, sizin için kurulmaya hazır ilgili programlar demetidir. Bir kaynak kodu arşivi indirdiğinizde, onu elinizle yapılandırmalı, derlemeli ve yüklemelisiniz. Bir yazılım paketiyle bu sizin için zaten yapılmıştır. Tüm yapmanız gereken paketi kurmaktır. Yazılım paketlerini kullanmanın diğer hazır ve kolay özelliği, eğer arzu ederseniz, programı kaldırma ve yükseltmenin çok kolay olmasıdır.
Slackware, kurulduğunda tüm paket yönetimi ihtiyaçlarınız için gerekli programlarla birlikte gelir.
Paketleri çok kolay kurabilir, kaldırabilir, yükseltebilir, yapabilir ve gözden geçirebilirsiniz.
Ta Red Hat' ın Red Hat paket yöneticisini ilan ettiği yıllara dek giden yanlış bir inanış vardır, o da Slackware' in paket yönetim aracına sahip olmadığı inanışıdır. Bu basit bir biçimde hiç de doğru değildir. Slackware herzaman paket yöneticisi içerdi, hatta Red Hat' ın varlığından bile önce. pkgtool ve onun bileşen programları, rpm kadar tam özellikli ve heryerde rastlanan değil iken, paket kurmada en az rpm kadar iyiydi. pkgtool hakkındaki gerçek onun var olmaması değil, bağımlılık denetimi yapmamasıdır.
Açıkça, Linux çatısı altındaki birçok insan bir paketleyici yöneticisinin bağımlılık denetimini içerecek şekilde tanımlı olması gerektiğini düşünmektedirler. Bağımlılık denetimi Slackware’nin kesin olarak yapmadığı bir durumdur. Bu Slackware paketlerinin bağımlılıklarının olmadığı demek değil, Slackware' in paket yöneticisinin bağımlılıkları denetlemediği demektir. Bağımlılık yönetimi sysadmin' e bırakılmıştır ve bu bizim sevdiğimiz yoldur.
18.1 Paket Biçimine Bakış
Araçları öğrenmeden önce, Slackware paketlerinin biçimine aşina olmalısınız. Slackware' de bir paket basitçe gzip ile sıkıştırılmış tar arşiv dosyasıdır. Paketler kök dizinine açılmış olarak inşa edilirler.
Uydurma bir program ve örnek paketi:
./
usr/
usr/bin/
usr/bin/makehejaz usr/doc/
usr/doc/makehejaz 1.0/-
usr/doc/makehejaz 1.0/COPYING- usr/doc/makehejaz 1.0/README- usr/man/
usr/man/man1
usr/man/man1/makehejaz.1.gz install/
install/doinst.sh
Paket sistemi bu dosyayı kök dizinine açacak ve kuracaktır. Paket veri tabanında bu paketin içeriğini kapsayan bir girdi oluşturulacak, böylece daha sonra bu paket yükseltilebilecek ve kaldırılabilecektir.
install/ alt dizinine dikkat edin. Bu dizin, kurulum sonrası doinst.sh olarak adlandırılan betiği içeren, özel bir dizindir. Eğer paket sistemi bu dosyayı bulursa, paketi kurduktan sonra bu dosyayı çalıştıracaktır.
Diğer betikler paketin içine gömülebilirler, fakat bunlar daha ayrıntılı olarak bölüm 18.3.2' de işlenecektir.
18.2 Paket Araçları
Paket yönetimi için dört tane ana araç vardır. Bu araçlar paketlerin yüklenmesi, kaldırılması ve yükseltilmesi işlemlerini yaparlar.
pkgtool
pkgtool (8) paketlerin yüklenmesi ve kaldırılmasına izin veren, menülerle çalıştırılan bir programdır.
Ana menü Şekil 181 de gösterilmiştir.
Şekil 181. Pkgtool’ un ana menüsü
Yükleme işlemi geçerli dizinden, bir başka dizinden yada disketten ileri sürülür. Basitçe hangi metodla yükleme yapmak istediğinizi seçin sonra pkgtool yükleme yapmak için geçerli paketlerin yerlerini tarayacaktır.
Şekil 182’ de gösterilen kurulan paketlerin listesine de bakmalısınız.
Şekil 182 pkgtool Görüntüleme Kipi
Eğer paketleri kaldırmak isterseniz, kaldır seçeneğini seçin sonra size bütün kurulan paketler bir denetleme listesi ile sunulacaktır. Kaldırmak istediginiz paketleri işaretleyin ve OK’ i seçin, pkgtool bu paketleri kaldıracaktır.
Bazı kullanıcılar bu aracı komut satırı araçlarına tercih ederler. Buna rağmen, komut satırı araçlarının daha fazla seçenek sunduğu unutulmamalıdır. Paketleri yükseltme olanağı da sadece komut satırı araçları ile sunulur.
installpkg
installpkg (8) sistem üzerine yeni paketlerin kurulumunu idare eder. Söz dizimi şu şekildedir;
# installpkg seçenek paket_ismi
installpkg için üç seçenek sağlanır. Bir defada sadece bir seçenek kullanılabilir.
Tablo 181. installpkg Seçenekleri Seçenek Etki
-m Geçerli dizin üzerinde bir makepkg işlemi yapar.
-warn Eğer belirlenmiş paketi kurarsanız ne olacağını gösterir. Bu üretim sistemleri için kullanışlıdır, böylece birşey kurmadan önce ne olacağını kesin olarak görebilirsiniz.
-r Bütün paketleri geçerli dizine ve alt dizinlere özyineli olarak yükler. Paket isimleri joker işaretleri kullanabilirler, joker işaretler özyineli yükleme sırasında tarama maskesi olarak kullanılacaktır.
Eğer installpkg' den önce ROOT ortamı değişkenine geçerseniz, bu yol kök dizini için kullanılacaktır ve bu işlem yeni sürücüleri kök dizininiz için ayarlamada kullanışlıdır. Bu sürücüler mesela /mnt veya /’ dan başka bir yere bağlanacaklardır.
Kurulan paket veritabanı girdileri, /var/log/packages adresinde saklanırlar. Girdi gerçekten sadece her paket için sade bir metin dosyasıdır. Eğer paketin kurulum sonrası betiği varsa, bu betik
/var/log/scripts/ adresine yazılır.
Paket ismi için çeşitli paketleri belirtebilir yada joker işaretleri kullanabilirsiniz. Eğer kurulan bir paket üstüne yeniden yükleme yapıyorsanız, installpkg sizi uyarmayacaktır, bu konuda dikkatli olun.
installpkg eskisinin üzerine yeni proğramı basitçe ve doğru bir biçimde yükleyecektir. Önceki paketten kalan eski dosyaların güvenlice kaldırıldığını garanti altına almak istiyorsanız, upgradepkg’
yi kullanın.
removepkg
removepkg (8) yüklenen paketlerin sistemden kaldırılması işini yürütür. Söz dizimi aşağıdaki gibidir:
# removepkg seçenek paket_ismi
removepkg için dört seçenek sağlanır. Bir defada sadece bir seçenek kullanılabilir.
Tablo 182. removepkg Seçenekleri Seçenek Etki
copy Paket korunan paketlerin dizinine kopyalanır. Bu işlem asıl paketi kaldırmadan onun bir ağacını oluşturur.
keep Kaldırma sırasında oluşturulan geçici dosyaları kaydeder. Aslında sadece hata ayıklama amaçları için kullanışlıdır.
preserve Paket kaldırılır, fakat aynı zamanda, korunan paketlerin dizinine kopyalanır.
warn Eğer paket kaldırılırsa, ne olacağını gösterir.
Eğer paketi kaldırmadan önce kök ortamı değişkenine geçerseniz, bu yol kök dizini için kullanılacaktır.
Bu işlem yeni sürücülerinizi kök dizininiz için ayarlamada kullanışlıdır. Onlar tipik olarak /mnt yada /’ dan başka bir yere bağlanacaklardır. removepkg diğer kurulan paketlere de bakar ve sadece belirttiğiniz pakete özgü dosyaları kaldırır.
removepkg belirtilen paket için kurulum sonrası betiği de tarayacak ve paket tarafından oluşturulmuş sembolik bağlantıları da kaldıracaktır.
Kaldırma işlemi sırasında bir durum raporu gösterilir. Kaldırma işlemi sonrasında paket veritabanı girdileri /var/log/removed_packages adresine, kurulum sonrası betik ise
/var/log/removed_scripts adresine taşınır.
Sadece installpkg ile birçok paket belirtebilir veya paket isimleri için joker işaretler kullanabilirsiniz.
upgradepkg
upgradepkg (8) kurulan bir Slackware paketini yükseltecektir. Söz dizimi aşağıdaki gibidir:
# upgradepkg paket_ismi
veya
# upgradepkg eski_paket_ismi%yeni_paket_ismi
upgradepkg ilk olarak yeni paketi kurar ve sonra eski paketi kaldırır, böylece eski paketler sistem üzerinde daha fazla durmamış olurlar. Eğer yükseltilen paketlerin ismi değiştiyse, yüzde işaretini eski paketi ve yeni paketi belirtmek için kullanın.
Eğer upgradepkg’ den önce kök ortamı değişkenine geçerseniz, bu yol kök dizini için kullanılacaktır. Bu işlem kök dizininiz için yeni sürücüleri ayarlamada kullanışlıdır. Onlar tipik olarak /mnt’ ye yada /’ dan başka bir yere bağlanacaktır.
upgradepkg kusursuz değildir. Herzaman yapılandırma dosyalarınızı yedeklemelisiniz. Eğer yapılandırma dosyalarınız kaldırılır yada üstüne yazılırsa, herhangi bir ihtiyaç duyulan onarım işi için asıllarını geri kopyalamak isteyeceksiniz.
Nitekim installpkg ve removepkg ile birçok paketi belirtebilir yada paket isimleri için joker işaretler kullanabilirsiniz.
rpm2tgz/rpm2targz
Bugün Red Hat paket yöneticisi kullanışlı ve piyasada tutulan bir paketleme sistemidir. Birçok yazılım dağıtıcısı ürünlerini RPM biçiminde sunarlar. Bu bizim kendi öz biçimimiz olmadığı için, Slackware işletim sisteminde bu paketlere tam olarak güvenmeyin. Buna rağmen bazı şeyler sadece RPM olarak elde mecuttur (hatta kaynak bile).
Size RPM paketlerini kendi öz paketlerimize dönüştüren bir paket sunuyoruz. Bu sizin paketi geçici bir dizine açmanızı (muhtemelen explodepkg ile) ve içeriğini gözden geçirmenizi sağlayacaktır.
rpm2targz programı .tar.gz uzantılı bir arşiv oluştururken, rpm2tgz programı .tgz uzantılı bir Slackware paketi oluşturmanızı sağlar.
18.3 Paket Yapımı
Slackware paket yapımı hem kolay hem de zordur. Paket inşa etmek için belirli bir yöntem yoktur. Paket oluşturmak için tek gereksinim, paketin .tar.gz dosyası olması ve kurulum sonrası bir betik varsa, onun /install/doinst.sh olmasıdır.
Eğer kendi sisteminiz veya yönettiğiniz ağınız için paket yapmakla ilgiliyseniz, Slackware’ in kaynak ağacındaki değişik inşa betiklerine bakmalısınız.
explodepkg
explodepkg (8) paketi açarak, installpkg’ nin yaptığı işin aynısını yapacaktır, fakat explodepkg aslında paketi kurmaz ve onu paket veri tabanına kaydetmez, paketi basitçe geçerli dizine açar.
Eğer Slackware’ in kaynak ağacına bakarsanız, bu komutu belli bir programa ait iskelet paketleri için nasıl kullandığımızı göreceksiniz. Bu paketler en son paketin nasıl olacağına dair bir iskelet içerirler ve bütün gerekli dosya adları (sıfıruzunluk), sahiplikleri ve izinleri tutarlar. İnşa edilen betik, paket içeriklerini kaynak dizinden paket inşa dizinine taşıyacaktır.
makepkg
makepkg (8) geçerli dizini doğru bir Slackware paketinin içine paketleyecektir ve sembolik bağlantılar için ağacı tarayacak ve de kurulum sonrası betiğe sembolik bağlantıları paket kurulumu sırasında oluşturmak için bir oluşturma parseli ekleyecektir.
Bu komut tipik olarak sizin paket ağacınızı oluşturmanızdan sonra çalışır.
SlackBuild Betikleri
Slackware paketleri gereksinime göre çok farklı yollarla inşa edilebilirler. Bütün yazılım paketleri programcıları tarafından aynı yolu derlemeye yazılmamışlardır. Birçoğu Slackware’ in kullandığı paket içerisinde tamamıyla içerilmeyen zaman seçeneklerini derlerler. Belki bu işlevselliklerden bazılarına ihtiyaç duyup, daha sonra kendi paketinizi derlemeye ihtiyaç duyacaksınız. Birçok Slackware paketi için, SlackBuild betiklerini paketin kaynak kodunda bulabilirsiniz.
Pekala, SlackwareBuild betiği nedir? SlackBuild betikleri yürütülebilir kabuk betikleridir, bu betikleri root olarak yapılandırmak, derlemek ve Slackware paketleri oluşturmak için çalıştırırsınız. Kaynak dizini içerisinde betikleri özgürce değiştirebilir ve varsayılan Slackware paketlerinin kendinize has sürümlerini oluşturmak için değiştirdiğiniz betikleri çalıştırabilirsiniz.
18.4 Etiket Yapımı ve Etiket Dosyaları (kurulum için)
“Slackware kurulum programı” sisteminiz üzerinde yazılım paketlerinin kurulumunu işler. Bazı dosyalar vardır ve bu dosyalar kurulum programına program tarafından hangi paketlerin kurulması gerektiğini, hangilerinin isteğe bağlı olduğunu, hangilerinin varsayılan olarak seçildiğini söylerler.
Bir etiket dosyası birinci yazılım serisindedir ve etiket dosyası olarak adlandırılır ve de etiket dosyası belirli disk takımlarındaki paketleri ve onların durumlarını listeler. Durumlar:
Tablo 183. Etiket Dosyası Durum Seçenekleri Seçenek Anlam
ADD Paket doğru sistem işlemi için gereklidir.
SKP Paket otomatik olarak atlanacaktır.
REC Paket gerekli değildir, fakat önerilir.
OPT Paket isteğe bağlıdır.
Biçim basitçe;
paket_ismi: durum
Her satıra bir paket gelir. Her yazılım serisi için asıl etiket dosyaları, tagfile.org olarak saklanır. Bu yüzden kendinizinkileri bozarsanız, asıl olanlarından geri yükleyebilirsiniz.
Birçok yönetici, yükleyiciyi başlatıp, “full” seçeneğini seçerek, kendi etiket dosyalarını kendileri yazmayı tercih ederler. Kurulum programı etiket dosyalarını okuyacak ve kendi içeriklerine göre kurulumu gerçekleştirecektir. Eger REC veya OPT seçeneklerini kullanırsanız, kullanıcıya belirli bir paketi isteyip istemediğini soran bir diyalog kutusu sunulacaktır. Bundan dolayı etiket dosyalarını özdevinimli yükleme için yazarken, ADD ve SKP ile çakmanız önerilir.
Etiket dosyalarınızın asılları ile aynı yere yazıldığından emin olun veya özel etiket dosyalarına sahipseniz, özel bir etiket dosyası yolu belirtebilirsiniz.