Paketleme yöneticisi - Package manager

Synaptic , tam özellikli bir paket yöneticisi örneği

Bir paket yöneticisi veya paket yönetim sistemi bir bilgisayar programları, yükseltme yükleme, yapılandırma ve kaldırma işlemini otomatik yazılım araçları topluluğudur bilgisayarda 'ın işletim sistemini tutarlı bir şekilde.

1994'teki pms gibi ilk paket yöneticilerinin otomatik bağımlılık çözümü yoktu, ancak çalışan bir sisteme yazılım ekleme ve kaldırma işlemini zaten büyük ölçüde basitleştirebiliyorlardı. 1998 civarında, APT ile başlayarak , paket yöneticileri bir depodan paketleri indirme, bağımlılıklarını otomatik olarak çözme ve gerektiğinde yükleme işini yapmaya başladılar, böylece bir sistemden yazılım yüklemeyi, kaldırmayı ve güncellemeyi çok daha kolay hale getirdiler.

Paket yöneticisi , arşiv dosyalarındaki paketler , yazılım dağıtımları ve verilerle ilgilenir . Paketler , yazılımın adı, amacının açıklaması, sürüm numarası, satıcı, sağlama toplamı (tercihen bir kriptografik karma işlevi ) ve yazılımın düzgün çalışması için gerekli bağımlılıkların listesi gibi meta verileri içerir . Kurulumun ardından meta veriler yerel bir paket veritabanında depolanır. Paket yöneticileri, yazılım uyumsuzluklarını ve eksik önkoşulları önlemek için tipik olarak bir yazılım bağımlılıkları ve sürüm bilgileri veritabanı tutar. Yazılım havuzları , ikili veri havuzu yöneticileri ve uygulama mağazaları ile yakın çalışırlar .

Paket yöneticileri, manuel kurulum ve güncelleme ihtiyacını ortadan kaldırmak için tasarlanmıştır. Bu, işletim sistemleri tipik olarak yüzlerce hatta on binlerce farklı yazılım paketinden oluşan büyük kuruluşlar için özellikle yararlı olabilir.

Fonksiyonlar

Yeni yazılımı indirmek için kullanılan bir paket yöneticisinin resmi . Manuel işlemler, bir lisans sözleşmesinin kabul edilmesini veya pakete özel bazı yapılandırma seçeneklerinin seçilmesini içerebilir.

Bir yazılım paketi, bir bilgisayar programını ve bunun dağıtımı için gerekli meta verileri içeren bir arşiv dosyasıdır . Bilgisayar programı, önce derlenmesi ve oluşturulması gereken kaynak kodda olabilir . Paket meta verileri, paket açıklamasını, paket sürümünü ve bağımlılıkları (önceden yüklenmesi gereken diğer paketler) içerir.

Paket yöneticileri, kullanıcının komutuyla yazılım paketlerini bulma, kurma, bakımını yapma veya kaldırma göreviyle görevlendirilir. Bir paket yönetim sisteminin tipik işlevleri şunları içerir:

Paylaşılan kitaplıklarla ilgili zorluklar

Statik kitaplık bağlantısı yerine dinamik kitaplık bağlantısına dayanan bilgisayar sistemleri, paketler ve uygulamalar arasında yürütülebilir makine talimatları kitaplıklarını paylaşır. Bu sistemlerde, farklı kitaplık sürümleri gerektiren farklı paketler arasındaki karmaşık ilişkiler, halk dilinde " bağımlılık cehennemi " olarak bilinen bir zorlukla sonuçlanır . On Microsoft Windows sistemlerinde bu aynı zamanda "denir DLL cehennem dinamik bağlı kütüphaneler ile çalışırken". Bu sistemlerde iyi paket yönetimi hayati önem taşır. OPENSTEP'in Çerçeve sistemi , kitaplıkların birden çok sürümünün aynı anda yüklenmesine izin vererek ve yazılım paketlerinin hangi sürüme bağlandıklarını belirtmesine izin vererek bu sorunu çözme girişimiydi.

Yerel olarak derlenmiş paketler için ön uçlar

Sistem yöneticileri , paket yönetim yazılımı dışındaki araçları kullanarak yazılım kurabilir ve bakımını yapabilir. Örneğin, yerel bir yönetici paketlenmemiş kaynak kodunu indirebilir , derleyebilir ve kurabilir. Bu, yerel sistemin durumunun, paket yöneticisinin veritabanının durumuyla senkronizasyonunun bozulmasına neden olabilir . Yerel yöneticinin, bazı bağımlılıkları manuel olarak yönetmek veya değişiklikleri paket yöneticisine entegre etmek gibi ek önlemler alması gerekecektir.

Yerel olarak derlenmiş paketlerin paket yönetimi ile entegre edilmesini sağlayacak araçlar mevcuttur. Slackware Linux'un yanı sıra .deb ve .rpm dosyalarına dayalı dağıtımlar için CheckInstall vardır ve Gentoo Linux gibi reçete tabanlı sistemler ve Arch Linux gibi hibrit sistemler için önce bir reçete yazmak mümkündür, bu da paketin yerel paket veritabanına sığması.

Yapılandırma bakımı

Yazılım yükseltmelerinde özellikle zahmetli olan şey , yapılandırma dosyalarının yükseltilmesidir. Paket yöneticileri, en azından Unix sistemlerinde, dosya arşivleme yardımcı programlarının uzantıları olarak ortaya çıktıklarından, kural uygulamak yerine genellikle yapılandırma dosyalarının üzerine yazabilir veya bunları saklayabilirler. Bunun genellikle çekirdek yapılandırması için geçerli olan istisnaları vardır (bu, bozulursa bilgisayarı yeniden başlattıktan sonra kullanılamaz hale getirir). Yapılandırma dosyalarının biçimi değişirse sorunlara neden olabilir; örneğin, eski yapılandırma dosyası, devre dışı bırakılması gereken yeni seçenekleri açıkça devre dışı bırakmıyorsa. Gibi bazı paket yöneticileri, Debian 'ın dpkg , yükleme sırasında yapılandırmayı tanır. Diğer durumlarda, paketleri varsayılan konfigürasyonla kurmak ve daha sonra bu konfigürasyonun üzerine yazmak, örneğin çok sayıda bilgisayara başsız kurulumlarda arzu edilir . Bu tür önceden yapılandırılmış kurulum, dpkg tarafından da desteklenir.

Depolar

Kullanıcılara sistemlerine yüklenmesine izin verdikleri yazılım türleri üzerinde daha fazla kontrol sağlamak için (ve bazen distribütörlerin yasal veya kolaylık nedenlerinden dolayı), yazılımlar genellikle bir dizi yazılım havuzundan indirilir .

Yükseltme engelleme

Bir kullanıcı bir yükseltme yapmak için paket yönetim yazılımıyla etkileşime girdiğinde, kullanıcıya yürütülecek eylemlerin listesini (genellikle yükseltilecek paketlerin listesi ve muhtemelen eski ve yeni sürüm numaralarını vererek) sunmak gelenekseldir. ve kullanıcının yükseltmeyi toplu olarak kabul etmesine veya yükseltmeler için ayrı paketleri seçmesine izin verin. Pek çok paket yöneticisi, belirli paketleri hiçbir zaman yükseltmeyecek veya yazılımın paketleyicisi tarafından tanımlandığı şekilde, yalnızca önceki sürümde kritik güvenlik açıkları veya kararsızlıklar bulunduğunda bunları yükseltecek şekilde yapılandırılabilir. Bu işleme bazen sürüm sabitleme denir .

Örneğin:

  • yum bunu, sözdizimi hariç tutma=openoffice* ile destekler
  • pacman ile IgnorePkg= openoffice (her iki durumda da openoffice'in yükseltilmesini engellemek için)
  • dpkg ve dselect bunu kısmen paket seçimlerindeki bekletme bayrağı aracılığıyla destekler
  • APT , tutma bayrağını karmaşık "sabitleme" mekanizması aracılığıyla genişletir (Kullanıcılar ayrıca bir paketi kara listeye alabilir)
  • yetenek "tut" ve "yasakla" bayraklarına sahiptir
  • portage bunu package.mask yapılandırma dosyası aracılığıyla destekler.

Basamaklı paket kaldırma

Daha gelişmiş paket yönetimi özelliklerinden bazıları, hedef pakete bağlı tüm paketlerin ve yalnızca hedef paketin bağlı olduğu tüm paketlerin de kaldırıldığı "basamaklı paket kaldırma" sunar.

Komutların karşılaştırılması

Komutlar her özel paket yöneticisi için özel olsa da, çoğu paket yöneticisi benzer işlevler sunduğundan büyük ölçüde çevrilebilir.

Eylem zipper pacman uygun dnf ( yum ) portaj Nix ev yapımı bira
kurulum paketi zypper in PKG pacman -S PACKAGE apt install PACKAGE dnf install PACKAGE emerge PACKAGE
nix-env -i PACKAGE
brew install PACKAGE
paketi kaldır zypper rm -RU PKG pacman -R PACKAGE apt remove PACKAGE dnf remove --nodeps PACKAGE emerge -C PACKAGE veya
emerge --unmerge PACKAGE
nix-env -e PACKAGE
brew uninstall PACKAGE
paketi + yetimleri kaldır zypper rm -u --force-resolution PKG pacman -Rs PACKAGE apt autoremove PACKAGE dnf remove PACKAGE emerge -c PACKAGE veya
emerge --depclean PACKAGE
nix-env -e PACKAGE && nix-env -u
brew uninstall PACKAGE && brew autoremove
yazılım veritabanını güncelle zypper ref pacman -Sy apt update dnf check-update emerge --sync
nix-channel --upgrade
brew update
güncellenebilir paketleri göster zypper lu pacman -Qu apt list --upgradable dnf check-update emerge -avtuDN --with-bdeps=y @world veya
emerge --update --pretend @world
nix-channel --upgrade && nix-env -u && nix-collect-garbage
brew outdated
yetimleri sil+config zypper rm -u pacman -Rsn $(pacman -Qdtq) apt autoremove dnf erase PKG emerge --depclean
nix-collect-garbage -d
brew unlink PACKAGE && brew clean
yetimleri göster zypper pa --orphaned --unneeded pacman -Qdt package-cleanup --quiet --leaves --exclude-bin emerge -caD veya
emerge --depclean --pretend
hepsini güncelle zypper up pacman -Syu apt upgrade dnf update emerge --update --deep --with-bdeps=y @world
nix-env -u && nix-collect-garbage
brew upgrade

Arch Linux Pacman / Rosetta wiki teklifler geniş bir bakış.

yaygınlık

dpkg gibi paket yöneticileri 1994 kadar erken bir tarihte var olmuştur.

İkili paketlere yönelik Linux dağıtımları , yazılımı yönetme ve sürdürmenin birincil yolu olarak büyük ölçüde paket yönetim sistemlerine güvenir. Android (Linux tabanlı), iOS ( Unix tabanlı ) ve Windows Phone gibi mobil işletim sistemleri , neredeyse yalnızca ilgili satıcılarının uygulama mağazalarına güvenir ve bu nedenle kendi özel paket yönetim sistemlerini kullanır.

Kurulumcularla karşılaştırma

Bir paket yöneticisine genellikle "kurulum yöneticisi" denir ve bu, paket yöneticileri ve yükleyiciler arasında bir karışıklığa yol açabilir . Farklılıklar şunları içerir:

kriter Paketleme yöneticisi yükleyici
İle birlikte gönderilir Genellikle işletim sistemi Her bilgisayar programı
Kurulum bilgilerinin yeri Tek bir merkezi kurulum veritabanı Tamamen montajcının insiyatifindedir. Uygulamanın klasöründeki veya işletim sisteminin dosya ve klasörleri arasında bir dosya olabilir. En iyi ihtimalle, kurulum bilgilerini ifşa etmeden kendilerini bir kaldırıcı listesine kaydedebilirler.
Bakım kapsamı Potansiyel olarak sistemdeki tüm paketler Sadece paketlendiği ürün
Tarafından geliştirilmiş Bir paket yöneticisi satıcısı Birden çok yükleyici satıcısı
Paket formatı Bir avuç iyi bilinen format Uygulama sayısı kadar format olabilir
Paket formatı uyumluluğu Paket yöneticisi desteklediği sürece tüketilebilir. Paket yöneticisinin daha yeni sürümleri onu desteklemeye devam eder veya kullanıcı paket yöneticisini yükseltmez. Yükleyici, herhangi birini kullanıyorsa , her zaman arşiv biçimiyle uyumludur . Ancak, tüm bilgisayar programları gibi yükleyiciler de yazılım çürümesinden etkilenebilir .

Yapı otomasyon yardımcı programı ile karşılaştırma

Çoğu yazılım yapılandırma yönetim sistemi, yazılım oluşturma ve yazılımı dağıtmayı ayrı, bağımsız adımlar olarak ele alır. Bir yapı otomasyon yardımcı programı, genellikle bir bilgisayarda bulunan insan tarafından okunabilen kaynak kodu dosyalarını alır ve bunları aynı bilgisayarda ikili yürütülebilir bir pakete dönüştürme işlemini otomatikleştirir. Daha sonra, genellikle başka bir bilgisayarda çalışan bir paket yöneticisi, bu önceden oluşturulmuş ikili yürütülebilir paketleri internet üzerinden indirir ve yükler.

Bununla birlikte, her iki araç türünün de birçok ortak noktası vardır:

  • Örneğin, bir paket yöneticisinde ikili bileşenler arasındaki bağımlılıkları işlemek için kullanılan bağımlılık grafiği topolojik sıralaması , kaynak bileşenler arasındaki bağımlılığı işlemek için yapı yöneticisinde de kullanılır.
  • Örneğin, birçok makefile yalnızca yürütülebilir dosyalar oluşturmayı değil, aynı zamanda bunları make install.
  • Örneğin, kaynak tabanlı bir dağıtım için her paket yöneticisi – Portage , Sorcery , Homebrew , vb. – insan tarafından okunabilen kaynak kodunu ikili yürütülebilir dosyalara dönüştürmeyi ve yüklemeyi destekler.

Maak ve AAP gibi birkaç araç, hem oluşturma hem de dağıtımı işlemek üzere tasarlanmıştır ve bir yapı otomasyon yardımcı programı veya bir paket yöneticisi veya her ikisi olarak kullanılabilir.

Ortak paket yöneticileri ve biçimleri

Evrensel paket yöneticisi

İkili depo yöneticisi olarak da bilinir , yazılım geliştirme sürecinde kullanılan ve üretilen ikili dosyaların, yapıtların ve paketlerin indirilmesini ve depolanmasını optimize etmek için tasarlanmış bir yazılım aracıdır . Bu paket yöneticileri, işletmelerin tüm paket türlerini ele alma şeklini standartlaştırmayı amaçlamaktadır. Kullanıcılara tüm yapı türlerinde güvenlik ve uyumluluk ölçümleri uygulama yeteneği verir. Evrensel paket yöneticileri, bir DevOps araç zincirinin merkezinde yer alır .

Paket biçimleri

Her paket yöneticisi, yönetebileceği paketlerin biçimine ve meta verilerine dayanır. Yani paket yöneticileri, bağımlılıklar gibi uygun meta verilerle birlikte belirli paket yöneticisi için paketlenecek dosya gruplarına ihtiyaç duyar. Çoğu zaman, bir çekirdek yardımcı program seti, bu paketlerden temel kurulumu yönetir ve birden fazla paket yöneticisi, ek işlevsellik sağlamak için bu yardımcı programları kullanır.

Örneğin, yum arka uç olarak rpm'ye güvenir . Yum, bir sistem ağını sürdürmek için basit yapılandırma gibi özellikler ekleyerek arka ucun işlevselliğini genişletir. Başka bir örnek olarak, Synaptic Paket Yöneticisi , Gelişmiş Paketleme Aracı (apt) kitaplığını kullanarak bir grafik kullanıcı arabirimi sağlar ve bu da çekirdek işlevsellik için dpkg'ye dayanır .

Uzaylı bir program olduğunu farklı arasındaki dönüştürür Linux paket formatları arasında destekleyen dönüşüm Linux Standard Base (LSB) uyumlu bir .rpm paketleri, .deb , Stampede (.slp), Solaris (.pkg) ve Slackware ( Tgz , .txz . tbz, .tlz) paketleri.

Mobil işletim sistemlerinde, Google Play, tüketir Android uygulama paketi ise (APK) paket formatı Windows Mağazası kullanır appx ve XAP biçimleri. (Hem Google Play hem de Windows Store'da adsız paket yöneticileri vardır.)

Ücretsiz ve açık kaynaklı yazılım sistemleri

Ücretsiz ve açık kaynaklı yazılımların doğası gereği, benzer ve uyumlu lisanslar altındaki paketler, birçok işletim sisteminde kullanım için mevcuttur. Bu paketler, yazılımın birçok permütasyonunu işlemek ve sürüme özgü bağımlılıkları ve çakışmaları yönetmek için yapılandırılabilir ve dahili olarak karmaşık paketleme sistemleri kullanılarak birleştirilebilir ve dağıtılabilir. Ücretsiz ve açık kaynaklı yazılımların bazı paketleme sistemlerinin kendileri de ücretsiz ve açık kaynaklı yazılım olarak yayınlanır. Mac OS X ve Windows gibi tescilli işletim sistemlerindeki paket yönetimi ile Linux gibi ücretsiz ve açık kaynaklı yazılımlardaki paket yönetimi arasındaki tipik bir fark, özgür ve açık kaynaklı yazılım sistemlerinin üçüncü taraf paketlerin de kurulmasına ve kurulmasına izin vermesidir. aynı mekanizma ile yükseltilirken, Mac OS X ve Windows'un paket yöneticileri yalnızca sırasıyla Apple ve Microsoft tarafından sağlanan yazılımları yükseltir (Windows'taki bazı üçüncü taraf sürücüler hariç). Üçüncü taraf yazılımını sürekli olarak yükseltme yeteneği, tipik olarak, ilgili havuzun URL'sini paket yönetiminin yapılandırma dosyasına ekleyerek eklenir .

Uygulama düzeyinde paket yöneticileri

Sistem düzeyinde uygulama yöneticilerinin yanı sıra, sınırlı yeteneklere sahip işletim sistemleri ve geliştiricilerin en son kitaplıklara ihtiyaç duyduğu programlama dilleri için bazı eklenti paket yöneticileri vardır .

Sistem düzeyindeki paket yöneticilerinin aksine, uygulama düzeyindeki paket yöneticileri, yazılım sisteminin küçük bir bölümüne odaklanır. Genellikle, c:\cygwin veya /opt/sw gibi sistem düzeyinde paket yöneticisi tarafından korunmayan bir dizin ağacında bulunurlar . Ancak, programlama kitaplıkları ile ilgilenen paket yöneticileri için durum böyle olmayabilir ve her iki paket yöneticisi de bir dosyaya "sahip olduklarını" iddia edebileceğinden ve yükseltmeleri bozabileceğinden olası bir çakışmaya yol açabilir.

Darbe

Ian Murdock , paket yönetiminin " Linux'un sektöre getirdiği en büyük ilerleme " olduğunu, işletim sistemi ve uygulamalar arasındaki sınırları bulanıklaştırdığını ve "yeni yenilikleri [...] pazar yeri ve [...] işletim sistemini geliştirin".

Ayrıca PackagingCon olarak bilinen paket yöneticisi geliştiricileri için bir konferans var. Paket yönetimine farklı yaklaşımları anlamak amacıyla 2021 yılında kurulmuştur.

Ayrıca bakınız

Referanslar

Dış bağlantılar