Automatizza l'installazione del pacchetto tramite script di shell per macOS?

3

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!)

  1. È il modo giusto di utilizzare which brew o which X dove X può essere gcc, make ecc. e quindi confrontarli con /usr/bin/X codificato 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.
  2. 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?)
  3. Inoltre, uno o più pacchetti potrebbero essere git repos e devono essere clonati, compilati, installati immediatamente. Quale dovrebbe essere il posto giusto dove mettere il .dylib s generato e creare i collegamenti simbolici per assicurarsi che tutti questi pacchetti interdipendenti possano trovarsi l'un l'altro e lavorare in pace?
  4. C'è qualcosa di equivalente a virtual_env o jenv per 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. :)

    
posta Jashan Singh 26.05.2018 - 23:31
fonte

0 risposte

Leggi altre domande sui tag