Vyhledávání na webu

5 správců balíčků, kteří fungují na Windows, Mac a Linuxu


Každý člověk, který používá počítač, to někdy zažil: sednete si a uvědomíte si, že váš nový nebo právě vymazaný počítač nemá žádný z požadovaného softwaru. Následují promarněné hodiny proklikáváním webových stránek a klikáním na tlačítka stahování.

Co kdybych vám řekl, že existuje lepší způsob?

Správci balíčků Linuxu tento problém vyřešili už před lety. V dnešní době však správci balíčků nejsou omezeni jen na Linux; nyní můžete najít správce balíčků, kteří fungují napříč Windows, macOS a Linuxem. Nyní zde „cross-platform“ odvádí opravdu velkou práci — ale otestoval jsem pět multiplatformních správců balíčků, abych zjistil, která možnost je celkově nejlepší.

Domácí výroba

Správce balíčků z Macu, který vyrostl a přešel na Linux

Pro uživatele Macu, ať už chcete instalovat software z příkazového řádku nebo spravovat grafické aplikace, Homebrew je stále výchozí správcem balíčků, na který bych se nejprve odkázal. Lidé ho pravidelně používají pro utilitky, vývojářské nástroje a lokální testovací servery, protože eliminuje obvyklé potíže s instalací, které se v macOS vyskytují. Původně začal jako způsob, jak zacelit mezery, které Apple nechává v nativním příkazovém řádku, ale vyrostl v multiplatformního obra.

Na Linuxu Homebrew vyniká, protože instaluje balíčky do svého vlastního sandboxu (/home/linuxbrew/) místo toho, aby měnil základní systémové soubory. To je ideální pro vývojáře, kteří chtějí izolovanou správu balíčků v uživatelském prostoru, aniž by zaměřovali hlavní distribuční cesty. Na macOS jde o krok dál s Homebrew Cask, který vám umožňuje spouštět plnohodnotné grafické aplikace (jako Google Chrome nebo VS Code) přímo z terminálu spolu s tradičními skripty příkazového řádku.

Slonem v místnosti je Windows. Homebrew na Windows nativně neběží. Pokud jej chcete používat na PC, musíte jej spustit uvnitř Windows Subsystem for Linux (WSL). I když z něj to činí fenomenální nástroj pro vývojáře, kteří plynule přecházejí mezi macOS a terminálem WSL, nenahradí to nativní správce pro Windows, jako je Scoop nebo vestavěný winget od Microsoftu pro hostitelské aplikace.

Nič

Brilantní, podivné a stojí to za ten bolest hlavy






Nix mi nikdy nepřišel jako nástroj posedlý pohodlím. Je posedlý správností, a to je to, co ho činí tak zajímavým. Místo toho, aby rozptyloval soubory po globálních systémových složkách, Nix ukládá každý balíček ve vlastním unikátním, neměnném adresáři. Aktualizace jsou atomické, a pokud se něco pokazí, můžete se vrátit zpět místo ruční opravy svého prostředí. Tento design se vyplatí, když začnete uvažovat o prostředích jako o věcech, které můžete popsat, místo jejich ručního obnovování. Můžete deklarovat celé své nastavení v textovém souboru, commitnout ho na GitHub a reprodukovat na jiném stroji s úrovní přesnosti, o které většina správců balíčků ani neusiluje.

Nix oficiálně podporuje Linux a macOS. Na Windows budete muset nastavit moderní WSL 2, což ho staví do stejné pozice jako Homebrew. Je velmi užitečný pro terminál a vývojové workflow, ale nebude spravovat nativní Windows aplikace jako Windows Package Manager (winget) nebo Scoop.

Rozsah je také obrovský. Nixpkgs obsahuje více než 120 000 balíčků, což z něj činí jeden z největších dostupných softwarových repozitářů. Překážkou je naučit se, jak Nix myslí. Nespoléhá se na známé soubory YAML nebo běžné shellové skripty; používá vlastní deklarativní jazyk. Nix Flakes činí zkušenost lépe zvládnutelnou přidáním reprodukovatelných prostředí s lockfiles a staly se preferovaným přístupem komunity.

Podivné je, že Flakes jsou nyní komunitním standardem, přestože stále nesou oficiální označení „experimentální“ ve vyšší verzi, což může v některých částech způsobovat nesrovnalosti v dokumentaci. Přesto bych se tím nenechal odradit, pokud je vaším cílem reprodukovatelnost.

Conda

Ten, kterému bych věřil s neuspořádanými hromadami vědeckých materiálů

Conda funguje jak jako správce balíčků, tak jako správce prostředí a běží nativně na Windows, macOS a Linuxu. I když je úzce spojena s Pythonem a datovou vědou, není omezena pouze na Python balíčky. Conda může také spravovat software, který není Pythonový, což ji činí velmi užitečnou pro vědecké a technické pracovní postupy závislé na externích knihovnách v C, komponentách ve Fortranu, nativních ovladačích či jiných kompilovaných závislostech. Můžete vytvářet izolovaná prostředí, která tyto složité závislosti spojují dohromady, pomocí jednoduchého příkazu conda create.

Pokud na svůj počítač nainstalujete celou distribuci Anaconda, získáte obrovský, komplexní balík vědeckého softwaru přednastavený ihned po instalaci. Na rozdíl od nástrojů specifických pro konkrétní jazyk Conda nativně podporuje kompilované binárky ve všech třech hlavních operačních systémech, což z ní činí neuvěřitelně spolehlivé řešení pro pracovní postupy napříč platformami. Hlavní kompromis spočívá ve výkonu za běhu; standardní Conda může být notoricky pomalá při řešení složitých grafů závislostí během instalací.

Existuje také licenční zádrhel, o kterém stojí za to vědět, než cokoli nainstalujete. Anaconda vyžaduje placenou licenci pro některé komerční případy použití, takže dnes je čistší zdarma cesta Miniforge. Ta nastaví Conda s komunitně spravovaným kanálem conda-forge jako výchozím, což vám poskytuje přístup k obrovskému ekosystému, který nyní zahrnuje více než 28 500 feedstocků a přes 33 000 jednotlivých balíčků.

npm

Balíkový proud JavaScriptu, k lepšímu i horšímu

Pokud píšete současný JavaScript, npm je téměř nevyhnutelný. Jako výchozí správce balíčků pro Node.js stahuje open-source knihovny a spravuje závislosti projektu sledováním uvnitř lokálního souboru package.json.

Kromě knihoven kódu je npm mimořádně užitečné pro spouštění nástrojů příkazového řádku. Funguje zcela nativně na Windows, macOS a Linuxu. Protože Node.js abstrahuje operační systém, balíčky npm obvykle běží napříč platformami bez úprav, i když balíčky s nativními C++ vazbami se při instalaci automaticky přeloží lokálně pomocí nástrojů pro sestavení vašeho systému.

V minulosti vývojáři často používali npm install -g k instalaci příkazových nástrojů globálně. Moderní pracovní postupy se však silně opírají o npx, který vám umožňuje spouštět nástroje na vyžádání, aniž byste je trvale přidávali do systémové cesty.

Hlavní nevýhodou zde je nechvalně proslulý rozrůstající se počet závislostí. I skromný projekt může přitáhnout překvapivý počet závislostí a node_modules má tendenci stát se jakýmsi vlastním malým městem vnořených souborů. To vytváří skutečný tlak na údržbu, zejména pokud jde o bezpečnost, protože vaše aplikace může záviset na podstatně více kódu, než jste osobně vybrali. Npm pomáhá svým vestavěným nástrojem audit, který upozorňuje na známé zranitelnosti a navrhuje opravy, ale širší realita zůstává taková, že snadnost ve světě JavaScriptu často přichází s velmi přeplněným stromem závislostí.

pip

Malý příkaz Pythonu s velmi dlouhým dosahem

Vývojáři v Pythonu spoléhají na pip pro získávání a správu knihoven třetích stran z obrovského Python Package Indexu (PyPI). Na rozdíl od Condy, pip nespravuje samostatné softwarové binárky ani hardwarové ovladače; je to striktně instalátor balíčků specifický pro jazyk. Funguje zcela nativně na Windows, macOS a Linuxu. Nicméně použití pip globálně může snadno poškodit systémové nástroje, proto je nezbytné naučit se efektivně vytvářet a spravovat své Python virtuální prostředí.

Ve skutečnosti moderní distribuce Linuxu toto silně vynucují pomocí PEP 668, uzamykají systémové prostředí Pythonu a vyhodí tvrdou chybu, pokud se pokusíte provést globální instalaci. Na Windows pip standardně používá běžné, neprivilegované adresáře uvnitř vašeho místního uživatelského profilu (AppData), aby obešel blokace oprávnění na úrovni administrátora.

Protože kód v Pythonu abstrahuje hardware, balíčky pip jsou velmi přenositelné, i když specifické moduly s kompilovanými rozšířeními budou vyžadovat místní kompilátor pro sestavení během instalace. Pokud chcete ochutnat, kam se tento ekosystém ubírá, podívejte se na uv — bleskurychlou alternativu pip založenou na Rustu, která zvládá virtuální prostředí a instalace až 100krát rychleji než tradiční Python nastavení.

Ten nejlepší závisí na tom, co se vlastně snažíte nainstalovat

Tady není žádný jednoznačný vítěz, protože nástroje nesoutěží o stejnou práci. Nejdůležitější věc, kterou je třeba přijmout, než se zavážete k některému z těchto nástrojů, je, že „funguje na všech třech platformách“ málokdy znamená identické zkušenosti na všech třech. Obvykle to znamená stejný základní koncept s poznámkami o Windows. Přečtení těchto poznámek před tím, než si nástroj osvojíte, je polovina práce. Druhá polovina je jen spuštění instalačního příkazu.

Související články