macOS: brew tutorial breve

macOS: brew tutorial breve

di Pubblicato: 9 agosto 2018 3 commenti

In passato ho parlato spesso durante alcuni articoli di Brew. Non mi sono mai soffermato più di tanto sull’argomento perché arrivando da Ubuntu l’utilizzo e il suo mantenimento sono stati pressoché automatici. Visto che però in molti hanno visionato articoli riguardanti macOS dove ho sbrigativamente citato questo software, entro nel dettaglio su come lo utilizzo io.

Beh, innanzitutto cosa è sto Brew? Brew è sostanzialmente un repository dove poter scaricare, installare e mantenere aggiornato del software open source. In pratica lo possiamo vedere come una sorta di app store, solo che tutto avviene via linea di comando. Certo la cosa potrebbe far storcere il naso, non è affatto complesso, anzi, spesso per determinate situazioni è molto più semplice e conveniente rispetto alla controparte grafica di Apple.

L’installazione è piuttosto semplice, meglio se avete l’ultima versione di macOS installata, basta copiare la seguente riga sul terminale:


/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

verra scaricato brew ed installato. E’ possibile che durante la procedura venga chiesto l’accesso di root, quindi la password di accesso al sistema operativo.

Una volta terminato avremo dei nuovi comandi che possiamo passare al terminale. Se conosciamo già il nome del programma possiamo direttamente digitarlo. Ad esempio per installare Nodejs versione 8


brew install node@8

Come possiamo vedere non abbiamo visitato nessun sito, ne abbiamo scaricato eseguibili da caricare o eseguire. Alla fine avremo la nostra versione di Node 8 installata. Successivamente potremo aggiornare Node ed altri software installati con i due comandi concatenati:


brew update && brew upgrade

Ovvero brew update contatta i server, chiamati formulae, di brew e quindi esegue l’upgrade, cioè l’aggiornamento se presente. Questi comandi si possono anche dare staccati. Ad esempio nel caso abbiamo lanciato un update e desideriamo verificare cosa brew andrà ad aggiornare senza che lo faccia possiamo utilizzare il comando:


brew outdated

In questo caso potremo anche specificare l’upgrade, ovvero poniamo il caso che nella lista vogliamo aggiornare solo un software, daremo il comando:


brew upgrade node@8

Un caso più o meno simile potrebbe essere quello di voler “freezare” cioè bloccare un determinato aggiornamento per uno specifico software. Ad esempio per via delle incompatibilità che la nuova versione si porta appresso, in questo caso lo possiamo fare, e congeliamo un software con questo comando (sempre prendendo in esempio Node8 come cavia):


brew pin node@8

Per “scongelare” da eventuali aggiornamenti daremo l’ovvio comando contrario:


brew unpin node@8

Se invece stiamo cercando qualcosa ma non siamo sicuri sia disponibile in brew, potremo utilizzare la funzione search, ad esempio:


brew search wget

in questo caso stiamo cerando wget. Se lo trova tornerà un elenco di quanto tornato, ad esempio la parola wget è compresa anche nel programma wgetpaste. In queste liste se vedete un segno di spunta verde accanto ad una occorrenza, significa che quel programma è già installato nel vostro sistema.

Per l’appunto dopo un po’ di tempo, magari dopo aver installato o disinstallato (vediamo a breve come) si perde la cognizione di cosa abbiamo e cosa non abbiamo nel nostro mac. Ci viene in aiuto il comando:


brew list

qui però sorge un piccolo problemino. La lista che vedrete potrebbe essere inaspettatamente più lunga di quanto credete. Infatti alla richiesta di un determinato programma è molto probabile che questo abbia necessità di installare delle librerie o addirittura un altro programma. Questa seconda parte dell’installazione non vi verrà notificata, perché se voglio installare Node, e Node per funzionare necessita della libreria X, è chiaro che dovrà essere installata per forza, altrimenti quanto richiesto non funzionerebbe. Quindi come faccio a sapere cosa avevo richiesto come installazione? Ci viene in aiuto il comando:


brew leaves

infatti il comando leaves indica di mostrare le formulae installate che non sono direttamente dipendenti (cioè in senso gerarchico non hanno dipendenza diretta) da altri pacchetti, quindi dovrebbero essere proprio i programmi che avete esplicitamente installato. Potremo altresì vedere i programmi che invece hanno le dipendenze, e rispetto a chi le hanno:


brew deps --installed --tree

L’elenco che ne esce sarà parecchio esplicativo.

Ok, ora abbiamo visto come installare, aggiornare e verificare le formulae installate, ma se ne vogliamo eliminare una? piuttosto semplice, una volta individuato, ad esempio wget, daremo il comando:


brew uninstall wget

Va detto che quando aggiorniamo Brew tende a tenersi una copia delle versioni vecchie, quindi di quando in quando potremo anche liberare un po’ di prezioso spazio su disco:


brew cleanup

Per questo comando esistono anche delle opzioni, come –prune=100 dove 100 sono i giorni, ovvero elimina i programmi più vecchi di 100 giorni. Se invece diamo l’opzione -n vedremo una simulazione di quanto verrebbe rimosso. Per vedere invece dove va fisicamente tutto quello che abbiamo installato:


brew --cache

Non entro nel merito dei TAP, ovvero dei Thirs Party Repository, ovvero delle liste alternative di software che però possono essere veicolate attraverso brew. Su Ubuntu ad esempio è un concetto comune, qui su Brew devo ammettere di non aver mai avuto la necessità di utilizzarle.

Conclusioni

Si tratta di un ottimo sistema per installare e mantenere software, in particolare modo materiale di una certa complessità, come ad esempio Node, MongoDB, Postgresql, Mariadb, Yarn, ma volendo anche Virtualbox e Docker. Tutti sofware che generalmente se installati attraverso la via classica dell’installazione diventano decisamente rognosi e per giunta molto più complessi nel momento in cui necessitiamo di aggiornarli. Qui con due righe sul terminale accediamo non solo al software, ma anche a procedure testate e provate.

Libri che ti consiglio

alcuni titoli che consiglio come manuali tecnici sull'argomento

Non ci sono commenti al momento

sezione commenti aperta al pubblico
  1. albert
    #1 albert 29 settembre, 2018, 16:42

    Ciao, ho aggiornato a mojave e mi trovo con l’errore

    xcrun: error: invalid active developer path (/Library/Developer/CommandLineTools), missing xcrun at: /Library/Developer/CommandLineTools/usr/bin/xcrun
    Error: Failure while executing; `git config --local --replace-all homebrew.glib true` exited with 1.

    sono perplesso per l’errore relativo al git, un bug di mojave e git?

    Rispondi a questo commento
    • Walter Tosolini
      Walter Tosolini Autore 29 settembre, 2018, 17:27

      Per qualche motivo non hai installato la command line tool di macos.
      Devi installarla con:

      sudo xcode-select --install
      

      chiederà la password di root (quella utilizzata per la login) dopo di che consiglio:

      
      brew update
      brew upgrade
      brew cleanup
      
      Rispondi a questo commento

Rispondi

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.