Homebrew è un sistema di gestione dei pacchetti (package) che semplifica l’installazione su OS X del software open source di derivazione Unix/Linux.
Homebrew si autodefinisce “The missing package manager for OS X” (Il gestore di pacchetti per OS X che mancava), una definizione un po’ sfrontata – in particolare nelle prime fasi dello sviluppo alcuni anni fa – ma ormai non troppo lontana dalla realtà.
La sua semplicità di installazione e di uso l’hanno fatto crescere rapidamente in popolarità nell’ultimo anno, a scapito dei sistemi concorrenti più affermati, Fink e MacPorts (quest’ultimo supportato direttamente da Apple).
A differenza di questi ultimi, Homebrew cerca di usare per quanto è possibile gli strumenti software di base già presenti in OS X – gcc, perl, python, ruby, git, mysql, sqlite – e non obbliga l’utente ad installare duplicati inutili. I package suddetti sono comunque disponibili nell’archivio (repository) di Homebrew, per chi avesse bisogno di utilizzare versioni più recenti (e a volte meno stabili) di quelle utilizzate dalla Apple.
Da qualche mese Homebrew fornisce anche un gran numero di pacchetti precompilati (bottles), velocizzando notevolmente il processo di installazione e di aggiornamento dei pacchetti, che non devono più essere obbligatoriamente compilati uno alla volta.
Questa pagina su Stack Exchange approfondisce i pro e contro dei tre principali sistemi di gestione dei pacchetti su OS X. The state of package management on Mac OS X è una analisi piuttosto approfondita dei pregi e dei difetti di tutti i sistemi di gestione dei pacchetti per OS X, considerando anche quelli meno diffusi e supportati.
Una delle questioni più controverse riguardanti Homebrew riguarda il fatto che tutti i pacchetti sono installati all’interno della cartella (directory) /usr/local/
. Alcuni critici osteggiano questa scelta, notando fra l’altro che:
-
/usr/local/
è una cartella di sistema che non dovrebbe essere usata da Homebrew ma solo dal software installato dall’utenteroot
(l’amministratore onnipotente dei sistemi basati su Unix); -
Homebrew modifica i permessi di alcune cartelle contenute all’interno di
/usr/local/
assegnandoli all’utente che installa il gestore di pacchetti, mentre i permessi dovrebbero essere configurati in modo che le suddette cartelle siano usabili da tutti gli utenti del sistema; -
è da preferire invece la scelta di MacPorts o Fink di usare delle cartelle create ad-hoc, rispettivamente
/opt/
o/sw/
.
Personalmente mi sembrano critiche risibili e che i vantaggi in termini di praticità e di sicurezza delle scelte fatte dagli sviluppatori di Homebrew superino di gran lunga i presunti svantaggi.
Del resto /usr/local/
e le cartelle in esso contenute sono fatte apposta per installare software specifico per la macchina in uso, vengono usate ad esempio da MacTeX e da Ghostscript, e non capisco cosa impedisca di usarle liberamente anche per altre applicazioni.
Assegnare i permessi di installazione e di uso dei pacchetti di Homebrew ad un singolo utente, piuttosto che a root, limita i rischi di sicurezza che il software installato potrebbe creare nel sistema. Inoltre è difficile negare che il Mac sia un sistema fondamentalmente monoutente, per cui questa scelta dovrebbe comunque andare bene nella maggior parte dei casi.
Nei casi rimanenti di un Mac condiviso da più utenti, indipendentemente dal fatto che ci giri OS X liscio o OS X Server, chi gestisce il sistema dovrebbe essere facilmente in grado di assegnare il gruppo utente giusto a chi è interessato ad usare i pacchetti di Homebrew.
Di sicuro una cosa non più complicata di dover aggiungere al PATH
di ciascun utente il percorso della cartella (/opt/ o /sw/ a seconda dei casi) in cui vengono installati i pacchetti gestiti da MacPorts o Fink.
Nel corso del tempo ho usato tutti e tre i sistemi di gestione dei pacchetti, stabilizzandomi da almeno due anni su Homebrew che trovo complessivamente molto più lineare e usabile, senza le troppe opzioni di compilazione di MacPorts, che portano fin troppo spesso a incompatibilità con i pacchetti installati successivamente, o la confusione fra pacchetti binari e sorgenti, con comandi diversi di installazione, di Fink.
Dopo questa lunga introduzione, nel prossimo post vedremo come installare (ma anche disinstallare) Homebrew, esaminando anche i principali comandi di gestione dei pacchetti.