Paket Yönetimi
Bu makalenin geliştirilmeye ihtiyacı vardır. Eğer yardım edebilirseniz lütfen OpenSUSE Style Guide içerisinde yapın.
Eger yapacak birşeyler arıyorsanız articles that need expanding |
Bir Linux dağıtımı, SUSE Linux da dahil, Paketlerde depolanan bir uygulamalar ve bu uygulamaları bir bütün olarak yönetebilecek zorunluluklar topluluğudur. Paketler, uygulamayı oluşturan tüm dosyaları içeren arşiv dosyaları (Mozilla paketi Mozilla dosyalarından oluşur) ve sonuçta onları çalıştıran yönergelerdir.
Temelde üç tür paket bulunur;
- tgz (tar gzip dosyaları). Bu dosyalar temel olarak arşivdir. Paket sağlayıcısının yararlı olduğunu düşündüğü her şeyi tutar. Sıkıştırılmış dosyaları açmak için gerekli arşiv biçimi dışında, bir tgz dosyasının içeriği hakkında bir standart yoktur.
- deb (Debian). Bu standard Debian paket sistemidir. apt tarafından yönetilir.
- rpm (Red Hat Package Manager). İlk olarak Red Hat Linux tarafından yaratılmış olup, bir çok Linux dağıtımı tarafından paketleme sistemi olarak kullanılmaktadır.
SUSE Linux tgz kullanarak başladı, daha sonra RMP kullandı ve hâlen bu paketleme sistemini kullanıyor. SUSE Linux herhangi bir paketleme sistemini yönetecek tüm paketleme araçlarını sağlar, ama yalnızca RPM sistemi resmi olarak desteklenmektedir ve burada anlatılacaktır.
İçindekiler
RPM Paketleri
SUSE Linux'ta yerel yazılım RPM paket biçiminde paketli olarak gelir. RPM güzel, güçlü bir paket yöneticisidir, ama RPM arşivlerini birer birer yönetir. İçeriğindeki komut satırı aracında sorun giderici eksiği vardır. Soruna ilk bakışta RPM yalnızca sorunu ortaya koyar ve kullanıcıdan ne yapacağına karar vermesini bekler.
Örneğin, B RPM paketine bağlantıları olan bir A RPM paketi kurmak istiyorsanız, RPM, B paketini otomatik olarak kurmayacak, yalnızca size B paketine ihtiyacınız olduğunu bildirecek ve duracaktır. Paket B 'yi ve ardından paket Ayı yükleyip yüklememek kullanıcıya kalmıştır. Şimdi, B paketinin C ve D paketine ve D paketinin de E paketine (böyle gidiyor) bağımlılıkları olduğunu düşünün. Sonuçta, bu muazzam ağacın tüm dalları arasında el ile paket bağımlılıklarının peşinde koşmaya başlayacaksınız.
Bu nedenle bunu yapmak için RPM'in üzerinde programlara ihtiyacımız var. Bu noktada bir çok seçeneğiniz var. Aşağıdakiler size en uygun yazılım kurucusunu bulmanız konusunda yardım edecektir.
Sözcük Dağarcığı
Sunuculardaki Paket Kaynak Dizinleri
Genel kapsamlı ve en uygun terim "repository" (depo)dur. Sunucu tarafındaki depo, örneğin
(1) http://ftp.g(...).de/pub/linux/misc/suser-guru/rpm/10.1 (2) http://ftp.g(...).de/pub/linux/misc/suser-guru/rpm/10.1/RPMS (3) http://ftp.g(...).de/pub/linux/suse/apt/SuSE/10.1-i386
- (1) bir Yast2 deposu
- (2) bir RPM-MD (/repomd/yum, see below) deposu;
- (3) bir APT-RPM deposu.
Aşağıdaki terimler farklı paket yöneticileri tarafından kullanılır ve tümü depolar için referanstır. Böyle referanslar genelde şu bilgileri içerir:
- Temel bir URL, metadata ve paketleri geri alacak
- bir isim
Ayrıca, paket yöneticisinin nelerle başa çıkabileceğine bağlı olarak, ek bilgi .
- YaST2 onları "installation sources" (kurulum kaynakları) olarak adlandırır;
- ZMD/rug onları "catalogs" (kataloglar) olarak adlandırır;
- smart onları "channels" (Kanallar) olarak adlandırır. (Red Carpet da aynı şekilde "channels" olarak adlandırır);
- apt-rpm "sources" (kaynaklar) olarak adlandırır;
- yum "repos" (repositories)(depo) olarak adlandırır.
Ama hepsi aynı şeydir : RPM paket depoları için referans ;).
Genel olarak Metadata
Paket depolaro "metadata"lardan oluşur.
Bu metadata, depoda erişilebilecek olan RPM paketleri hakkında çeşitli bilgiler içerir; şöyle ki:
- paket adı, sürüm, yayım, hedef mimâri, dağıtım;
- özet, tanım, lisans, proje ağ sitesi;
- gerektirdikleri;
- sağladıkları, ve paketin içerdiği dosyaların listesi.
Bu metadata bilgisine libzypp, ZMD/rug, apt-rpm, smart, yum... gibi paket yöneticileri tarafından, paket kurulumları, yükseltmeler, kaldırmalar (gereksinim/sağlama bilgisi burada özellikle önemlidir) nın nasıl yapılacağını hesaplama konusunda ihtiyaç duyulur.
Farklı metadata biçimleri mevcuttur:
- RPM-MD (RPM-MetaData), "repomd" (Repository MetaData)olarak da, "yum" olarak da (çünkü, yum paket yöneticisi için yerel formattır) adlandırılır;
- yast2;
- apt-rpm (RPM için) ve apt-deb (DEB için);
- Red Carpet (Open Carpet olarak da adlandırılır);
- RPM-HDL (RPM Header List);
- URPMI ( Mandriva'nın paket yöneticisi için);
- slack, Slackware'in paket yöneticisi için;
belki başka bir kaç tane daha..
Yani, ne yazık ki, her bir paket yöneticisi için öyle veya böyle bir metadata biçimi vardır.
Bugünlerde, çoğu paket yöneticisi,gitgide standart hale gelen RPM-MD desteğine yönelmektedir:
- YaST2 SUSE Linux 10.0'da destekler;
- libzypp SUSE Linux 10.1'de destekler;
- yum , belli ki destekler; bu bir yum-özel biçimdir ;);
- apt-rpm da destekler, bir ya da iki yayımı ( SUSE Linux 10.1 ile gelen sürümü değil ne yazık ki);
- smart elbette destekler;) (bunu hakkında daha fazla bilgi aşağıda)
RPM-MD
RPM-MD, XML'de gösterilir, depo metadatası, sunucudaki bir "repodata" altdizininde, gzip ile sıkıştırılmış XML dosyalarında saklanır, örneğin:
http://ftp.gwdg.de/pub/linux/misc/suser-guru/rpm/10.1/RPMS/repodata/
aşağıdaki dosyalar ile birlikte:
- repomd.xml
- ana depo dosyarı, çok küçük, diğerleri için referans ve, aynı zamanda checksums ve timestamps içerir;
- primary.xml.gz
- en önemli bilgiyi içerir: paketlerin listesi (sürüm, yayım, mimâri), gerektirdikleri, paketin büyüklüğü, özet, tanım vb..
- filelists.xml.gz
- paketlerde yer alan dosyaların listesini içerir
- other.xml.gz
- tüm paket yöneticilerince kullanılmaz, tüm paketlerin changelog bilgisini içerir.
[ http://linux.duke.edu/projects/metadata/ Read here for more information on RPM-MD]
YaST Yazılım Yönetimi
YaST Yazılım Yönetimi birimi çoğu kullanıcının kullanacağı ve seveceği bir yazılım kurucudur. Bu YaST birimi için belgelendirme aşağıdaki adreste bulunabilir:
SUSE Linux Startup Manual.
rug
Kurulum Depoları
Paketler
y2pmsh
y2pmsh YaST Paket Yöneticisi için bir komut satırı önucudur. y2pmsh iki "modes" (biçimi) vardır. Doğrudan savları geçirebilir ya da bir kabuk olarak kullanabilirsiniz. Yani, ya aşağıdakini çalıştırabilir;
earth:~ # y2pmsh command argument <enter> |
---|
bu yalnıca bu y2pmsh komutunu çalıştıracak ve sonra çıkacaktır. Ya da y2pmsh'i kabul olarak aşağıdaki ile başlatabilirsiniz:
earth:~ # y2pmsh <enter> |
---|
ve sonra bu kabuk oturumundaki komutları çalıştırın
[0] y2pm > command1 argument <enter> [0] y2pm > command2 argument <enter> [0] y2pm > exit <enter> |
---|
Kurulum Depoları
y2pmsh source komutu Kurulum Depolarını ele alır.
SUSE Linux CD'nizi kurulum deposu olarak ekleyin
earth:~ # y2pmsh source -a cd:/// |
---|
Mevcut, sabit SUSE Linux 'u kurulum kaynağı olarak ekleyin
earth:~ # y2pmsh source -a http://download.opensuse.org/distribution/SL-stable/inst-source/ |
---|
Eklediğiniz kurulum depolarını gösterin
earth:~ # y2pmsh source -s Known sources: 0: [x] SUSE Linux 10.0 (cd:///) 1: [x] SUSE LINUX Version 10.0 (http://download.opensuse.org/distribution/SL-stable/inst-source/) |
---|
CD kurulum deposunu yeniden kaldırın
earth:~ # y2pmsh source -R 0 |
---|
SUSE Linux 10.0 KDE ek kurulum deposunu ekleyin
earth:~ # y2pmsh source -a http://ftp.gwdg.de/pub/linux/suse/ftp.suse.com/suse/i386/supplementary/KDE/update_for_10.0/yast-source/ |
---|
SUSE Linux 10.0 KDE ek kurulum deposunun metadatasını güncelleyin
earth:~ # y2pmsh source -u 1 |
---|
y2pmsh kaynak komutu için bir çok seçenek mevcuttur. Bunları aşağıdaki ile görebilirsiniz
earth:~ # y2pmsh source --help |
---|
Paketler
y2pmsh ile paketlerle uğraşmak her zaman üç adımlık bir yoldur. Paketin durumunu (status) değiştirin, bağımlılıklar ile bırakın paket yöneticisi uğraşsın ve değişikliklerinizi yapın.
Bir paketi kurmak için install (kurulum) olarak işaretleyin, sonra bağımlılıkları solve(çözün); daha sonra değişiklikleri commit (işleyin)
Bu üç adımı kabuk kipinde bir kerede yürütmek için y2pmsh isc komutu mevcuttur.
kdegames3-arcade, bzflag ve chromium paketlerini bağımlılıkları ile birlikte kurun.
earth:~ # y2pmsh <enter> [0] y2pm > isc kdegames3-arcade bzflag chromium |
---|
ya da
earth:~ # y2pmsh install kdegames3-arcade bzflag chromium |
---|
Paketlerin kaldırılması da aynı şekilde üç adımlıdır. Paketleri kurulum için işaretlemek yerine remove (kaldır) olarak işaretleyeceksiniz. Sonra paketlerin bağımlılıklarını solve çözecek, ve değişiklikleri işleyeceksiniz commit.
earth:~ # y2pmsh <enter> [0] y2pm > remove kdegames3-arcade <enter> [0] y2pm > remove bzflag <enter> [0] y2pm > remove chromium <enter> [0] y2pm > solve <enter> [0] y2pm > commit <enter> |
---|
Sisteminizi en yeni paketlere yükseltmek için y2pmsh upgrade komutunu kullanabilirsiniz.
earth:~ # y2pmsh <enter> [0] y2pm > upgrade <enter> [0] y2pm > solve <enter> [0] y2pm > commit <enter> [0] y2pm > exit <enter> |
---|
smart
smart göreceli olarak genç bir yazılım kurma aracıdır. smart'ın amacı yazılım yükseltme ve kurulum yönetimi sorunlarını layıkıyla olarak çözmektir. Yani, tam olarak RPM ne yapıyorsa o.
Geliştirme/OSS Fabrika Kurulumlarında Güncellemeler için smart Kullanmak
Smart, bir geliştirme yapısını güncel tutmak için oldukça kullanışlıdır. Son geliştirme yapısında bir depo eklemek için şunun gibi bir şey yapacaksınız:
- Not
- Büyük olasılıkla konumunuz için makul bir yansı kullanmak isteyeceksiniz, bu örnek, mirrors.kernel.org kullanmaktadır.
smart channel --add suse-devel-yast2 type=yast2 name="SUSE Development Build (yast2)" \ baseurl=http://mirrors.kernel.org/opensuse/distribution/SL-OSS-factory/inst-source
Kurulum Depoları
smart ile depolar channels (kanallar) olarak adlandırılır. Yani, Kurulum Depolarıyla uğraşmak için komut smart channeldır.
SUSE Linux CD'nizi kurulum deposu olarak ekleyin
earth:~ # smart channel --add /media/cdrom |
---|
Burada 10.1RC 'de smartın nasıl kullanılacağı ve fabrika deposu için smart kanalı yapılandırma hakkında daha uzun bir tanımlama yer almaktadır : How to use smart with SUSE Linux Factory
Paketler
smart *all* of the metadata formats above ( smart-özel biçimi yoktur).
Bir smart "channel" (kanal) (depo bilgisi) eklediğinizde, kullanabileceğiniz türler aşağıdaki gibidir : ( "smart channel --help" dışında):
apt-deb - APT-DEB Repository apt-rpm - APT-RPM Repository deb-dir - DEB Directory red-carpet - Red Carpet Channel rpm-dir - RPM Directory rpm-hdl - RPM Header List rpm-md - RPM MetaData slack-site - Slackware Repository up2date-mirrors - Mirror Information (up2date format) urpmi - URPMI Repository yast2 - YaST2 Repository
- not
- *-sys kanalları kaldırıldığında, RPM veri tabanına (ya da Debian'da DEB veri tabanına vb..) kurulmuş olan paketleri temsil ederler
Ve evet, hatta onları karıştırabilirsiniz.. Smart için kanallar listesinde, yast2, rpm-md ve apt-rpm depolarını karıştırabilirsiniz.
smart, RPM (SUSE/Redhat/Fedora/Mandriva), Deb (Debian/Ubuntu) ve Slackware için çalıştığından paket altsisteminden bağımsızdır.
Sonuç olarak, bir .deb Debian/Ubuntu paketini SUSE Linux üzerine smart ile kurabilirsiniz, ancak DEB paket veritabanında (RPM veri tabanı hakkında bir şey bilmeyen) saklanacağından bunun hiç bir anlamı olmayacaktır... (yani bu kullanım anlamsızdır ve hiçbir şekilde smart'ın hedefi değildir). Aslında, ilginçtir, çünkü, smart'ı (değiştirilmemiş) RPM, Deb ve Slackware temelli dağıtımlarda kullanabilirsiniz.
apt4rpm
Kurulum Depoları
Packages
Paket Listesini Saklama
SUSE Linux 10.1 bu konuda sorunludur, see a workaroud here