Správce balíčků - Package manager

Synaptic , příklad plně funkčního správce balíčků

Manažer balíček nebo balíček-management systém je sbírka softwarových nástrojů, které automatizuje proces instalace, upgrade, konfiguraci a odstranění počítačových programů na počítači ‚s operačním systémem v konzistentním způsobem.

Raní správci balíků, jako pms z roku 1994, neměli automatické řešení závislostí, ale již mohli drasticky zjednodušit proces přidávání a odebírání softwaru z běžícího systému. Kolem roku 1998, počínaje APT , začali správci balíčků stahovat balíčky z úložiště, automaticky řešit jeho závislosti a instalovat je podle potřeby, což výrazně usnadňuje instalaci, odinstalování a aktualizaci softwaru ze systému.

Správce balíčků se zabývá balíčky , distribucemi softwaru a daty v archivních souborech . Balíčky obsahují metadata , jako je název softwaru, popis jeho účelu, číslo verze, prodejce, kontrolní součet (nejlépe funkce kryptografické hash ) a seznam závislostí nezbytných pro správný běh softwaru. Po instalaci jsou metadata uložena v místní databázi balíčků. Správci balíčků obvykle udržují databázi softwarových závislostí a informací o verzi, aby zabránili neshodám softwaru a chybějícím předpokladům. Úzce spolupracují se softwarovými úložišti , správci binárních úložišť a obchody s aplikacemi .

Správci balíčků jsou navrženi tak, aby eliminovali potřebu manuálních instalací a aktualizací. To může být užitečné zejména pro velké podniky, jejichž operační systémy se obvykle skládají ze stovek nebo dokonce desítek tisíc různých softwarových balíků.

Funkce

Ilustrace správce balíčků používaného ke stahování nového softwaru. Manuální akce mohou zahrnovat přijetí licenční smlouvy nebo výběr některých možností konfigurace specifických pro balíček.

Softwarový balíček je archivní soubor obsahující počítačový program a nezbytná metadata k jeho nasazení. Počítačový program může být ve zdrojovém kódu, který je třeba nejprve zkompilovat a sestavit. Metadata balíčku zahrnují popis balíčku, verzi balíčku a závislosti (další balíčky, které je třeba předem nainstalovat).

Správci balíčků jsou pověřeni úkolem najít, nainstalovat, udržovat nebo odinstalovat softwarové balíčky na příkaz uživatele. Mezi typické funkce systému správy balíků patří:

Výzvy se sdílenými knihovnami

Počítačové systémy, které spoléhají na dynamické propojení knihoven , místo propojení statických knihoven sdílejí spustitelné knihovny strojových instrukcí napříč balíčky a aplikacemi. V těchto systémech mají složité vztahy mezi různými balíčky vyžadujícími různé verze knihoven výzvu hovorově známou jako „ peklo závislosti “. V systémech Microsoft Windows se tomu při práci s dynamicky propojenými knihovnami říká také „ peklo DLL “. Dobrá správa balíčků je v těchto systémech životně důležitá. Systém Framework od OPENSTEP byl pokusem o vyřešení tohoto problému tím, že umožnil instalaci více verzí knihoven současně a softwarové balíky určily, proti které verzi byly propojeny.

Rozhraní frontend pro místně kompilované balíčky

Správci systému mohou instalovat a udržovat software pomocí nástrojů jiných než software pro správu balíků. Místní správce může například stáhnout nebalený zdrojový kód, zkompilovat ho a nainstalovat. To může způsobit, že stav místního systému vypadne ze synchronizace se stavem databáze správce balíčků . Místní správce bude muset provést další opatření, například ruční správu některých závislostí nebo integraci změn do správce balíčků.

K dispozici jsou nástroje, které zajistí, že místně kompilované balíčky budou integrovány se správou balíčků. Pro distribuce založené na souborech .deb a .rpm a Slackware Linux existuje CheckInstall a u systémů založených na receptech , jako je Gentoo Linux a hybridních systémů, jako je Arch Linux , je možné nejprve napsat recept, který pak zajistí že se balíček vejde do místní databáze balíčků.

Údržba konfigurace

Obzvláště problematické s aktualizacemi softwaru jsou aktualizace konfiguračních souborů. Protože správci balíků, přinejmenším v unixových systémech, pocházeli z rozšíření nástrojů pro archivaci souborů , mohou obvykle pouze přepsat nebo zachovat konfigurační soubory, než aby na ně aplikovali pravidla. Existují výjimky, které se obvykle vztahují na konfiguraci jádra (která v případě porušení způsobí, že počítač bude po restartu nepoužitelný). Problémy mohou být způsobeny změnou formátu konfiguračních souborů; například pokud starý konfigurační soubor výslovně nezakáže nové možnosti, které by měly být zakázány. Některé správce balíků, jako je například Debian je dpkg , umožňují konfiguraci během instalace. V jiných situacích je žádoucí nainstalovat balíčky s výchozí konfigurací a poté tuto konfiguraci přepsat, například v bezhlavých instalacích na velký počet počítačů. Tento druh předkonfigurované instalace podporuje také dpkg.

Úložiště

Aby uživatelé měli větší kontrolu nad druhy softwaru, který umožňují instalaci do svého systému (a někdy z právních nebo praktických důvodů na straně distributorů), je software často stahován z řady softwarových úložišť .

Potlačení upgradu

Když uživatel interaguje se softwarem pro správu balíčků za účelem provedení upgradu, je obvyklé, že mu předloží seznam akcí, které mají být provedeny (obvykle seznam balíků, které mají být upgradovány, a případně uvede čísla staré a nové verze) , a umožní uživateli buď přijmout upgrade hromadně, nebo vybrat jednotlivé balíčky pro upgrady. Mnoho správců balíčků může být nakonfigurováno tak, aby nikdy neaktualizovaly určité balíčky nebo je upgradovaly pouze v případě, že v předchozí verzi byly nalezeny kritické chyby zabezpečení nebo nestability, jak je definováno v balíčku softwaru. Tento proces se někdy nazývá připnutí verze .

Například:

  • yum to podporuje syntaxí exclude = openoffice*
  • pacman s IgnorePkg = openoffice (pro potlačení upgradu openoffice v obou případech)
  • dpkg a dselect to částečně podporují příznakem hold při výběru balíků
  • APT rozšiřuje příznak pozastavení prostřednictvím složitého mechanismu „připnutí“ (uživatelé mohou také zakázat balíček)
  • aptitude má příznaky „podržet“ a „zakázat“
  • portage to podporuje prostřednictvím konfiguračního souboru package.mask

Kaskádové odstranění balíčku

Některé pokročilejší funkce správy balíčků nabízejí „kaskádové odebrání balíků“, ve kterém jsou odebrány také všechny balíčky, které závisí na cílovém balíčku, a všechny balíčky, na kterých závisí pouze cílový balíček.

Porovnání příkazů

Přestože jsou příkazy specifické pro každého konkrétního správce balíčků, jsou do značné míry přenosné, protože většina správců balíčků nabízí podobné funkce.

Akce zypper pacman výstižný dnf ( mňam ) dopravné Nix Homebrew
nainstalovat balíček zypper in PKG pacman -S PACKAGE apt install PACKAGE dnf install PACKAGE emerge PACKAGE
nix-env -i PACKAGE
brew install PACKAGE
odebrat balíček zypper rm -RU PKG pacman -R PACKAGE apt remove PACKAGE dnf remove --nodeps PACKAGE emerge -C PACKAGE nebo
emerge --unmerge PACKAGE
nix-env -e PACKAGE
brew uninstall PACKAGE
odstranit balíček+sirotci zypper rm -u --force-resolution PKG pacman -Rs PACKAGE apt autoremove PACKAGE dnf remove PACKAGE emerge -c PACKAGE nebo
emerge --depclean PACKAGE
nix-env -e PACKAGE && nix-env -u
brew uninstall PACKAGE && brew autoremove
aktualizovat softwarovou databázi zypper ref pacman -Sy apt update dnf check-update emerge --sync
nix-channel --upgrade
brew update
zobrazit aktualizovatelné balíčky zypper lu pacman -Qu apt list --upgradable dnf check-update emerge -avtuDN --with-bdeps=y @world nebo
emerge --update --pretend @world
nix-channel --upgrade && nix-env -u && nix-collect-garbage
brew outdated
odstranit sirotky+konfigurace zypper rm -u pacman -Rsn $(pacman -Qdtq) apt autoremove dnf erase PKG emerge --depclean
nix-collect-garbage -d
brew unlink PACKAGE && brew clean
ukázat sirotky zypper pa --orphaned --unneeded pacman -Qdt package-cleanup --quiet --leaves --exclude-bin emerge -caD nebo
emerge --depclean --pretend
aktualizovat vše zypper up pacman -Syu apt upgrade dnf update emerge --update --deep --with-bdeps=y @world
nix-env -u && nix-collect-garbage
brew upgrade

The Arch Linux wiki nabídek Pacman / Rosetta rozsáhlý přehled.

Prevalence

Správci balíčků jako dpkg existují již v roce 1994.

Distribuce Linuxu orientované na binární balíčky se do značné míry spoléhají na systémy správy balíků jako jejich primární prostředky pro správu a údržbu softwaru. Mobilní operační systémy, jako jsou Android (Linux), iOS ( Unix ) a Windows Phone, se spoléhají téměř výhradně na obchody s aplikacemi příslušných prodejců, a proto používají své vlastní specializované systémy pro správu balíčků.

Porovnání s instalátory

Správci balíčků se často říká „správce instalace“, což může vést ke zmatku mezi správci balíčků a instalátory . Rozdíly zahrnují:

Kritérium Správce balíčků Instalátor
Dodáváno s Obvykle operační systém Každý počítačový program
Informace o umístění instalace Jedna centrální instalační databáze Je to zcela na uvážení instalačního technika. Může to být soubor ve složce aplikace nebo mezi soubory a složkami operačního systému. V nejlepším případě se mohou zaregistrovat do seznamu odinstalačních programů, aniž by odhalili informace o instalaci.
Rozsah údržby Potenciálně všechny balíčky v systému Pouze produkt, ke kterému byl dodán
Vyvinutý Jeden dodavatel správce balíčků Více dodavatelů instalačních programů
Formát balíčku Hrstka známých formátů Může existovat tolik formátů, kolik je aplikací
Kompatibilita formátu balíčku Může být spotřebováno, pokud to správce balíčků podporuje. Buď ji novější verze správce balíčků nadále podporují, nebo uživatel správce balíčků neaktualizuje. Instalační program je vždy kompatibilní s formátem archivu , pokud jej používá. Instalační programy, stejně jako všechny počítačové programy, mohou být ovlivněny rotací softwaru .

Porovnání s utilitou pro automatizaci sestavení

Většina systémů pro správu konfigurace softwaru považuje stavební software a nasazení softwaru za samostatné, nezávislé kroky. Nástroj pro automatizaci sestavení obvykle přebírá soubory zdrojového kódu čitelné lidmi, které jsou již v počítači, a automatizuje proces jejich převodu na binární spustitelný balíček na stejném počítači. Později správce balíčků obvykle spuštěný na jiném počítači stáhne předem připravené binární spustitelné balíčky přes internet a nainstaluje je.

Oba druhy nástrojů však mají mnoho společných rysů:

  • Například topologické řazení grafu závislostí používané ve správci balíčků ke zpracování závislostí mezi binárními komponentami se používá také ve správci sestavení pro zpracování závislosti mezi zdrojovými komponentami.
  • Například mnoho souborů makefiles podporuje nejen vytváření spustitelných souborů, ale také jejich instalaci pomocí make install.
  • Například každý manažer balíček pro distribuci u zdroje - Portage , Čarodějnictví , Homebrew atd - podporuje konverzi čitelný zdrojový kód binární spustitelné soubory a jeho instalaci.

Několik nástrojů, jako jsou Maak a AAP , je navrženo tak, aby zvládlo budování i nasazení, a lze je použít buď jako nástroj pro automatizaci sestavení, nebo jako správce balíčků nebo obojí.

Běžní správci balíků a formáty

Univerzální správce balíčků

Také známý jako správce binárních úložišť , je to softwarový nástroj navržený tak, aby optimalizoval stahování a ukládání binárních souborů, artefaktů a balíků používaných a produkovaných v procesu vývoje softwaru . Tito správci balíčků mají za cíl standardizovat způsob, jakým podniky zacházejí se všemi typy balíčků. Poskytují uživatelům možnost aplikovat metriky zabezpečení a dodržování předpisů na všechny typy artefaktů. O správcích univerzálních balíčků se hovoří jako ve středu řetězce nástrojů DevOps .

Formáty balíků

Každý správce balíčků se spoléhá na formát a metadata balíků, které může spravovat. To znamená, že správci balíčků potřebují seskupit skupiny souborů pro konkrétního správce balíčků spolu s příslušnými metadaty, jako jsou například závislosti. Základní instalace z těchto balíků často spravuje základní sadu nástrojů a více správců balíků používá tyto nástroje k poskytování dalších funkcí.

Například yum spoléhá na rpm jako backend. Yum rozšiřuje funkčnost backendu přidáním funkcí, jako je jednoduchá konfigurace pro udržování sítě systémů. Jako další příklad nabízí Synaptic Package Manager grafické uživatelské rozhraní pomocí knihovny Advanced Packaging Tool (apt) , která zase pro základní funkce spoléhá na dpkg .

Alien je program, který převádí mezi různými formáty Linux balení , podporuje konverze mezi Linux Standard Base (LSB) kompatibilní .rpm balíky, .deb , Stampede (.slp), Solaris (.pkg) a Slackware ( .tgz , .txz ,. tbz, .tlz).

V mobilních operačních systémů, Google Play spotřebuje balíčku aplikace pro Android (APK) formát balíčků, zatímco Windows Store používá appx a XAP formátů. (Google Play i Windows Store mají stejnojmenné správce balíčků.)

Softwarové systémy zdarma a open source

Vzhledem k povaze bezplatného a open source softwaru jsou balíčky s podobnými a kompatibilními licencemi k dispozici v řadě operačních systémů. Tyto balíčky lze kombinovat a distribuovat pomocí konfigurovatelných a interně složitých obalových systémů, které zvládnou mnoho permutací softwaru a spravují závislosti a konflikty specifické pro verzi. Některé obalové systémy bezplatného a otevřeného softwaru jsou také vydávány jako bezplatný a otevřený software. Jeden typický rozdíl mezi správou balíčků v proprietárních operačních systémech, jako je Mac OS X a Windows, a ve svobodném a otevřeném zdrojovém softwaru, jako je Linux, je ten, že svobodné a otevřené zdrojové softwarové systémy umožňují instalaci balíčků třetích stran a upgradovány stejným mechanismem, zatímco správci balíků Mac OS X a Windows budou upgradovat pouze software poskytovaný společností Apple a Microsoft (s výjimkou některých ovladačů třetích stran v systému Windows). Možnost průběžně aktualizovat software třetích stran se obvykle přidává přidáním adresy URL příslušného úložiště do konfiguračního souboru správy balíčků.

Správci balíčků na úrovni aplikace

Kromě správců aplikací na systémové úrovni existuje několik doplňkových správců balíků pro operační systémy s omezenými možnostmi a pro programovací jazyky, ve kterých vývojáři potřebují nejnovější knihovny .

Na rozdíl od správců balíčků na úrovni systému se správci balíčků na úrovni aplikace zaměřují na malou část softwarového systému. Obvykle se nacházejí ve stromu adresářů, který není udržován správcem balíčků na úrovni systému, například c: \ cygwin nebo /opt /sw . To však nemusí být případ správců balíčků, kteří se zabývají programovacími knihovnami, což vede k možnému konfliktu, protože oba správci balíčků mohou tvrdit, že „vlastní“ soubor a mohou narušit upgrady.

Dopad

Ian Murdock uvedl, že správa balíčků je „největším pokrokem, který Linux v oboru přinesl“, že stírá hranice mezi operačním systémem a aplikacemi a že „usnadňuje posun nových inovací [...] do tržiště a [...] vyvíjet OS “.

Koná se také konference pro vývojáře správců balíčků známá jako PackagingCon. Byla založena v roce 2021 s cílem porozumět různým přístupům ke správě balíků.

Viz také

Reference

externí odkazy