Projekt Homebrew začal svůj život jako neoficiální správce balíčků ve stylu Linuxu pro Mac. Jeho uživatelé si jeho přátelské rozhraní a užitečné výzvy rychle zamilovali a – což se může zdát jako zvláštní zvrat osudu – byl portován na Linux.
Nejprve existovaly dva samostatné projekty pro macOS a Linux (Homebrew a Linuxbrew), ale nyní jádro Homebrew spravuje oba operační systémy. Protože jsem byl na cestě k migraci z Macu na Linux, díval jsem se, jak si mé oblíbené open source aplikace pro macOS vedou na Linuxu, a s radostí jsem zjistil, že podpora Homebrew pro Linux skutečně září.
Proč Homebrew na Linuxu?
Rozumná první odpověď na Homebrew od dlouhodobých uživatelů Linuxu je: „Proč prostě nepoužít…“, kde další slovo je správce balíčků pro jejich preferovanou verzi Linuxu. Systémy založené na Debianu již mají apt
, systémy Fedora mají dnf
a yum
a projekty jako Flatpak a AppImage pracují na překonání mezery tím, že na obou běží hladce. Používáním všech těchto technologií jsem strávil slušné množství času a musím říci, že každá z nich je sama o sobě mocná.
Tak proč zůstanu u Homebrew? Za prvé, je mi to neuvěřitelně povědomé. Už teď se hodně učím, když přecházím na více open source alternativ pro své minulé proprietární nástroje, a udržovat něco známého – jako je Homebrew – mi pomáhá soustředit se na učení jedné věci po druhé, místo abych byl přemožen všemi rozdíly mezi operačními systémy. .
Také jsem ještě neviděl správce balíčků, který by byl k uživateli tak laskavý jako Homebrew. Příkazy jsou dobře organizovány, jak ukazuje výchozí výstup nápovědy:
$ brew -h
Example usage:
brew search [TEXT|/REGEX/]
brew info [FORMULA...]
brew install FORMULA...
brew update
brew upgrade [FORMULA...]
brew uninstall FORMULA...
brew list [FORMULA...]
Troubleshooting:
brew config
brew doctor
brew install --verbose --debug FORMULA
Contributing:
brew create [URL [--no-fetch]]
brew edit [FORMULA...]
Further help:
brew commands
brew help [COMMAND]
man brew
https://docs.brew.sh
Tento krátký výstup může být mylně považován za omezení, ale letmý pohled do některého z dílčích příkazů odhalí velké množství funkcí. Výše uvedený seznam má pouze 23 řádků, ale install
dílčí příkaz má pro pokročilé uživatele k dispozici neuvěřitelných 79 řádků informací:
$ brew --help | wc -l
23
$ brew install --help | wc -l
79
Má možnosti pro ignorování nebo instalaci závislostí, výběr sestavení ze zdroje as jakým kompilátorem a použití přesných upstreamových commitů Git oproti oficiální „balkované“ verzi aplikace. Stačí říci, že Homebrew je pro odborníky i nováčky.
Začínáme s Homebrew v systému Linux
Pokud chcete Homebrew vyzkoušet, existuje skvělý jednořádkový skript pro jeho instalaci na Mac nebo Linux:
$ /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"
Tento příkaz okamžitě spustí instalační skript Homebrew. Pokud jste opatrnější, můžete se curl
soubor a po kontrole jej spusťte ručně:
$ curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh --output homebrew_installer.sh
$ more homebrew_installer.sh # review the script until you feel comfortable
$ bash homebrew_installer.sh
Pokyny pro Linux obsahují konfigurace pro soubory dot, zejména ~/.profile
na systémech Debian a ~/.bash_profile
na Fedoře:
$ test -d /home/linuxbrew/.linuxbrew && eval $(/home/linuxbrew/.linuxbrew/bin/brew shellenv)
$ test -r ~/.bash_profile && echo "eval \$($(brew --prefix)/bin/brew shellenv)" >>~/.bash_profile
$ echo "eval \$($(brew --prefix)/bin/brew shellenv)" >>~/.profile
Pro potvrzení instalace poskytne tým Homebrew prázdné hello
vzorec pro testování:
$ brew install hello
==> Downloading https://linuxbrew.bintray.com/bottles/hello-2.10.x86_64_linux.bottle.tar.gz
######################################################################## 100.0%
==> Pouring hello-2.10.x86_64_linux.bottle.tar.gz
? /home/linuxbrew/.linuxbrew/Cellar/hello/2.10: 52 files, 595.6KB
Zdá se, že moje instalace funguje bez problémů, takže prozkoumám trochu víc.
Připravte nástroje příkazového řádku
Další zdroje pro Linux
- Cheat pro příkazy Linuxu
- Cheat sheet pro pokročilé příkazy systému Linux
- Bezplatný online kurz:Technický přehled RHEL
- Síťový cheat pro Linux
- Cheat sheet SELinux
- Cheat pro běžné příkazy pro Linux
- Co jsou kontejnery systému Linux?
- Naše nejnovější články o Linuxu
Homebrew se chlubí tím, že je to aplikace, která ve výchozím nastavení „nainstaluje věci, které potřebujete, a [Linux] ne“.
Používáte brew
příkaz k instalaci libovolného z nástrojů příkazového řádku zabalených v Homebrew. Tyto definice balíčků se nazývají „vzorce“ a jsou sestavovány a sdíleny prostřednictvím „lahví“. Ve vesmíru Homebrew existuje celá řada další terminologie zaměřené na pivo, ale hlavním úkolem správce balíčků je zajistit snadný přístup k softwaru.
Jaký druh softwaru? Přemýšlejte o věcech, které se hodí pro pitomce, jako jsem já (a když to čtete, pravděpodobně i vy). Například praktický tree
příkaz, který zobrazuje adresářové struktury nebo pyenv
, který používám ke správě více verzí Pythonu na Macu.
Všechny vzorce, které jsou k dispozici, můžete zobrazit pomocí search
a přidáním wc
příkaz ukazuje, kolik jich je k dispozici:
# -l counts the number of lines
$ brew search | wc -l
5087
K dnešnímu dni existuje přes 5000 vzorců, což je neuvěřitelné množství softwaru. Upozornění je, že ne každý vzorec bude fungovat na Linuxu. Ve výstupu brew search --help
je sekce který zobrazuje příznaky pro filtrování softwaru podle operačního systému, na kterém běží. Spustí v prohlížeči seznam úložišť každého operačního systému. Spouštím Fedoru, takže to zkusím s:
$ brew search --fedora tree
Prohlížeč se načte https://apps.fedoraproject.org/packages/s/tree
, který ukazuje možnosti dostupné pro Fedoru. Existují i jiné způsoby procházení. Vzorce jsou kodifikovány a centralizovány do hlavních úložišť, která jsou rozdělena podle operačního systému (Mac v Homebrew Core a Linux Core pro Linux bity). Jsou také dostupné prostřednictvím Homebrew API a jsou uvedeny na webových stránkách.
I přes všechny tyto možnosti stále nacházím většinu svých nových nástrojů prostřednictvím doporučení od ostatních uživatelů. Zde jsou některé z mých oblíbených, pokud hledáte inspiraci:
pyenv
,rbenv
anodenv
ke správě verzí Python, Ruby a Node.js (v tomto pořadí)imagemagick
pro skriptovatelné úpravy obrázkůpandoc
pro převod skriptovatelných dokumentů (často přecházím z .docx na .md nebo .html)hub
pro lepší používání Git pro uživatele GitHubutldr
příklady použití nástroje příkazového řádku
Chcete-li prozkoumat Homebrew, podívejte se na stránky tldr, což je uživatelsky přívětivá alternativa k procházení manuálovými stránkami aplikace. Potvrďte, že je k dispozici spuštěním search
:
$ brew search tldr
==> Formulae
tldr ✔
Úspěch! Zaškrtnutí vás informuje, že je k dispozici. Nyní jej můžete nainstalovat:
$ brew install tldr
==> Downloading https://linuxbrew.bintray.com/bottles/tldr-1.3.0_2.x86_64_linux.bottle.1.tar.gz
######################################################################## 100.0%
==> Pouring tldr-1.3.0_2.x86_64_linux.bottle.1.tar.gz
? /home/linuxbrew/.linuxbrew/Cellar/tldr/1.3.0_2: 6 files, 63.2KB
Homebrew poskytuje předpřipravené binární soubory, takže nemusíte sestavovat ze zdrojového kódu na místním počítači. To šetří spoustu času a hluku ventilátoru CPU. Další věc, kterou oceňuji na Homebrew, je, že tuto funkci můžete ocenit, aniž byste přesně pochopili, co to znamená. Pokud si jej raději sestavujete sami, použijte -s
nebo --build-from-source
příznak pomocí brew install
zkompilovat vzorec ze zdroje (i když láhev existuje).
Podobně může být zajímavá i složitost pod kapotou. Spuštění info
na tldr
ukazuje, jak probíhá správa závislostí, kde je zdrojový kód vzorce uložen na disku a dokonce jsou k dispozici veřejné analýzy:
$ brew info tldr
tldr: stable 1.3.0 (bottled), HEAD
Simplified and community-driven man pages
https://tldr.sh/
Conflicts with:
tealdeer (because both install `tldr` binaries)
/home/linuxbrew/.linuxbrew/Cellar/tldr/1.3.0_2 (6 files, 63.2KB) *
Poured from bottle on 2020-06-08 at 15:56:15
From: https://github.com/Homebrew/linuxbrew-core/blob/master/Formula/tldr.rb
==> Dependencies
Build: pkg-config ✔
Required: libzip ✔, curl ✔
==> Options
--HEAD
Install HEAD version
==> Analytics
install: 197 (30 days), 647 (90 days), 1,546 (365 days)
install-on-request: 197 (30 days), 646 (90 days), 1,546 (365 days)
build-error: 0 (30 days)
Jedno omezení z Mac na Linux
V systému macOS je to Homebrew cask
dílčí příkaz nabízí uživatelům způsob instalace a správy celých aplikací pomocí stejného skvělého nástroje příkazového řádku. Bohužel cask
zatím nefunguje na žádné distribuci Linuxu. Zjistil jsem to při pokusu o instalaci nástroje s otevřeným zdrojovým kódem:
$ brew cask install tusk
Error: Installing casks is supported only on macOS
Ptal jsem se na to na fóru a dostal jsem rychlou zpětnou vazbu od ostatních uživatelů. Stručně řečeno, možnosti jsou:
- Rozdělte projekt, vytvořte funkci a ukažte ostatním, že to stojí za to
- Napište vzorec pro aplikaci a sestavte ze zdroje
- Vytvořte pro aplikaci úložiště třetí strany
Ten poslední je pro mě nejzajímavější. Homebrew spravuje úložiště třetích stran vytvářením a údržbou „kohoutek“ (další výraz ovlivněný pivem). Poklepání stojí za to prozkoumat, až se se systémem blíže seznámíte a chcete jej přidat do ekosystému.
Zálohování instalací Homebrew
Jednou z mých oblíbených funkcí Homebrew je, jak můžete zálohovat svou instalaci stejně jako jakýkoli jiný soubor dot ve správě verzí. Pro tento proces nabízí Homebrew bundle
dílčí příkaz, který obsahuje dump
dílčí příkaz, který generuje soubor Brewfile. Tento soubor je opakovaně použitelný seznam všech aktuálně nainstalovaných nástrojů. Chcete-li ze své instalace vygenerovat soubor Brewfile, přejděte do libovolné složky, kterou chcete použít, a spusťte:
$ cd ~/Development/dotfiles # This is my dotfile folder
$ brew bundle dump
$ ls Brewfile
Brewfile
Když změním počítač a chci na něm nastavit stejné aplikace, přejdu do složky s Brewfile a znovu je nainstaluji pomocí:
$ ls Brewfile
Brewfile
$ brew bundle
Nainstaluje všechny uvedené vzorce na můj nový stroj.
Správa souborů Brewfile v systémech Mac a Linux
Brewfile je skvělý způsob, jak zálohovat vaši stávající instalaci, ale co když něco na Macu nefunguje na Linuxu nebo naopak? Zjistil jsem, že Homebrew bude elegantně ignorovat řádky, které nefungují na daném operačním systému, ať už na Macu nebo Linuxu. Když narazí na nekompatibilní požadavky (např. požádá brew o instalaci sudů v Linuxu), přeskočí je a pokračuje ve své cestě:
$ brew bundle --file=Brewfile.example
Skipping cask licecap (on Linux)
Skipping cask macdown (on Linux)
Installing fish
Homebrew Bundle complete! 1 Brewfile dependency now installed.
Aby moje konfigurace byla co nejjednodušší, používám stejný soubor Brewfile v obou operačních systémech a nenarazil jsem na problém, protože při každém spuštění nainstaluje verzi specifickou pro operační systém.
Homebrew pro správu balíčků
Homebrew byl mým oblíbeným správcem nástrojů příkazového řádku a díky jeho znalostem je moje zkušenost s Linuxem mnohem příjemnější. Homebrew mě udržuje organizovaný a aktuální a stále oceňuji jeho rovnováhu mezi snadností použití a hloubkou funkčnosti. Dávám přednost tomu, aby byly podrobnosti o správě balíčků omezeny na minimální množství informací, které uživatel potřebuje vědět, a většina lidí z toho bude mít prospěch. Pokud jste již spokojeni se správci balíčků pro Linux, Homebrew vám může připadat jednoduchý, ale když se podíváte trochu hlouběji, odhalíte jeho pokročilé možnosti, které dalece přesahují to, co je v tomto článku.
Pro uživatele Linuxu existuje mnoho možností správy balíčků. Pokud přicházíte ze světa macOS, Homebrew se bude cítit jako doma.