La gestione degli aggiornamenti su MAC e' semplice ed efficiente
ma se si vogliono utilizzare pacchetti Open Source su MAC OSX
la Apple non fornisce un analogo dell'RPM (Red Hat Package Manager).
Homebrew o, piu' semplicemente brew, e' il piu' recente,
il piu' completo e sopratutto piu' il piu' semplice gestore di pacchetti per macOS.
Quanto segue sono alcune note, personali e senza pretese, su Homebrew.
Iniziare ad utilizzare Homebrew e' molto semplice:
Il primo comando installa Homebrew (semplicemente brew per gli amici), il secondo installa lynx che e' uno dei migliaia dei pacchetti disponibili [NdE lynx e' un browser a caratteri].
Quali sono i pacchetti disponibili? Basta cercarli: brew search XXX indicando parte del nome del pacchetto desiderato.
Come si installa un pacchetto? Allora non sei stato attento! L'abbiamo gia' detto: brew install rogue
Quali sono i pacchetti installati? Basta chiederlo: brew list
Come aggiorno? Facile: brew update (solo Homebrew) brew upgrade XXX (solo la formula XXX)
brew upgrade (tutto)
Come disinstallo un pacchetto? Basta la parola: brew uninstall rogue
Ho qualche problema, cosa faccio? Basta chiamare il dottore: brew doctor
In qualche caso puo' essere necessario aggiornare qualche tool da linea di comando, ma brew lo dice e basta lanciare il comando: softwareupdate --all --install --force
Homebrew e' davvero molto semplice e non richiede alcun prerequisito,
se non quello di saper lanciare qualche comando dal Terminal.
I miei pacchetti preferiti installati o reinstallati con brew?
wget mtr logstalgia gource arping iftop jmeter node exif lynx ...
NdE: in precedenza il comando per l'installazione era: ruby -e "$(curl -fsSL https://raw.github.com/Homebrew/homebrew/go/install)".
La maggioranza dei pacchetti open source vengono distribuiti con un tarball che si configura, compila ed installa con tre semplici comandi:
./configure make make install
La difficolta' e' pero' nei prerequisiti che richiedono ricerche e controlli manuali... Homebrew li risolve con ricette (o formule) scritte in Ruby ed una gestione delle versioni basata su Git.
Homebrew installa i pacchetti in /usr/local/Cellar e, quando compilati crea un link simbolico
su /usr/local. Le formule per installare i singoli pacchetti sono mantenute nella directory
/usr/local/Library/Formula ed aggiornate quasi quotidianamente.
I singoli passi previsti dalla ricetta (o formula per essere precisi) vengono riportati in modo
chiaro sul terminale. Ecco qualche esempio:
Come semplice esempio di formula usiamo un famoso browser a carattere: lynx. Ecco il contenuto del file /usr/local/Library/Formula/lynx.rb :
require 'formula' class Lynx < Formula homepage 'http://lynx.isc.org/release/' url 'http://lynx.isc.org/current/lynx2.8.8rel.2.tar.bz2' version '2.8.8rel.2' sha1 '65bbf95627c88723bbb5880155e5fe01c2753d0c' depends_on "openssl" def install system "./configure", "--disable-debug", "--disable-dependency-tracking", "--prefix=#{prefix}", "--mandir=#{man}", "--disable-echo", "--enable-default-colors", "--with-zlib", "--with-bzlib", "--with-ssl=#{Formula["openssl"].opt_prefix}", "--enable-ipv6" system "make install" end test do system "#{bin}/lynx", '-dump', 'http://checkip.dyndns.org' end end
Tutto abbastanza chiaro e leggibile...
Brew legge le formule e le esegue: scarica i pacchetti e svolge tutti i necessari passi per la compilazione e l'installazione del pacchetto.
Una volta installato un pacchetto e' potenzialmente utilizzabile come servizio, cosa tipica se si tratta di un database o di un demone di servizio. Pero' per integrarlo con launchctl serve creare i link ai .plist... ma c'e' un modo piu' semplice!
Installata la gestione dei servizi con brew tap homebrew/services,
per attivare un servizio basta il nuovo comando: brew services start mysql
e naturalmente per fermare un servizio: brew services stop postgresql
Per controllare cosa e' attivo:
Tutti i dettagli dei servizi sono riportati nel file XML .plist. Le configurazioni sono comunque semplici: i file di configurazione tipicamente in /usr/local/etc/xxx, la working directory tipicamente in /usr/local/var/lib/xxx, i file di log tipicamente in /usr/local/var/log/xxx, ...
Facile vero?
E le APPS grafiche?
Semplicissimo, si chiamano cask (barile):
Come aggiorno? Facile: dopo il brew update basta brew cask upgrade XXX (solo la formula XXX)
oppure brew cask upgrade (tutte le APP)
[NdA ora questa sintassi e' deprecata e si utilizza ad esempio brew upgrade --cask]
Ci sono diversi comandi che si possono utilizzare con brew... in generale sono tutti molto semplici e diretti. Vediamo qualche esempio:
brew search # cerca una formula brew list # elenca le formule installate brew update # aggiorna brew brew upgrade # aggiorna i pacchetti delle formule installate brew pin XXX # fissa la versione della formula XXX brew link XXX # aggiunge i link per la formula XXX, utile per le reinstallazioni brew help brew doctor brew update && brew upgrade && brew cleanup; brew doctor; brew info brew deps --tree --installed brew uninstall --force --ignore-dependencies postgresql brew postgresql-upgrade-database brew services list brew services start postgresql ... psql postgres
Aggiunti di recente:
brew cask install adoptopenjdk
L'uscita dei nuovi processori Apple Silicon M1/M2/M3 ha comportato alcuni cambiamenti per Homebrew. Il supporto ufficiale e' dalla versione 3.0 del 2021-03.
La directory di installazione e' /opt/homebrew per Apple Silicon, mentre era /usr/local per macOS Intel.
La cosa piu' curiosa e' che... anche con l'installazione sbagliata comunque funziona quasi tutto! Infatti grazie a Rosetta gli eseguibili per Intel di Homebrew vengono comunque eseguiti anche su Silicon. Tuttavia l'utilizzo di eseguibili nativi e' fortemente consigliato e risolve qualche problema di ricompilazione di componenti aggiuntivi.
Non e' disponibile una procedura di upgrade o migrazione: semplicemente basta reinstallare Homebrew e con Silicon verra' installato su /opt/homebrew. Ricaricare tutti i pacchetti per ARM richiede un po' di tempo e c'e' il rischio di dimenticare qualcosa... ma si puo' fare automaticamente avendo l'avvertenza di eseguire un cd /tmp; brew bundle dump e quindi, dopo aver scaricato la versione ARM di Homebrew e corretto i PATH [NdA ~/.zshrc], lanciando brew bundle install --file /tmp/Brewfile
Attenzione!
Se ci sono database, configurazioni specifiche, ... e' opportuno salvarle prima
perche' con questa procedura i pacchetti vengono tutti reinstallati.
E' poi opportuno eseguire un po' di controlli/pulizie sui link /usr/local/var /usr/local/bin /usr/local/Cellar ...
(eg. su Intel /usr/local/var/postgresql@15 mentre su Silicon /opt/homebrew/var/postgresql@15)
Da anni faccio uso e, quando riesco, contribuisco alla comunita' Open Source. Su MAC e' un piacere: e' quasi come su Linux. Su MAC c'e' praticamente tutto e la comunita' e' molto attiva. Molti programmi Open Source sono gia' presenti nel software fornito da Apple: Apache PHP Python Perl Ruby...
Ottimi punti di partenza per cercare programmi ed utility per MAC sono: Apple Developer, MAC Ports, Open Source MAC, MAC OS Forge, MAC Update, Best Mac Software ...
Tra gli altri MAC Ports e' un gestore di pacchetti con funzionalita' simili ad Homebrew:
$ sudo port install putty
Attualmente su MAC Ports si trovano piu' programmi che su Homebrew ma quest'ultimo e' molto attivo e piu' semplice da utilizzare.
Titolo: Homebrew
Livello: Medio
Data:
21 Giugno 2014
Versione: 1.0.4 - 1 Aprile 2023
Autore: mail [AT] meo.bogliolo.name