Personalmente no uso Homebrew, por lo que si hay una forma de obtener el número de versión más reciente disponible en línea utilizando brew
, no lo sé.
Tenga en cuenta que desde el 27 de junio de 2012 y la versión 0.9.1 de Homebrew, la numeración de versiones ha mantenido un patrón típico establecido de mayor.menor.mantenimiento
, utilizando solo números separados por un punto. Por lo tanto, es relativamente fácil probar que los valores devueltos por las sustituciones de comandos utilizados para asignarlos tanto a la versión instalada como a la última versión de lanzamiento siguen este patrón.
Una vez probadas, las cadenas de versión se convierten en números para que una comparación binaria pueda determinar si la versión instalada es menor que la última versión de lanzamiento, momento en el que se puede tomar la acción apropiada.
El siguiente script
de bash
es un ejemplo de cómo uno podría codificar esto:
#!/bin/bash
# Obtener el número de versión instalada y el número de versión de lanzamiento más reciente.
versiónLocalHomebrew="$(brew --version | awk '/Homebrew [0-9]/{print $2}')"
últimoLanzamientoHomebrew="$(curl -sL https://api.github.com/repos/Homebrew/brew/releases/latest | ruby -rjson -e 'puts JSON.parse($<.read)["name"]')"
# Probar que ambas variables contienen el patrón esperado.
if [[ $versiónLocalHomebrew =~ [0-9]\.[0-9]{1,2}\.[0-9]{1,2} ]] && [[ $últimoLanzamientoHomebrew =~ [0-9]\.[0-9]{1,2}\.[0-9]{1,2} ]]; then
# Función utilizada para convertir números de versión de cadena a valores numéricos para las pruebas.
función versión { echo "$@" | awk -F. '{ printf("%d%03d%03d%03d", $1,$2,$3,$4); }'; }
# Probar si el número de versión instalada es menor que el número de versión de lanzamiento más reciente.
if [[ $(versión $versiónLocalHomebrew) -lt $(versión $últimoLanzamientoHomebrew) ]]; then
brew update
else
echo "Homebrew ya está actualizado."
fi
else
# Una o ambas de las sustituciones de comando '$(...)' devolvieron una salida inesperada para las variables de versión.
echo "Al menos una de las variables de versión contiene un valor inesperado."
fi
Nota: He incorporado el comando sugerido en el comentario de Synoli para asignar a la últimoLanzamientoHomebrew
variable, ya que parece ser un método más estable para obtener la información de la última versión de lanzamiento.
Actualización: Se ha añadido una prueba para ver si las variables de versión contienen el patrón esperado antes de comprobar si la versión instalada es menor que la última versión de lanzamiento.
0 votos
Esto parece ser tres preguntas? a) ¿Cómo obtener la versión de homebrew desde el sitio web donde se ha lanzado? b) cómo comparar la versión en una computadora con la versión de lanzamiento c) ¿cómo gestionar muchas computadoras (ya sea a través de MDM, Apple Remote Desktop, scripting y ssh, etc...)? ¿Podrías editar esto para hacer claro qué es lo que necesitas aprender en este hilo? Preguntar cada una por separado sería lo ideal para que pudiéramos enlazar a preguntas existentes o proporcionar una buena respuesta a una parte sin necesidad de considerar todos los obstáculos que podrías enfrentar.
2 votos
No creo que realmente haya preguntado sobre tus elementos b and c. Eso es solo para proporcionar algo de contexto a la pregunta que estoy haciendo, para que algunos posibles lectores/contestadores no se pregunten por qué estoy intentando hacer esto.
1 votos
@bmike Siento que es lo suficientemente claro lo que se está preguntando aquí. La verbosidad simplemente sirve para proporcionar un poco más de contexto. Así es como interpreto la pregunta, en términos de construcción: "¿Cómo hago X? Ya sé cómo hacer Y. Pero ¿cuál es una buena manera de hacer X? (Necesito X y Y para lograr el objetivo A)". - Lo único que se está preguntando en realidad es X: cómo obtener el número de versión del último lanzamiento de Homebrew.