Správce balíčků

Z Wikipedie, otevřené encyklopedie
(přesměrováno z Balíčkovací systém)
Skočit na: Navigace, Hledání

V tomto článku byl použit překlad textu z článku Package manager na anglické Wikipedii.

Synaptic Package Manager, GTK+ grafický front-end pro APT

Správce balíčků je v informatice nástroj pro správu software nainstalovaného v počítači. Jednotlivé programy a aplikace jsou umístěny do speciálních souborů (tzv. softwarových balíčků), které je možné pomocí správce balíčků jednoduchým způsobem nainstalovat i odinstalovat. Správce balíčků obvykle umožňuje jednotlivé balíčky automaticky stahovat ze softwarových repozitářů umístěných na Internetu.

Různí správci balíčků[editovat | editovat zdroj]

Správce balíčků bývá specifický pro daný operační systém nebo jeho konkrétní distribuci (např. různé distribuce Linuxu mají různé správce balíčků). Nejčastěji jsou balíčky používány v unixových operačních systémech. Například správce balíčků v distribuci Debian GNU/Linux se jmenuje APT, Gentoo Linux používá Portage. Mandriva Linux používá (URPMI), Fedory a Red Hat Enterprise Linuxu (yum a nově dnf). SUSE Linux používá YaST. Varianty systému BSD používají Ports.

Srovnání s instalátory[editovat | editovat zdroj]

Pro distribuci a instalaci softwaru se (zejména v prostředí Windows anebo pro distribuci uzavřeného softwaru) používají také specializované programy zvané instalátory. Od správců balíčků se liší v těchto ohledech:

Správce balíčků

Instalátor

Obvykle je součástí operačního systému. Každý produkt je dodáván s instalačním programem (instalátorem).
Používá jednu instalační databázi. Provádí vlastní instalaci, někdy zaznamenává informace o tomto zařízení v registru.
Může ověřovat a spravovat všechny balíčky v systému. Pracuje pouze s přibaleným produktem.
Jeden systém pro správu balíků. Více instalační dodavatelů.
Jeden formát balíčků. Více instalačních formátů.

Funkce[editovat | editovat zdroj]

Ilustrace systému pro správu balíčků se používá ke stažení nového softwaru. Ruční akce mohou zahrnovat přijetí licenční smlouvy nebo výběrem některé balíček specifické možnosti konfigurace.

Systémy pro správu balíků mají za úkol organizovat všechny balíčky nainstalované v systému. Typickými funkcemi systému pro správu balíčků jsou:

  • Ověření kontrolního součtu souborů, aby byly zajištěny správné a úplné balíčky;
  • Ověření digitálních podpisů k ověření původu balíčků;
  • Použití souboru archivátorů na správu archivovaných souborů;
  • Aktualizace softwaru na nejnovější verze, typicky ze softwarového repozitáře;
  • Seskupení balíčků podle funkcí ke snížení matení uživatelů;
  • Správa závislostí, aby bylo zajištěno, že balíček je instalován včetně všech balíčků, které potřebuje. Toto vyřešilo problém známý jako dependency hell.

Některé další úkoly jsou splněny pouze několika systémy pro správy balíčků.

Problémy se sdílenými knihovnami[editovat | editovat zdroj]

Počítačové systémy, které jsou založeny na propojení dynamických knihoven, namísto propojení statických knihoven, sdílí knihovny strojových instrukcí přes balíčky a aplikace. V těchto systémech jsou složité vztahy mezi různými balíčky, které vyžadují různé verze knihoven, což má za následek problém hovorově známý jako dependency hell. Na Microsoft Windows systémy, to je také nazýván DLL Hell při práci s dynamicky propojenými knihovnami. Dobrá správa balíčků je velmi důležitá v těchto systémech.[1]

Front-end na místě sestavených balíčků[editovat | editovat zdroj]

Správce systému se mohou instalovat a udržovat software pomocí nástrojů jiných než software pro správu balíčků. Například místní správce může stáhnout nebalených zdrojový kód, zkompilovat a nainstalovat. To může způsobit stav místního systému vypadnout ze synchronizace se stavem správce balíčků je databáze. Místní správce bude muset přijmout dodatečná opatření, jako např. ruční řízení některých závislostí nebo začlenění změny do správce balíčků.

Tam jsou k dispozici nástroje, aby na místě sestavené balíčky jsou integrovány s správu balíků. Pro distribucí založených na. Deb a rpm. Soubory, stejně jako Slackware Linuxu, tam je checkinstall a pro systémy, jako jsou Gentoo Linux a hybridní systémy, jako jsou Arch Linux, je možné napsat nejprve předpis, který pak zajistí, že balení se hodí do lokální databáze balíčků.

Údržba konfigurace[editovat | editovat zdroj]

Zvláště problematické se softwarem aktualizace jsou aktualizace konfiguračních souborů. Vzhledem k tomu, systémy pro správu balíčků, alespoň v systémech UNIX vznikl jako rozšíření archivaci souborů utility, mohou obvykle jen buď přepsat nebo ponechat konfigurační soubory, spíše než o uplatňování pravidel k nim. Tam jsou výjimky z tohoto, že se obvykle vztahují ke konfiguraci jádra (které, pokud rozbité, zajistí, aby počítač nepoužitelný po restartu). Problémy mohou být způsobeny, pokud formát konfiguračních souborů změn. Například, v případě, že původní konfigurace není výslovně zakázat nové možnosti, které by měly být zakázány. Některé systémy pro správu balíčků, jako například Debian s dpkg, umožňují konfiguraci během instalace. V jiných případech je žádoucí, aby balíky instalovat s výchozím nastavením a přepsat tuto konfiguraci, například, v bezhlavý systému bez hlavy zařízení, která mají velký počet počítačů. (Tento druh přednastavené instalace je také podporována dpkg).

Repozitáře[editovat | editovat zdroj]

Související informace naleznete také v článku Repozitář.

Chcete-li dát uživatelům větší kontrolu nad druhy softwaru, které jsou nainstalovány na jejich systému (a někdy kvůli právních důvodům nebo pohodlí na straně distributorů), software je často stažený z řady repozitářů.[2]

Potlačení aktualizace[editovat | editovat zdroj]

Když uživatel pracuje se softwarem pro správu balíčků, který přinese upgrade, je zvykem prezentovat uživateli se seznamem věcí, které je třeba udělat (obvykle seznam balíčků, které mají být aktualizovány, a případně dávat staré a nové číslo verze) a umožňují uživateli buď přijmout aktualizaci jako celek, nebo vybrat upgrade jen vybraných balíčků. Mnoho systémů pro správu balíčků lze nakonfigurovat tak, aby určité balíčky neaktualizovaly nikdy nebo pouze tehdy, když je v balíčku uvedeno, že předchozí verze obsahuje kritické zranitelnosti a nestability. Tento proces se někdy nazývá fixace verze.

Například:

  • yum podporuje tento se syntaxí exclude = openoffice *,[3]
  • pacman s IgnorePkg = openoffice[4] (zabrání aktualizaci openoffice v obou případech)
  • Dpkg a dselect má částečnou podporu příznaku hold ve výběru balíčků
  • APT rozšiřuje' příznak Hold na komplexní mechanismus „připínání“[5]
    • Uživatelé mohou také blacklistnout balíček[6]
  • aptitude má příznaky „hold“ a „forbid“
  • Portage podporuje tuto konfiguračním souboru package.mask

Kaskádové odstranění balíčků[editovat | editovat zdroj]

Některé z pokročilejších funkcí správy balíčků nabízejí kaskádové odstranění balíčků,[4], při kterém jsou odstraněny i všechny balíčky, které jsou závislé na cílovém balíčku.

Běžné balíčkovací systémy a formáty[editovat | editovat zdroj]

Formáty balíčků[editovat | editovat zdroj]

Související informace naleznete také v článcích Softwarový balíček (instalace) a Archivní soubor.

Každý správce balíčků je závislý na formátu a metadatech balíčků které správcuje. To znamená, že balíčkovací systém musí seskupovat soubory, které mají být začleněny pro konkrétní správce balíčků spolu s příslušnými metadaty, jako například závislosti. Často základní sada nástrojů spravuje základní instalace těchto balíčků a různých správců balíčků používají tyto nástroje k poskytnutí dalších funkcí.

Například yum se opírá o rpm jako backend. Yum rozšiřuje funkčnost backend přidáním funkce jako jednoduchou konfiguraci pro udržení sítě systémů. Jako další příklad, Synaptic Package Manager poskytuje grafické uživatelské rozhraní, pomocí Advanced Packaging Tool (apt) knihovna, která zase závisí na dpkg pro základní funkčnost.

Program Alien je určen k převodu balíčků mezi různými formáty, pokud, co se týče organizace souborového systému, odpovídají specifikaci Linux Standard Base. Podporuje formáty RPM, .deb, Stampede (.SLP) a Slackware (tgz a .TXZ).

Open source software systémy a software zadarmo[editovat | editovat zdroj]

Vzhledem k povaze free a open source software, balíky do podobné a slučitelné licencí jsou k dispozici pro použití na řadě operačních systémů. Tyto balíčky lze kombinovat a distribuovat pomocí konfigurovatelných a vnitřně komplexních obalových systémů, které zvládnou mnoho permutací softwaru a správu verzí specifické závislosti a konflikty. Některé systémy balení pro free a open source software jsou také samy uvolněny jako free a open source software. Jedním z typických rozdílů mezi správu balíčků v proprietárních operačních systémech, jako je Mac OS X a Windows, a systémů free a open source software, jako je Linux, který je zdarma, je že open source software systémy umožňují instalaci balíků třetích stran instalaci a aktualizaci pomocí stejného mechanismu, zatímco systémy pro správu balíků z Mac OS X a Windows bude pouze aktualizovat software dodaný společností Apple a Microsoft, respektive (s výjimkou některých ovladače třetích stran v systému Windows). Schopnost průběžně aktualizovat software třetí strany je obvykle přidán přidáním URL odpovídající úložiště pro správu balíčků v konfiguračním souboru.

Specializovaní správci balíčků[editovat | editovat zdroj]

V užším významu se správci balíčků vyskytují i v prostředí programovacích jazyků. V balíčcích se však typicky distribuují pouze softwarové knihovny a samotný pojem „balíček“ (package) se používá právě pro označení knihoven (například v jazyce Java[7]). Přehled správců balíčků pro různé programovací jazyky obsahuje článek softwarový repozitář.

Jako správce balíčků pro Wine (aplikační vrstva pro běh softwaru z Windows na unixových systémech) se chová také program Winetricks[8]. Ten usnadňuje instalaci součástí původně určených pro Windows (knihoven, fontů) v rámci adresáře (zvaného „prefix“), v němž Wine vytváří prostředí podobné Windows.

Společným rysem těchto správců balíčků je to, že spravují pouze vymezenou část systému. Winetricks zasahuje (s právy uživatele) pouze do izolovaného prostředí jedné virtuální „instalace“ Windows a správci softwarových knihoven se starají o samostatný adresář s knihovnami daného programovacího jazyka (například /usr/lib/python3.5/site-packages v případě Pythonu). Takový adresář ale bývá zároveň ve správě systémového správce balíčků a proto kvůli současnému používání obou správců může docházet k různým kolizím (například odstranění balíčku specializovaným správcem bez vědomí systémového správce).

Dopad[editovat | editovat zdroj]

Ian Murdock poznamenal, že správa balíčků je „tím největším pokrokem, co Linux přinesl průmyslu“, že stírá hranice mezi operačním systémem a aplikací, a že „zjednodušuje protlačuje nové inovace [...] na trh a [...] vyvíjí operační systém“.[9]

Reference[editovat | editovat zdroj]

  1. Chris, Tucker (2007-03-15).  "Optimal Package Install/Uninstall Manager". UC San Diego. 
  2. Linux repository classification schemes [online]. braintickle.blogspot.com, [cit. 2008-03-01]. [1]. (anglicky) 
  3. CentOS yum pinning rpms [online]. centos.org, [cit. 2008-03-01]. [2]. (anglicky) 
  4. a b pacman(8) Manual Page [online]. archlinux.org, [cit. 2008-03-01]. [3]. (anglicky) 
  5. How to keep specific versions of packages installed (complex) [online]. debian.org, [cit. 2008-03-01]. [4]. (anglicky) 
  6. Apt pinning to blacklist a package [online]. [cit. 2010-08-19]. [5]. (anglicky) 
  7. SEMECKÝ, Jiří. Naučte se Javu – balíčky. Interval.cz [online]. 2002-10-01 [cit. 2016-09-23]. Dostupné online.  
  8. VRÁTIL, Dan. Wine a jeho pomocníci. AbcLinuxu.cz [online]. 2009-11-19 [cit. 2016-09-23]. Dostupné online.  
  9. How package management changed everything [online]. ianmurdock.com, [cit. 2008-03-01]. [6]. (anglicky)