2 votos

¿Cómo encontrar de forma programática el número de versión más reciente de Homebrew?

¿Cómo encontrar de manera programática el número de versión más reciente de Homebrew?

Puedo encontrar esto en mi computadora local con brew --version y procesar la cadena resultante para obtener un número de versión. ¿Cuál es una buena manera de obtenerlo para Homebrew lanzado? Me gustaría verificar de manera programática que Homebrew está actualizado para muchas computadoras.

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.

2voto

user3439894 Puntos 5883

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.

1 votos

GitHub tiene una API para esto, por lo que un método más estable sería: curl -sL https://api.github.com/repos/Homebrew/brew/releases/latest | ruby -rjson -e 'puts JSON.parse($<.read)["name"]'

1 votos

@Synoli, Gracias por la sugerencia de comando en tu comentario. Lo he incorporado en mi respuesta.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X