0 votos

¿Cómo forzar a brew a instalar desde una fórmula local (sin acceso a internet)?

¿Cómo puedo indicarle a brew que omita intentar hacer llamadas a Internet al instalar de forma local?

He descargado la fórmula y la botella de brew

user@host ~ % ls
wget-1.24.5.json
wget-1.24.5.rb
wget-1.24.5.ventura.bottle.tar.gz

Según la página del manual man brew, puedes especificar la ruta relativa a la receta después de brew install

   BREW(1)                              brew                              BREW(1)

    NOMBRE
           brew - El Administrador de Paquetes Ausente para macOS (o Linux)

    SINOPSIS
           brew --version
           brew command \[--verbose|-v\] \[options\] \[formula\] ...
    ...
    TERMINOLOGÍA
           fórmula
               Definición de paquete Homebrew que se compila a partir de fuentes upstream
    ...
       install formula
           Instala la fórmula.

           La fórmula es usualmente el nombre de la fórmula a instalar, pero tiene otras
           sintaxis que se enumeran en la sección ESPECIFICANDO FÓRMULAS.
    ...
    ESPECIFICANDO FÓRMULAS
           Muchos comandos de Homebrew aceptan uno o más argumentos de fórmula. Estos
           argumentos pueden tener varias formas diferentes:

           El nombre de una fórmula
                  p. ej. git, node, wget.

           El nombre completamente calificado de una fórmula añadida
                  A veces una fórmula de un repositorio añadido puede entrar en conflicto con
                  una en homebrew/core. Aún puedes acceder a estas fórmulas utilizando
                  una sintaxis especial, por ejemplo, homebrew/dupes/vim o homebrew/ver-
                  sions/node4.

           Un archivo arbitrario
                  Homebrew puede instalar fórmulas desde una ruta local. Puede apuntar a
                  un archivo de fórmula o a una botella. Prefija las rutas relativas con ./
                  para evitar que sean interpretadas como un nombre de fórmula o tap.

Como se describe en la documentación anterior, ejecuto lo siguiente

brew reinstall --verbose ./wget-1.24.5.rb

Desafortunadamente, el comando anterior intenta acceder a Internet. Y cuando curl inevitablemente se agota el tiempo, en lugar de usar la botella que está almacenada en el $HOMEBREW_CACHE, simplemente se cierra debido a la falla en la red

user@host ~ %  brew reinstall --verbose ./wget-1.24.5.rb
curl: (28) Failed to connect to example.com port 9999 after 75004 ms: Couldn't connect to server
Failure while executing; `/usr/bin/env /usr/local/Homebrew/Library/Homebrew/shims/shared/curl --disable --cookie /dev/null --globoff --user-agent Homebrew/4.2.8\ \(Macintosh\;\ Intel\ Mac\ OS\ X\ 12.7.3\)\ curl/8.4.0 --header Accept-Language:\ en --fail --silent --remote-time --output /Users/runner/work/buskill-app/buskill-app/build/deps/api/formula.jws.json --location --disable --cookie /dev/null --globoff --show-error --user-agent Homebrew/4.2.8\ \(Macintosh\;\ Intel\ Mac\ OS\ X\ 12.7.3\)\ curl/8.4.0 --header Accept-Language:\ en --fail --silent --compressed --speed-limit 100 --speed-time 5 https://formulae.brew.sh/api/formula.jws.json` exited with 28. Here's the output:
curl: (28) Failed to connect to example.com port 9999 after 75004 ms: Couldn't connect to server
user@host ~ %  

¿Cómo puedo indicarle a brew que no intente descargar formula.jws.json y en su lugar simplemente use la receta que he proporcionado localmente?

0voto

Michael Altfield Puntos 143

Intente agregando las siguientes variables de entorno

export HOMEBREW_VERBOSE=1
export HOMEBREW_DEBUG=1
export HOMEBREW_NO_AUTO_UPDATE=1
export HOMEBREW_NO_INSTALL_FROM_API=1

En este caso, la ruta al archivo de fórmula estaba equivocada, pero la salida sin la bandera de depuración era inútil. Aquí está el error cuando incluyo la bandera --debug:

user@host ~ %  brew reinstall --verbose --debug ./wget-1.24.5.rb
/usr/local/Homebrew/Library/Homebrew/brew.rb (Cask::CaskLoader::NullLoader): loading ./wget-1.24.5.rb
Warning: No available formula with the name "./wget-1.24.5.rb".

Arreglé el problema cambiando el ./ a la ruta real donde se encuentra el archivo wget-1.24.5.rb.

Y pude solucionar los intentos de descargar el archivo formula.jws.json con curl con la variable de entorno HOMEBREW_NO_INSTALL_FROM_API.

Finalmente, me di cuenta de que si descargas el 'bottle', ni siquiera necesitas la fórmula. Puedes enlazarlo directamente

brew reinstall --verbose --debug path/to/wget-1.24.5.ventura.bottle.tar.gz

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