Il progetto Homebrew ha iniziato la sua vita come gestore di pacchetti non ufficiale in stile Linux per Mac. I suoi utenti si sono subito innamorati della sua interfaccia intuitiva e dei suggerimenti utili e, in quello che può sembrare uno strano scherzo del destino, è stato portato su Linux.
All'inizio c'erano due progetti separati per macOS e Linux (Homebrew e Linuxbrew), ma ora il core di Homebrew gestisce entrambi i sistemi operativi. Poiché ho intrapreso un viaggio per migrare da Mac a Linux, ho osservato come funzionano le mie applicazioni open source preferite per macOS su Linux e sono stato felice di scoprire che il supporto di Homebrew per Linux brilla davvero.
Perché Homebrew su Linux?
Una prima risposta ragionevole a Homebrew da parte degli utenti Linux di lunga data è: "Perché non usare solo..." dove la parola successiva è un gestore di pacchetti per la loro versione preferita di Linux. I sistemi basati su Debian hanno già apt
, I sistemi Fedora hanno dnf
e yum
e progetti come Flatpak e AppImage lavorano per colmare il divario funzionando senza problemi su entrambi. Ho trascorso una discreta quantità di tempo utilizzando tutte queste tecnologie e devo dire che ognuna è potente a sé stante.
Allora perché rimango con Homebrew? Prima di tutto, mi è incredibilmente familiare. Sto già imparando molto mentre passo a alternative più open source per i miei strumenti proprietari passati e mantenere qualcosa di familiare, come Homebrew, mi aiuta a concentrarmi sull'apprendimento di una cosa alla volta invece di essere sopraffatto da tutte le differenze tra i sistemi operativi .
Inoltre, devo ancora vedere un gestore di pacchetti gentile con l'utente come Homebrew. I comandi sono ben organizzati, come mostra l'output della Guida predefinito:
$ 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
Questo breve output potrebbe essere scambiato per una limitazione, ma una rapida occhiata all'interno di uno qualsiasi dei sottocomandi rivela una vasta gamma di funzionalità. L'elenco sopra è lungo solo 23 righe, ma install
il sottocomando ha ben 79 righe di informazioni disponibili per l'utente avanzato:
$ brew --help | wc -l
23
$ brew install --help | wc -l
79
Ha opzioni per ignorare o installare dipendenze, scegliere di compilare dal sorgente e con quale compilatore e utilizzare gli esatti commit Git a monte rispetto alla versione ufficiale "imbottigliata" dell'applicazione. Basti dire che Homebrew è per esperti e principianti allo stesso modo.
Inizia con Homebrew su Linux
Se vuoi provare Homebrew, c'è un ottimo script one-liner per installarlo su Mac o Linux:
$ /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"
Questo comando esegue immediatamente lo script di installazione di Homebrew. Se sei più cauto, puoi curl
il file, quindi eseguilo manualmente dopo una revisione:
$ 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
Le istruzioni di Linux includono configurazioni per dotfile, in particolare ~/.profile
su sistemi Debian e ~/.bash_profile
su Fedora:
$ 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
Per confermare l'installazione, il team di Homebrew fornisce un hello
vuoto formula per il test:
$ 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
Sembra che la mia installazione funzioni senza problemi, quindi esplorerò un po' di più.
Brew per le utilità della riga di comando
Più risorse Linux
- Comandi Linux cheat sheet
- Cheat sheet sui comandi avanzati di Linux
- Corso online gratuito:Panoramica tecnica RHEL
- Cheat sheet della rete Linux
- Cheat sheet di SELinux
- Cheat sheet dei comandi comuni di Linux
- Cosa sono i container Linux?
- I nostri ultimi articoli su Linux
Homebrew si vanta di essere un'applicazione che "installa le cose di cui hai bisogno che [Linux] non ha" per impostazione predefinita.
Usi la brew
comando per installare qualsiasi utilità della riga di comando inclusa in Homebrew. Queste definizioni di pacchetto sono chiamate "formule" e vengono compilate e condivise tramite "bottiglie". C'è una miriade di altre terminologie orientate alla birra nell'universo Homebrew, ma l'obiettivo principale del gestore di pacchetti è rendere il software facilmente accessibile.
Che tipo di software? Pensa alle cose che tornano utili per i nerd come me (e, dal momento che stai leggendo questo, probabilmente anche tu). Ad esempio, il pratico tree
comando che mostra le strutture delle directory o pyenv
, che utilizzo per gestire più versioni di Python su un Mac.
Puoi vedere tutte le formule disponibili usando la search
comando e aggiungendo il wc
comando mostra quanti sono disponibili:
# -l counts the number of lines
$ brew search | wc -l
5087
Ci sono oltre 5.000 formule fino ad oggi, che è una quantità incredibile di software. L'avvertenza è che non tutte le formule funzioneranno su Linux. C'è una sezione nell'output di brew search --help
che mostra i flag per filtrare il software in base al sistema operativo su cui è in esecuzione. Avvia l'elenco dei repository di ciascun sistema operativo su un browser. Sto eseguendo Fedora, quindi ci proverò con:
$ brew search --fedora tree
Il browser carica https://apps.fedoraproject.org/packages/s/tree
, che mostra le opzioni disponibili per Fedora. Ci sono anche altri modi per navigare. Le formule sono codificate e centralizzate nei repository principali che sono suddivisi per sistema operativo (Mac in Homebrew Core e Linux Core per bit Linux). Sono inoltre disponibili tramite l'API Homebrew ed elencati sul sito Web.
Anche con tutte queste opzioni, trovo ancora la maggior parte dei miei nuovi strumenti attraverso i consigli di altri utenti. Ecco alcuni dei miei preferiti, se stai cercando ispirazione:
pyenv
,rbenv
enodenv
per gestire le versioni Python, Ruby e Node.js (rispettivamente)imagemagick
per modifiche alle immagini tramite scriptpandoc
per le conversioni di documenti con script (passo spesso da .docx a .md o .html)hub
per una migliore esperienza Git per gli utenti di GitHubtldr
per esempi su come utilizzare un'utilità della riga di comando
Per esplorare Homebrew, dai un'occhiata alle pagine tldr, che è un'alternativa facile da usare per scorrere le pagine man di un'applicazione. Conferma che è disponibile eseguendo search
:
$ brew search tldr
==> Formulae
tldr ✔
Successo! Il segno di spunta indica che è disponibile. Ora puoi installarlo:
$ 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 offre binari precompilati, quindi non devi creare dal codice sorgente sul tuo computer locale. Ciò consente di risparmiare molto tempo e il rumore della ventola della CPU. Un'altra cosa che apprezzo di Homebrew è che puoi apprezzare questa funzione senza capire esattamente cosa significa. Se preferisci costruirlo da solo, usa -s
o --build-from-source
contrassegna con brew install
per compilare la formula dalla fonte (anche se esiste una bottiglia).
Allo stesso modo, la complessità nascosta può essere interessante. Esecuzione di info
su tldr
mostra come avviene la gestione delle dipendenze, dove il codice sorgente della formula si trova su disco e sono disponibili anche le analisi pubbliche:
$ 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)
Una limitazione da Mac a Linux
Su macOS, l'Homebrew cask
subcommand offre agli utenti un modo per installare e gestire intere applicazioni utilizzando la stessa fantastica utilità della riga di comando. Sfortunatamente, cask
non funziona ancora su nessuna distribuzione Linux. L'ho scoperto durante il tentativo di installare uno strumento open source:
$ brew cask install tusk
Error: Installing casks is supported only on macOS
L'ho chiesto sul forum e ho ricevuto un rapido feedback da altri utenti. In breve, le opzioni sono:
- Crea il fork del progetto, crea la funzione e mostra agli altri che ne vale la pena
- Scrivi una formula per l'applicazione e compila dal sorgente
- Crea un repository di terze parti per l'applicazione
L'ultimo è il più interessante per me. Homebrew gestisce repository di terze parti creando e mantenendo i "tap" (un altro termine influenzato dalla birra). Vale la pena esplorare i tocchi man mano che acquisisci familiarità con il sistema e desideri aggiungerlo all'ecosistema.
Backup delle installazioni Homebrew
Una delle mie funzionalità Homebrew preferite è il modo in cui puoi eseguire il backup della tua installazione proprio come qualsiasi altro dotfile nel controllo della versione. Per questo processo, Homebrew offre un bundle
sottocomando che contiene un dump
sottocomando che genera un Brewfile. Questo file è un elenco riutilizzabile di tutti gli strumenti attualmente installati. Per generare un Brewfile dalla tua installazione, vai nella cartella che desideri utilizzare ed esegui:
$ cd ~/Development/dotfiles # This is my dotfile folder
$ brew bundle dump
$ ls Brewfile
Brewfile
Quando cambio macchina e voglio impostare le stesse applicazioni su di essa, vado nella cartella con il Brewfile e le reinstallo con:
$ ls Brewfile
Brewfile
$ brew bundle
Installerà tutte le formule elencate sulla mia nuova macchina.
Gestione dei file di birra su Mac e Linux
Il Brewfile è un ottimo modo per eseguire il backup dell'installazione esistente, ma cosa succede se qualcosa su Mac non funziona su Linux o viceversa? Quello che ho scoperto è che Homebrew ignorerà con garbo le righe che non funzionano su un determinato sistema operativo, sia Mac che Linux. Quando incontra richieste incompatibili (come chiedere a brew di installare botti su Linux), le salta e continua per la sua strada:
$ 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.
Per mantenere la mia configurazione il più semplice possibile, utilizzo lo stesso Brewfile su entrambi i sistemi operativi e non ho riscontrato problemi poiché installa la versione specifica del sistema operativo ogni volta che lo eseguo.
Homebrew per la gestione dei pacchetti
Homebrew è stato il mio gestore di riferimento per le utilità della riga di comando e la sua familiarità rende la mia esperienza con Linux molto più piacevole. Homebrew mi tiene organizzato e aggiornato e continuo ad apprezzarne l'equilibrio tra facilità d'uso e profondità di funzionalità. Preferisco mantenere i dettagli sulla gestione dei pacchetti alla quantità minima di informazioni che un utente deve conoscere e la maggior parte delle persone ne trarrà vantaggio. Se sei già a tuo agio con i gestori di pacchetti Linux, Homebrew potrebbe sembrare semplice, ma guardando un po' più a fondo si rivelano le sue opzioni avanzate che vanno ben oltre ciò che è in questo articolo.
Ci sono molte opzioni di gestione dei pacchetti per gli utenti Linux. Se vieni dal mondo di macOS, Homebrew si sentirà come a casa.