Sto provando a scrivere uno script di shell per automatizzare l'installazione di un gruppo di dipendenze per un progetto su macOS che sarà uno script equivalente per lo stesso che funziona su EL6 / EL7 e utilizza il gestore di pacchetti yum . Questo script proverà a sfruttare HomeBrew per fare lo stesso.
Alcuni degli strumenti / dipendenze / pacchetti che voglio automatizzare l'installazione sono gcc , wget , make , cmake e git e così via. Voglio prima controllare se qualcuno di questi esiste già, quindi aggiornarli o installarli. Come puoi vedere in questo snippet seguente, cerco innanzitutto di verificare se brew esiste già, quindi aggiornarlo o semplicemente installarlo.
#!/bin/sh
echo Checking brew
#Check if Homebrew is already installed else prompt the user to do so.
BREW_INSTALLED="/usr/local/bin/brew"
#Variables to check if dependencies exist.
HOMEBREW=$(which brew)
echo $HOMEBREW
if [ "$HOMEBREW" == "$BREW_INSTALLED" ]; then
echo "Brew is already installed."
echo "Update Brew"
brew update
else
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
fi
Ora, le mie domande sono (domanda a più parti!)
- È il modo giusto di utilizzare
which brewowhich Xdove X può essere gcc, make ecc. e quindi confrontarli con/usr/bin/Xcodificato per verificarne l'esistenza? Dato che ne ho una lista abbastanza dettagliata, devo controllare e installare in modo tale che dichiarare le variabili per tutti e incrociare il controllo con percorsi in qualche modo non mi sembra appropriato. - Come gestire la situazione in cui l'utente ha installato questi pacchetti, ma in una posizione diversa per qualsiasi ragione essi possano avere? (Questo sembra un po 'obiettivo ma per garantire che il progetto compili e si basi su queste dipendenze dovrei forzare solo questi percorsi?)
- Inoltre, uno o più pacchetti potrebbero essere
gitrepos e devono essere clonati, compilati, installati immediatamente. Quale dovrebbe essere il posto giusto dove mettere il.dylibs generato e creare i collegamenti simbolici per assicurarsi che tutti questi pacchetti interdipendenti possano trovarsi l'un l'altro e lavorare in pace? - C'è qualcosa di equivalente a
virtual_envojenvper isolare tutte queste installazioni (ovviamente usando HomeBrew finiscono in/usr/local/Cellar)? Ma siccome macOS ha almeno alcuni di questi (git, gcc ecc.) Non voglio duplicare le installazioni.
P.S. Aiuterà qualsiasi aiuto in termini di direzione, risorsa o progetto di esempio che lavori con una grande quantità di dipendenze. Non riesco a capire le parole chiave giuste o le risorse giuste per cercare una soluzione o una soluzione parziale. Grazie. :)