¿Automatizar la instalación de paquetes a través de un script de shell para macOS?

3

Estoy intentando escribir un script de shell para automatizar la instalación de un grupo de dependencias para un proyecto en macOS, que será un script equivalente para el mismo que funciona en EL6 / EL7 y usa el administrador de paquetes yum . Este script intentará aprovechar HomeBrew para hacer lo mismo.

Algunas de las herramientas / dependencias / paquetes que deseo automatizar la instalación son gcc , wget , make , cmake y git y así sucesivamente. Primero quiero comprobar si ya existe alguno de estos, luego actualizarlos o instalarlos. Como puede ver en este fragmento de código siguiente, primero estoy tratando de verificar si brew ya existe, luego actualícelo o simplemente instálelo.

#!/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

Ahora, mis preguntas son (pregunta multiparte)

  1. ¿Es la forma correcta de usar which brew o which X donde X puede ser gcc, make, etc. y luego compararlos con /usr/bin/X codificado para verificar su existencia? Como tengo una lista de ellos, necesito revisarlos e instalarlos, por lo que declarar variables para todos y verificarlos con caminos no me parece apropiado.
  2. ¿Cómo manejar la situación en la que el usuario tiene estos paquetes instalados pero en una ubicación diferente por cualquier razón que puedan tener? (Esto parece un poco objetivo, pero para garantizar que el proyecto compila y se basa en estas dependencias, ¿debería forzar estos caminos solamente?)
  3. Además, uno o más paquetes pueden ser git repos y necesitan clonarse, compilarse, hacer que se instalen sobre la marcha. ¿Cuál debería ser el lugar adecuado para colocar el .dylib s generado y crear enlaces simbólicos para asegurarse de que todos estos paquetes interdependientes puedan encontrarse y trabajar en paz?
  4. ¿Hay algo equivalente a virtual_env o jenv para aislar todas estas instalaciones (por supuesto, usando HomeBrew terminan en /usr/local/Cellar )? Pero, como MacOS viene con al menos algunos de ellos (git, gcc, etc.) no quiero duplicar instalaciones.

P.S. Cualquier ayuda en términos de una dirección, recurso o un proyecto de ejemplo que trabaje con una gran cantidad de dependencias ayudará. Simplemente no puedo encontrar las palabras clave adecuadas o los recursos adecuados para buscar una solución o una solución parcial. Gracias. :)

    
pregunta Jashan Singh 26.05.2018 - 23:31

0 respuestas

Lea otras preguntas en las etiquetas