Homebrew instala una versión específica de la fórmula?

2197

¿Cómo instalo una versión específica de una fórmula en homebrew? Por ejemplo, postgresql-8.4.4 en lugar de la última 9.0.

Gravis
fuente
2
postgresqles extraño porque tenía versiones separadas en Homebrew en un punto, algo así bashpodría ser un mejor ejemplo ya que pasó de 4.xa 5.x dentro del mismo nombre de fórmula. Ver stackoverflow.com/a/55764594/3794873
dragon788
2
Leo todas las respuestas Es 2020 y no hay una manera fácil o un comando oficial para hacerlo
oluckyman

Respuestas:

2556

TLDR: brew install [email protected] consulte la respuesta a continuación para obtener más detalles.


* ( He reeditado mi respuesta para dar un flujo de trabajo más completo para instalar / usar versiones de software anteriores con homebrew. Siéntase libre de agregar una nota si encuentra la versión anterior mejor ) .

Comencemos con el caso más simple:

1) Verifique si la versión ya está instalada (pero no activada)

Cuando homebrew instala una nueva fórmula, la coloca en un directorio versionado como /usr/local/Cellar/postgresql/9.3.1 . Solo los enlaces simbólicos a esta carpeta se instalan globalmente. En principio, esto hace que sea bastante fácil cambiar entre dos versiones instaladas. (*)

Si ha estado usando homebrew durante más tiempo y nunca eliminó versiones anteriores (usando, por ejemplo brew cleanup), es probable que algunas versiones anteriores de su programa aún estén disponibles. Si desea simplemente activar esa versión anterior, brew switches la forma más fácil de hacerlo.

Verifique con brew info postgresql(o brew switch postgresql <TAB>) si la versión anterior está instalada:

$ brew info postgresql
postgresql: stable 9.3.2 (bottled)
http://www.postgresql.org/
Conflicts with: postgres-xc
/usr/local/Cellar/postgresql/9.1.5 (2755 files, 37M)
  Built from source
/usr/local/Cellar/postgresql/9.3.2 (2924 files, 39M) *
  Poured from bottle
From: https://github.com/Homebrew/homebrew/commits/master/Library/Formula/postgresql.rb
# … and some more

Vemos que alguna versión anterior ya está instalada. Podemos activarlo usando brew switch:

$ brew switch postgresql 9.1.5
Cleaning /usr/local/Cellar/postgresql/9.1.5
Cleaning /usr/local/Cellar/postgresql/9.3.2
384 links created for /usr/local/Cellar/postgresql/9.1.5

Vamos a verificar lo que está activado:

$ brew info postgresql
postgresql: stable 9.3.2 (bottled)
http://www.postgresql.org/
Conflicts with: postgres-xc
/usr/local/Cellar/postgresql/9.1.5 (2755 files, 37M) *
  Built from source
/usr/local/Cellar/postgresql/9.3.2 (2924 files, 39M)
  Poured from bottle
From: https://github.com/Homebrew/homebrew/commits/master/Library/Formula/postgresql.rb
# … and some more

Tenga en cuenta que la estrella * ha movido a la versión recién activada

(*) Tenga en cuenta que brew switchsolo funciona mientras existan todas las dependencias de la versión anterior. En algunos casos, puede ser necesaria una reconstrucción de la versión anterior. Por lo tanto, usandobrew switch es principalmente útil cuando se quiere cambiar entre dos versiones no muy separadas.

2) Verifique si la versión está disponible como un toque

Especialmente para proyectos de software más grandes, es muy probable que exista una demanda lo suficientemente alta para varias versiones principales (potencialmente incompatibles con la API) de un determinado software. A partir de marzo de 2012, Homebrew 0.9 proporciona un mecanismo para esto: brew tapy el repositorio de versiones de homebrew .

Ese repositorio de versiones puede incluir backports de versiones anteriores para varias fórmulas. (Principalmente solo los grandes y famosos, pero por supuesto también tendrán varias fórmulas para postgresql).

brew search postgresql te mostrará dónde buscar:

$ brew search postgresql
postgresql
homebrew/versions/postgresql8    homebrew/versions/postgresql91
homebrew/versions/postgresql9    homebrew/versions/postgresql92

Simplemente podemos instalarlo escribiendo

$ brew install homebrew/versions/postgresql8
Cloning into '/usr/local/Library/Taps/homebrew-versions'...
remote: Counting objects: 1563, done.
remote: Compressing objects: 100% (943/943), done.
remote: Total 1563 (delta 864), reused 1272 (delta 620)
Receiving objects: 100% (1563/1563), 422.83 KiB | 339.00 KiB/s, done.
Resolving deltas: 100% (864/864), done.
Checking connectivity... done.
Tapped 125 formula
==> Downloading http://ftp.postgresql.org/pub/source/v8.4.19/postgresql-8.4.19.tar.bz2
# …

Tenga en cuenta que esto ha tocado el homebrew/versionsgrifo automáticamente . (Verifique con brew tap, elimine con brew untap homebrew/versions). Lo siguiente habría sido equivalente:

$ brew tap homebrew/versions
$ brew install postgresql8

Mientras las fórmulas de la versión con respaldo se mantengan actualizadas, este enfoque es probablemente la mejor manera de lidiar con el software anterior.

3) Prueba alguna fórmula del pasado

Los siguientes enfoques se enumeran principalmente para completar. Ambos intentan resucitar alguna fórmula de muertos vivientes del repositorio de cerveza. Debido a cambios en las dependencias, cambios en la API en la especificación de la fórmula o simplemente un cambio en la URL de descarga, las cosas pueden o no funcionar.

Dado que todo el directorio de fórmulas es un repositorio de git, uno puede instalar versiones específicas usando comandos simples de git. Sin embargo, necesitamos encontrar una manera de llegar a un commit donde la versión anterior estaba disponible.

a) tiempos históricos

Entre agosto de 2011 y octubre de 2014 , homebrew tenía un brew versionscomando que escupía todas las versiones disponibles con sus respectivos hashes SHA. A partir de octubre de 2014, tienes que hacer unbrew tap homebrew/boneyard antes de poder usarlo. Como sugiere el nombre del grifo, probablemente solo deberías hacer esto como último recurso.

P.ej

$ brew versions postgresql
Warning: brew-versions is unsupported and may be removed soon.
Please use the homebrew-versions tap instead:
  https://github.com/Homebrew/homebrew-versions
9.3.2    git checkout 3c86d2b Library/Formula/postgresql.rb
9.3.1    git checkout a267a3e Library/Formula/postgresql.rb
9.3.0    git checkout ae59e09 Library/Formula/postgresql.rb
9.2.4    git checkout e3ac215 Library/Formula/postgresql.rb
9.2.3    git checkout c80b37c Library/Formula/postgresql.rb
9.2.2    git checkout 9076baa Library/Formula/postgresql.rb
9.2.1    git checkout 5825f62 Library/Formula/postgresql.rb
9.2.0    git checkout 2f6cbc6 Library/Formula/postgresql.rb
9.1.5    git checkout 6b8d25f Library/Formula/postgresql.rb
9.1.4    git checkout c40c7bf Library/Formula/postgresql.rb
9.1.3    git checkout 05c7954 Library/Formula/postgresql.rb
9.1.2    git checkout dfcc838 Library/Formula/postgresql.rb
9.1.1    git checkout 4ef8fb0 Library/Formula/postgresql.rb
9.0.4    git checkout 2accac4 Library/Formula/postgresql.rb
9.0.3    git checkout b782d9d Library/Formula/postgresql.rb

Como puede ver, desaconseja su uso. Homebrew escupe todas las versiones que puede encontrar con su heurística interna y le muestra una forma de recuperar las fórmulas antiguas. Vamos a intentarlo.

# First, go to the homebrew base directory
$ cd $( brew --prefix )
# Checkout some old formula
$ git checkout 6b8d25f Library/Formula/postgresql.rb
$ brew install postgresql
# … installing

Ahora que la versión anterior de postgresql está instalada, podemos reinstalar la última fórmula para mantener limpio nuestro repositorio:

$ git checkout -- Library/Formula/postgresql.rb

brew switch es tu amigo para cambiar entre lo viejo y lo nuevo.

b) tiempos prehistóricos

Para necesidades especiales, también podemos intentar cavar a través del repositorio homebrew.

$ cd Library/Taps/homebrew/homebrew-core && git log -S'8.4.4' -- Formula/postgresql.rb

git log -Sbusca todas las confirmaciones en las que la cadena '8.4.4'se agregó o eliminó en el archivo Library/Taps/homebrew/homebrew-core/Formula/postgresql.rb. Obtenemos dos commits como resultado.

commit 7dc7ccef9e1ab7d2fc351d7935c96a0e0b031552
Author: Aku Kotkavuo
Date:   Sun Sep 19 18:03:41 2010 +0300

    Update PostgreSQL to 9.0.0.

    Signed-off-by: Adam Vandenberg

commit fa992c6a82eebdc4cc36a0c0d2837f4c02f3f422
Author: David Höppner
Date:   Sun May 16 12:35:18 2010 +0200

    postgresql: update version to 8.4.4

Obviamente, fa992c6a82eebdc4cc36a0c0d2837f4c02f3f422es la confirmación que nos interesa. Como esta confirmación es bastante antigua, intentaremos degradar la instalación completa de homebrew (de esa manera, la API de fórmula está más o menos garantizada como válida):

$ git checkout -b postgresql-8.4.4 fa992c6a82eebdc4cc36a0c0d2837f4c02f3f422
$ brew install postgresql
$ git checkout master
$ git branch -d postgresql-8.4.4

Puede omitir el último comando para mantener la referencia en su repositorio git.

Una nota: cuando revisa el commit anterior, degrada temporalmente su instalación de homebrew. Por lo tanto, debe tener cuidado ya que algunos comandos en homebrew pueden ser diferentes a la versión más reciente.

4) Escribe manualmente una fórmula

No es demasiado difícil y luego puede subirlo a su propio repositorio. Solía ​​ser Homebrew-Versions , pero ahora está descontinuado.

A.) Bonificación: fijación

Si desea mantener una cierta versión de, digamos postgresql, alrededor y evitar que se actualice cuando realiza el brew update; brew upgradeprocedimiento natural , puede anclar una fórmula:

$ brew pin postgresql

Las fórmulas ancladas se enumeran /usr/local/Library/PinnedKegs/y una vez que desee incorporar los últimos cambios y actualizaciones, puede volver a fijarlas :

$ brew unpin postgresql
Debilski
fuente
18
También puede verificar la fórmula usando git checkout fa992 -- Library/Formula/postgresql.rb. Cuando haya terminado, puede deshacer los cambios a la fórmula usando git revert HEAD Library/Formula/postgresql.rb && git checkout -- Library/Formula/postgresql.rb.
mipadi
18
Nota: en una nueva instalación de Homebrew, es posible que deba brew updateestablecer su repositorio de Git.
Bluu
557
Esto es ridículamente difícil.
Dogweather
30
A partir de hoy, el directorio correcto para ejecutar los comandos manuales en el repositorio es cd $(brew --repository)/Library/Taps/homebrew/homebrew-core, entonces puede usar git checkout 4cce79d -- Formula/go.rby HOMEBREW_NO_AUTO_UPDATE=1 brew install go.
Calin
12
homebrew / versiones está en desuso
Ezekiel Victor
775

Flujo de trabajo simple

Ahora que Homebrew / versiones ha quedado en desuso, Homebrew / core admite múltiples versiones de fórmulas con un nuevo formato de nombres.

Para instalar una versión específica, por ejemplo, postgresql 9.5 simplemente ejecuta:

$ brew install [email protected]

Para enumerar las versiones disponibles, ejecute una búsqueda con @:

$ brew search postgresql@
==> Searching local taps...
[email protected][email protected]        [email protected]        [email protected]
Bijan
fuente
8
Parece el más simple, pero cuando copio y pego, obtengo fatal: Not a git repository (or any of the parent directories): .git. Acabo de cdentrar en el directorio (sin FORMULANAME.rb), luego hago elgit checkout 120938
Ramon Tayag
8
@RamonTayag, tuve el mismo problema. Asegúrate de cd /usr/localprimero.
gjb
13
Encontré que necesitas un paso 3.5:brew unlink FORMULANAME
Intentss
37
brew versions <formula>ya no es compatible.
ejoubaud
44
@ dem7w2, puede crear los enlaces simbólicos con brew link --force [email protected]. Si ya tiene instalada una versión más nueva y desea que la versión anterior sea la predeterminada, también necesitará una --overwrite.
Ryan
457

Ahora hay una manera mucho más fácil de instalar una versión anterior de una fórmula que ya había instalado. Simplemente use

brew switch [formula] [version]

Por ejemplo, alterno regularmente entre Node.js 0.4.12 y 0.6.5:

brew switch node 0.4.12
brew switch node 0.6.5

Como brew switchsolo cambia los enlaces simbólicos, es muy rápido. Consulte más documentación en Homebrew Wiki en Comandos externos .

Trevor Burnham
fuente
2
Intenté esto, y tuve éxito con el mensaje "33 enlaces creados para /usr/local/Cellar/node/0.4.7", pero cuando ejecuto el nodo después, falla con el mensaje "-bash: / usr / local / bin / node: No existe tal archivo o directorio ". ¿Alguna idea de lo que podría haber salido mal? Nota: descargué 0.4.7 manualmente y lo puse en el directorio de la bodega, porque no sé cómo descargar nada más que la última versión de nodo usando brew.
Soroush Hakami
66
¡Espero que sepas que hay algo llamado 'nvm' [ github.com/creationix/nvm] !
Gaurav Agarwal
40
Confío en la versión del paquete que ya está instalada. Si no tiene la versión, deberá aplicar la respuesta seleccionada.
Nic Strong
1
Para la versión de nodo mgmt en particular, nvm es una mejor solución, en mi humilde opinión.
cada
55
@NicStrong De hecho, se brew switchbasa en que la versión solicitada ya está instalada. Sin embargo, desafortunadamente, la respuesta actualmente aceptada es increíblemente inútil, enrevesada y desactualizada. A continuación hay mejores respuestas que son mucho más útiles.
GDP2
250

Actualización: 15/01/2015

  • Encuentre el historial de confirmación del software y la versión deseados. Por ejemplo, necesito cambiar de la versión de Docker 1.4.1 a 1.3.3: https://github.com/Homebrew/homebrew-core/commits/master/Formula/docker.rb
  • Ver el archivo con este botón: ingrese la descripción de la imagen aquí
  • Haga clic en el botón Raw: Elemento de la lista
  • Copia el URL (url docker.rb en este ejemplo) de la barra de direcciones
  • brew install <url> (puede tener que brew unlink primero, por ejemplo brew unlink docker)
  • brew switch docker 1.3.3
  • Cambiar de nuevo a Docker 1.4.1 brew switch docker 1.4.1

De esta esencia

brew update
brew versions FORMULA
cd `brew --prefix`
git checkout HASH Library/Formula/FORMULA.rb  # use output of "brew versions"
brew install FORMULA
brew switch FORMULA VERSION
git checkout -- Library/Formula/FORMULA.rb    # reset formula

## Example: Using Subversion 1.6.17
#
# $ brew versions subversion
# 1.7.3    git checkout f8bf2f3 /usr/local/Library/Formula/subversion.rb
# 1.7.2    git checkout d89bf83 /usr/local/Library/Formula/subversion.rb
# 1.6.17   git checkout 6e2d550 /usr/local/Library/Formula/subversion.rb
# 1.6.16   git checkout 83ed494 /usr/local/Library/Formula/subversion.rb
# 1.6.15   git checkout 809a18a /usr/local/Library/Formula/subversion.rb
# 1.6.13   git checkout 7871a99 /usr/local/Library/Formula/subversion.rb
# 1.6.12   git checkout c99b3ac /usr/local/Library/Formula/subversion.rb
# 1.6.6    git checkout 8774131 /usr/local/Library/Formula/subversion.rb
# 1.6.5    git checkout a82e823 /usr/local/Library/Formula/subversion.rb
# 1.6.3    git checkout 6b6d369 /usr/local/Library/Formula/subversion.rb
# $ cd `brew --prefix`
# $ git checkout 6e2d550 /usr/local/Library/Formula/subversion.rb
# $ brew install subversion
# $ brew switch subversion 1.6.17
# $ git checkout -- Library/Formula/subversion.rb
Vishal
fuente
46
Esto es lo único que funcionó para mí. Es bastante tonto que un administrador de paquetes requiera tanto tiempo para instalar una versión anterior. Quizás estoy mimado por ruby ​​RVM y bundler, pero este proceso realmente necesita ser racionalizado y abstraído.
poetmountain
3
Cuando intenté ir a una versión anterior de Ansible, tuve que desvincular la fórmula antes de instalar la versión anterior como se indica. Así que antes de hacerlo brew install <url>, brew unlink <formulaname>. De lo contrario, esta es la forma más simple y concisa (hasta ahora) para cambiar a una versión específica de una fórmula.
bigsweater
¿Has presionado el Rawbotón en qué archivo?
Iulian Onofrei
1
Funciona, pero ocasionalmente debe descargar el archivo .rb sin formato y cambiar la suma de comprobación para evitar que Homebrew se queje de la falta de coincidencia de SHA. GitHub parece tener una gran parte de los árboles de repos en algún momento en 2017, y sus sumas de verificación cambiaron. (En realidad, causó mucha confusión en mi equipo cuando Bazel comenzó a fallar en los desajustes de hash en julio pasado)
Chang Qian
66
He encontrado la dirección fácilmente porbrew log <formula>
kangkyu
128

En la línea de la sugerencia de @ halfcube, esto funciona muy bien:

  1. Encuentra la biblioteca que estás buscando en https://github.com/Homebrew/homebrew-core/tree/master/Formula
  2. Haga clic en él: https://github.com/Homebrew/homebrew-core/blob/master/Formula/postgresql.rb
  3. Haga clic en el botón "historial" para ver las confirmaciones antiguas: https://github.com/Homebrew/homebrew-core/commits/master/Formula/postgresql.rb
  4. Haga clic en el que desee: "postgresql: actualice la versión a 8.4.4", https://github.com/Homebrew/homebrew-core/blob/8cf29889111b44fd797c01db3cf406b0b14e858c/Formula/postgresql.rb
  5. Haga clic en el enlace "sin procesar": https://raw.githubusercontent.com/Homebrew/homebrew-core/8cf29889111b44fd797c01db3cf406b0b14e858c/Formula/postgresql.rb
  6. brew install https://raw.githubusercontent.com/Homebrew/homebrew-core/8cf29889111b44fd797c01db3cf406b0b14e858c/Formula/postgresql.rb
Lance Pollard
fuente
8
Esta es la forma más fácil de instalar la versión necesaria de un paquete si no está disponible en el repositorio principal comopackage@version
avy
77
Si no puede usar la interfaz web, puede clonar el repositorio y hacerlo localmente: use git log master -- Formula/PACKAGENAME.rbpara obtener el historial de confirmación, verifique la confirmación correcta y luego ejecute brew install Formula/PACKAGENAME.rbpara instalarlo.
chipbuster
77
Creo que necesitas brew unlinkantes brew installde otra versión.
studgeek
¿Quién es este mxcl?
PJSCopeland
1
Hago esto brew install https://github.com/Homebrew/homebrew-core/raw/afc10f17af8023906b87363a8340aeb62284329f/Formula/postgresql%409.6.rbpero aparece el error, probablemente debido a la @firma: ¿ Error: No available formula with the name "postgresql%409.6" In formula file: /Users/maciek/Library/Caches/Homebrew/Formula/postgresql%409.6.rb Expected to find class Postgresql%4096, but only found: PostgresqlAT96.Alguna idea?
msciwoj
109

He descubierto una solución alternativa mejor que las otras soluciones complejas.

brew install https://raw.github.com/Homebrew/homebrew-versions/master/postgresql8.rb

Esto descargará e instalará PostgreSQL 8.4.8


Encontré esta solución comenzando a seguir los pasos de búsqueda en el repositorio y un comentario en el repositorio.

Después de una pequeña investigación descubrió que alguien tiene una colección de formuladores raros para elaborar.


Si estás buscando MySQL 5.1.x, inténtalo.

brew install https://raw.github.com/Homebrew/homebrew-versions/master/mysql51.rb
kylewelsby
fuente
1
hmm, brew install https://github.com/Homebrew/homebrew-versions/blob/master/node06.rbparecía fallar con los errores de sintaxis.
Brian Armstrong
66
@BrianArmstrong Se está refiriendo a una versión con formato html del archivo, mientras que necesita una versión en bruto .
Nikita Volkov
Vaya a github.com/Homebrew/homebrew/commits/master/Library/Formula/… , elija su versión, busque el código, sin procesar - use esta url.
jpillora
1
No olvides la rawURL
Faber
99
homebrew-versionsse ha ido y todo lo que está en coreahora, para el caso general es: brew install https://raw.github.com/Homebrew/homebrew-core/<COMMIT>/Formula/<FORMULA>.rb. COMMITse puede encontrar visitando github.com/Homebrew/homebrew-core/commits/master/Formula/… .
PJSCopeland
78

Puede usar la estrategia de identificar la fórmula y una confirmación particular en el historial de la fórmula que coincida con la versión del paquete que desea instalar.

  1. Vaya a https://github.com/Homebrew/homebrew-core

  2. Presione ten su teclado para activar el buscador de archivos.

  3. Identifique una fórmula que parezca más relevante, quizás: Formula/mysql.rbllevándolo a la ubicación de un archivo forumla: https://github.com/Homebrew/homebrew-core/blob/master/Formula/mysql.rb .

  4. Mire el historial de revisiones haciendo clic en el Historybotón, que se encuentra en https://github.com/Homebrew/homebrew-core/commits/master/Formula/mysql.rb . Si está interesado en MySQL 5.7.10, es posible que desee hacer clic en la última revisión anterior a 5.7.11, que navega a una confirmación de GitHub:

    https://github.com/Homebrew/homebrew-core/commit/c77882756a832ac1d87e7396c114158e5619016c#Formula/mysql.rb

NOTA: Puede que tenga que ver el historial de confirmación en su consola según la sugerencia de GitHub si el historial de confirmación no se carga en su navegador. Reemplace el commit SHA anterior en la URL si está interesado en ver ese commit en GitHub. Alternativamente, salte al paso 7, a continuación.

  1. Haga clic en el botón "Ver" para ver la fuente del archivo mysql.rb después de aplicar el commit.

  2. Luego haga clic en el botón "Sin procesar" para ver la fuente sin procesar.

  3. Copia la URL. Alternativamente, cree la URL usted mismo con el mysql.rbnombre del archivo para identificar su fórmula y la versión particular de esa fórmula (identificada por el SHA de comunicación en la URL a continuación).

    https://raw.githubusercontent.com/Homebrew/homebrew-core/c77882756a832ac1d87e7396c114158e5619016c/Formula/mysql.rb

  4. Instalarlo con $ brew install [URL from step 7]

    $ brew install https://raw.githubusercontent.com/Homebrew/homebrew-core/c77882756a832ac1d87e7396c114158e5619016c/Formula/mysql.rb
    

NOTA: Esta respuesta se actualizó para dar cuenta de la eliminación del sitio web braumeister.org. Se aplica el mismo principio, Braumeister simplemente había proporcionado una forma amigable para principiantes para navegar por las versiones de fórmulas.

sealocal
fuente
13
Desafortunadamente, esto está demasiado abajo en la lista de respuestas, pero es la mejor solución. Esto es lo que uso, excepto que en lugar de usar braumeister, solo voy a la página Homebrew GitHub de la fórmula que quiero (por ejemplo, para gcc, vaya a github.com/Homebrew/homebrew/blob/master/Library/Formula/gcc.rb ) y luego reviso el "Historial" del archivo hasta llegar a la versión que quiero.
Guy Kogus
3
Esta fue definitivamente la mejor solución en mi caso: instalar una versión anterior de Watchman que no requería Xcode 8.1
Zachary Keener
3
Esta es realmente la forma más fácil de instalar una versión anterior. Gran respuesta
Martin
44
Esto funcionó para mí, pero primero tuve que preparar el software para desvincularlo.
Brett Wagner
3
Esta fue la solución más simple para mí. Esto debería estar más arriba ya que la respuesta aceptada está desactualizada.
Tim W
35

La mayoría de las otras respuestas son obsoletas por ahora. Desafortunadamente, Homebrew todavía no tiene una forma integrada de instalar una versión desactualizada, a menos que esa versión exista como una fórmula separada (por ejemplo python@2,[email protected]  ...).

Afortunadamente, para otras fórmulas hay una manera mucho más fácil que el desorden enredado que solía ser necesario. Aquí están las instrucciones completas:

  1. Busque la versión correcta en los registros:

    brew log formula
    # Scroll down/up with j/k or the arrow keys
    # or use eg. /4\.4\.23 to search a specific version
    
    # This syntax only works on pre-2.0 Homebrew versions
    brew log --format=format:%H\ %s -F --grep=‹version› ‹formula›
    

    Esto mostrará una lista de hashes de confirmación. Tome uno que sea apropiado (en su mayoría debería ser bastante obvio, y generalmente es el más reciente (es decir, el superior).

  2. Encuentre la URL en la que reside la fórmula en el repositorio ascendente:

    brew info ‹formula› | grep ^From:
    
  3. Repara la URL:

    1. Reemplazar github.comconraw.githubusercontent.com
    2. Reemplace blob/mastercon el hash de confirmación que encontramos en el primer paso.
  4. Instale la versión deseada reemplazando masterla URL encontrada anteriormente por el hash de confirmación, por ejemplo:

    brew install https://raw.githubusercontent.com/Homebrew/homebrew-core/‹hash›/Formula/‹formula›.rb
    

(El último paso puede requerir ejecutar brew unlink ‹formula›antes).


Si ha copiado un hash de compromiso que desea usar, puede usar algo como este ejemplo para instalar esa versión, reemplazando el valor y bashcon su hash de compromiso y su fórmula deseada.

BREW_VERSION_SHA=32353d2286f850fd965e0a48bcf692b83a6e9a41
BREW_FORMULA_NAME=bash
brew info $BREW_FORMULA_NAME \
| sed -n \
    -e '/^From: /s///' \
    -e 's/github.com/raw.githubusercontent.com/' \
    -e 's%blob/%%' \
    -e "s/master/$BREW_VERSION_SHA/p" \
| xargs brew install

Este ejemplo es la instalación de bash 4.4.23 en lugar de bash 5, aunque si realizó un brew upgradedespués, bash 5 se instalaría en la parte superior, a menos que primero lo ejecute brew pin bash. En lugar de hacer esto más suave sin definir, se debe instalar primero el más reciente con brew install bashy, a continuación brew unlink bash, a continuación, instalar la versión anterior que desea por el script de arriba, y luego usar brew switch bash 4.4.23para establecer los enlaces simbólicos a la versión anterior. Ahora a brew upgradeno debería afectar su versión de Bash. Puede brew switch bashobtener una lista de las versiones disponibles para cambiar.


Alternativa con un toque personalizado solo local

Otra forma de lograr el mismo objetivo parece ser:

brew tap-new username/repo-name
# extract with a version seems to run a grep under the hood
brew extract --version='4.4.23' bash username/repo-name
brew install [email protected]
# Note this "fails" when trying to grab a bottle for the package and seems to have
# some odd doubling of the version in that output, but this isn't fatal.

Esto crea un formula@versiontoque personalizado que puede instalar según el ejemplo anterior. La desventaja es que probablemente aún lo necesite brew unlink bashy luego brew link [email protected]para usar su versión específica de Bash o cualquier otra fórmula.

Konrad Rudolph
fuente
1
Aparentemente cambiaron la sintaxis para brew logque cualquier extra -Fu --grepopciones me fallaran.
dragon788
1
@ dragon788 Maldito infierno, Homebrew 2 se rompió por completo brew log. No puedo molestarme en escribir una nueva versión ahora porque eso requiere analizar correctamente el mensaje de registro git o, alternativamente, ejecutarse git logdirectamente en el repositorio correspondiente. Y el registro de cambios no parece siquiera mencionar este cambio radical. Más que molesto.
Konrad Rudolph el
A menos que acepten que el cambio en el comportamiento es un error, parece que External Commandpodría ser necesario operar dentro de la estructura brewpara recuperar ese tipo de git logfiltrado. docs.brew.sh/External-Commands
dragon788
Este fue el único lugar donde pude encontrar el brew extractuso correcto , ¡gracias!
dognotdog
Sugeriría hacer que el local personalizado solo toque la primera parte de su respuesta. Realmente parece la mejor solución en general.
studgeek
29

Acabo de usar Homebrew para volver a Maven 2.2.1 desde el simple brew install mavenMaven 3.0.3 instalado.

Primero tienes que dejar el directorio de expertos allí, así que

$ brew unlink maven

Use el comando brew tap

$ brew tap homebrew / versiones
Clonación en '/ usr / local / Library / Taps / homebrew-version' ...
remoto: Contando objetos: 590, hecho.
remoto: Comprimir objetos: 100% (265/265), hecho.
remoto: Total 590 (delta 362), reutilizado 549 (delta 325)
Recepción de objetos: 100% (590/590), 117,49 KiB | 79 KiB / s, hecho.
Resolviendo deltas: 100% (362/362), hecho.
Tapped 50 formula

Ahora puede instalar la fórmula maven2:

$ brew install maven2
==> Descargando http://www.apache.org/dist/maven/maven-2/2.2.1/binaries/apache-maven-2.2.1-bin.tar.gz
################################################## ###################### 100.0%
/usr/local/Cellar/maven2/2.2.1: 10 archivos, 3.1M, integrados en 6 segundos
$ mvn --version
Apache Maven 2.2.1 (r801777; 2009-08-06 12: 16: 01-0700)
Versión de Java: 1.6.0_37
Página de inicio de Java: /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home
Configuración regional predeterminada: en_US, codificación de plataforma: MacRoman
Nombre del sistema operativo: "mac os x" versión: "10.7.4" arch: "x86_64" Familia: "mac" 

Editar: También puede simplemente brew switch maven 2.2.1cambiar a una versión diferente.

Editar: El proyecto Apache Maven reorganizó su repositorio. Se actualizó esta respuesta para tener en cuenta este cambio.

Cameron Goodale
fuente
Esto fue muy útil. Tenga en cuenta que la fundación apache ha reorganizado los binarios de maven en directorios específicos de la versión (1,2,3), por lo que deberá editar el maven.rb para 2.2.1 y quizás otros para que se ajusten a la nueva estructura. Por ejemplo, el binario para 2.2.1 se encuentra en: apache.org/dist/maven/maven-2/2.2.1/binaries/… . Tenga en cuenta el "maven-2 / 2.2.1 /" en la url.
Charles Forcey
@CharlesForcey Tienes razón sobre el repo de Maven dist que se reorganiza. Actualizaré la respuesta para usar brew tap para usar la fórmula anterior de maven2. Gracias por el comentario.
Cameron Goodale
21

Basado en el flujo de trabajo descrito por @tschundeee y la actualización 1 de @ Debilski , automaticé el procedimiento y agregué limpieza en este script .

Descárgalo , ponlo en tu camino y brewv <formula_name> <wanted_version>. Para el OP específico, sería:

cd path/to/downloaded/script/
./brewv postgresql 8.4.4

:)

MattiSG
fuente
44
simplemente impresionante. ¿Por qué no está esto en brew?
Adrian el
3
Ya no se encuentra :(
D-32
18

Una respuesta actualizada ya que se suma a lo que @ lance-pollard ya publicó como respuesta de trabajo.

Cómo instalar una versión específica de una fórmula (la fórmula utilizada en este ejemplo es terraform):

  1. Encuentre su archivo de fórmula, por ejemplo: https://github.com/Homebrew/homebrew-core/blob/master/Formula/terraform.rb
  2. Obtenga la versión de confirmación del historial de github con https://github.com/Homebrew/homebrew-core/commits/master/Formula/terraform.rb o git log master -- Formula/terraform.rbsi ha clonado el repositorio localmente.
  3. Obtenga la URL git sin procesar con la versión de confirmación de su fórmula: si el enlace de la fórmula en github.com es https://github.com/Homebrew/homebrew-core/blob/e4ca4d2c41d4c1412994f9f1cb14993be5b2c59a/Formula/terraform.rb , su URL sin procesar ser: https://raw.githubusercontent.com/Homebrew/homebrew-core/e4ca4d2c41d4c1412994f9f1cb14993be5b2c59a/Formula/terraform.rb
  4. Instalarlo con: brew install https://raw.githubusercontent.com/Homebrew/homebrew-core/e4ca4d2c41d4c1412994f9f1cb14993be5b2c59a/Formula/terraform.rb
Miguel Reyes
fuente
Para obtener la URL de git sin formato en el paso 3, también puede presionar el botón "Sin formato" y copiar la URL a la que el navegador lo lleva.
Brian Topping el
15

Método oficial (a juzgar por la respuesta a https://github.com/Homebrew/brew/issues/6028 )

Desafortunadamente, Homebrew todavía no tiene una forma integrada obvia de instalar una versión anterior.

Afortunadamente, para la mayoría de las fórmulas hay una forma mucho más fácil que el desorden complicado que solía ser necesario. Aquí están las instrucciones completas usando bashcomo ejemplo:

brew tap-new $USER/local-tap
# extract with a version seems to run a `git log --grep` under the hood
brew extract --version=4.4.23 bash $USER/local-tap
# Install your new version from the tap
brew install [email protected]
# Note this "fails" trying to grab a bottle for the package and seems to have
# some odd doubling of the version in that output, but this isn't fatal.

Esto crea formula@versionen su toque personalizado que puede instalar según el ejemplo anterior. Una nota importante es que probablemente lo necesite brew unlink bashsi previamente instaló la versión predeterminada / más reciente de la fórmula y luego brew link [email protected]para usar su versión específica de Bash (o cualquier otra fórmula donde tenga instalada la versión más reciente y más antigua).

Una desventaja potencial de este método es que no puede cambiar fácilmente entre las versiones porque de acuerdo con brew esta, es una "fórmula diferente".

Si desea poder usarlo brew switch $FORMULA $VERSION, debe usar el siguiente método.


Método con guión (recomendado)

Este ejemplo muestra la instalación de bash 4.4.23 anterior, un ejemplo útil ya que la bashfórmula actualmente instala bash 5.

  • Primero instale la última versión de la fórmula con brew install bash
  • entonces brew unlink bash
  • luego instale la versión anterior que desee según los fragmentos a continuación
  • finalmente use brew switch bash 4.4.23para configurar los enlaces simbólicos a su versión

Si realizó una brew upgradedespués de instalar una versión anterior sin instalar primero la última, entonces la última se instalaría golpeando su versión anterior, a menos que primero la ejecute brew pin bash.

Los pasos aquí EVITAN la fijación porque es fácil de olvidar y puede fijar a una versión que se vuelva insegura en el futuro (ver Shellshock / etc). Con esta configuración unbrew upgrade , no debería afectar su versión de Bash y siempre puede ejecutarbrew switch bash para obtener una lista de las versiones disponibles para cambiar.

Copie y pegue y edite las exportlíneas del fragmento de código a continuación para actualizar con la versión deseada y el nombre de la fórmula, luego copie y pegue el resto tal como está y usará esas variables para hacer la magia.

# This search syntax works with newer Homebrew
export BREW_FORMULA_SEARCH_VERSION=4.4.23 BREW_FORMULA_NAME=bash
# This will print any/all commits that match the version and formula name
git -C $(brew --repo homebrew/core) log \
--format=format:%H\ %s -F --all-match \
--grep=$BREW_FORMULA_SEARCH_VERSION --grep=$BREW_FORMULA_NAME

Cuando esté seguro de que la versión existe en la fórmula, puede usar lo siguiente:

# Gets only the latest Git commit SHA for the script further down
export BREW_FORMULA_VERSION_SHA=$(git -C $(brew --repo homebrew/core) log \
 --format=format:%H\ %s -F --all-match \
--grep=$BREW_FORMULA_SEARCH_VERSION --grep=$BREW_FORMULA_NAME | \
head -1 | awk '{print $1}')

Una vez que haya exportado el hash de confirmación que desea usar, puede usarlo para instalar esa versión del paquete.

brew info $BREW_FORMULA_NAME \
| sed -n \
    -e '/^From: /s///' \
    -e 's/github.com/raw.githubusercontent.com/' \
    -e 's%blob/%%' \
    -e "s/master/$BREW_FORMULA_VERSION_SHA/p" \
| xargs brew install

Siga las instrucciones en el resultado de la fórmula para ponerlo en su RUTA o configurarlo como su shell predeterminado.

dragon788
fuente
12

En la versión más reciente de homebrew (0.9.5 a partir de este escrito) habrá una receta específica para la versión del barril de homebrew que desea instalar. Ejemplo:

$ brew search mongodb
mongodb    mongodb24  mongodb26

Entonces simplemente haz lo brew install mongodb26normal.

En el caso de que ya había instalado la última versión, asegúrese de desvincular la última versión y vincular la versión deseada: brew unlink mongodb && brew link mongodb26.

Alex Sharp
fuente
Si bien esto puede responder la pregunta, sería preferible incluir aquí las partes esenciales de la respuesta y proporcionar el enlace para referencia.
Erik
1
@ Erik Gracias, arreglado.
Alex Sharp
11

El problema homebrew/versionses que alguien debe tener esa versión específica de software en el repositorio para que pueda usarla. Además, dado brew versionsque ya no es compatible, se requiere otra solución. Para las soluciones que indican el uso brew switch, esto solo funcionará si no lo ha hecho, brew cleanupya que la versión debe existir en su computadora.

Tuve un problema al querer instalar una versión anterior específica de la docker-machinecual no figuraba en la lista homebrew/versions. Resolví esto usando lo siguiente, que también debería funcionar para cualquier software instalado. El siguiente ejemplo se usará docker-machinecomo el paquete que quiero degradar de la versión 0.5.0 a 0.4.1.

  1. Vaya a su Formuladirectorio homebrew .
    Puede determinar esto ejecutando brew info [any package name]. Por ejemplo, brew info docker-machineme da una línea que me muestra un camino - /usr/local/Cellar/docker-machine/0.5.0. Esto me dice que en mi máquina, homebrew está instalado en /usr/localy mi Formula directorio se encuentra por defecto en/usr/local/Library/Formula

  2. Localice el archivo de fórmula específico (.rb) para su paquete. Como quiero degradar docker-machine, puedo ver un docker-machine.rbarchivo.

  3. Obtenga el historial de versiones para este archivo de fórmula . Introduzca git log docker-machine.rb. Esto enumerará el historial de confirmación completo para este archivo. Verá resultados como este:

    ...más 

    commit 20c7abc13d2edd67c8c1d30c407bd5e31229cacc
    Autor: BrewTestBot 
    Fecha: jue 5 de noviembre 16:14:18 2015 +0000

        docker-machine: actualiza la botella 0.5.0.

    commit 8f615708184884e501bf5c16482c95eff6aea637
    Autor: Vincent Lesierse 
    Fecha: martes 27 de octubre 22:25:30 2015 +0100

        docker-machine 0.5.0

        Docker-machine actualizado a 0.5.0

        Cierra # 45403.

        Firmado por: Dominyk Tiller 

    commit 5970e1af9b13dcbeffd281ae57c9ab90316ba423
    Autor: BrewTestBot 
    Fecha: Lun Sep 21 14:04:04 2015 +0100

        docker-machine: actualiza la botella 0.4.1.

    commit 18fcbd36d22fa0c19406d699308fafb44e4c8dcd
    Autor: BrewTestBot 
    Fecha: dom 16 de agosto 09:05:56 2015 +0100

        docker-machine: actualiza la botella 0.4.1.

    ...más

La parte difícil es encontrar la última confirmación para la versión específica que desea. En lo anterior, puedo decir la última versión 0.4.1 se ha comprometido con esta confirmación de la etiqueta: commit 5970e1af9b13dcbeffd281ae57c9ab90316ba423. Las confirmaciones por encima de este punto comienzan a usar la versión 0.5.0 (las entradas de registro de git se enumeran de la última a la fecha más temprana).

  1. Obtenga una versión anterior del archivo de fórmula. Usando la etiqueta de confirmación del paso 3 (puede usar los primeros 6 caracteres), puede obtener una versión anterior del archivo de fórmula usando lo siguiente:

    git checkout 5970e1 docker-machine.rb

  2. Desinstale la versión actual de su paquete. Simplemente ejecute los comandos brew normales para desinstalar la versión actual de su paquete.
    Ex.brew uninstall docker-machine

  3. Instale la versión anterior del paquete Ahora, solo puede ejecutar el comando de instalación de preparación normal e instalará la fórmula que ha extraído. Ex.brew install docker-machine

Es posible que deba volver a vincular utilizando brew link docker-machinesi es necesario.

Si en algún momento desea volver a la última versión de un paquete específico, vaya al directorio Fórmula y emita los siguientes comandos en su archivo de fórmula (.rb)

git reset HEAD docker-machine.rb
git checkout -- docker-machine.rb

Entonces puede brew uninstall docker-machiney brew install docker-machinepara obtener la última versión y mantenerla así en el futuro.

rchawdry
fuente
1
Muy minucioso escribir @rchawdry, gracias. Por cierto: para encontrar la confirmación que coincida con la versión que desea, agregue rápidamente el parámetro --grep git log --grep 0.4.1 docker-machine.rb.
Jerry Mindek
Para mí, el camino era/usr/local/Homebrew/Library/Taps/homebrew/homebrew-core/Formula
akauppi
No pude encontrar suficiente historial de versiones para la cairocerveza de esta manera. La respuesta de @ sealocal mostró más, por alguna razón.
akauppi
11

Es 2020 y la mayoría de las respuestas están desactualizadas

Mi situación: postgresqlse actualizó de 11 a 12 accidentalmente. Quiero mantener 11.

  1. Detener el DB:
brew services stop postgresql
  1. Instala Postgres 11:
brew install postgresql@11
  1. Permitirle:
brew link postgresql@11 --force
  1. (Opcional) Cambie el nombre del directorio de datos DB de postgresa postgres@11:
cd /usr/local/var
ls -lh
mv postgresql@11 postgresql@11-fresh-backup
mv postgres postgresql@11
  1. Inicie el DB:
brew services start postgresql@11

Si tiene algún error, marque /usr/local/var/log/[email protected](observe el @ 11).

Max Malysh
fuente
66
Esto solo funciona para el caso especial de postgresql @ 11 que los mantenedores de Homebrew mantienen explícitamente para ayudar con las migraciones del almacén de datos (realizadas con el comando especial brew postgresql-upgrade-database). Esta respuesta no es útil para casi ninguna otra fórmula.
Adam Wróbel
@ AdamWróbel He decidido que está bien responder la pregunta original sobre Postgres . brew postgresql-upgrade-databasees, bueno, para actualizaciones . Mi respuesta es sobre el uso de una versión anterior de Postgres. Simplemente cambiar binarios no funcionará.
Max Malysh
Usuarios de NodeJS que no están usando un administrador de versiones, por ejemplo nvm, para su información He tenido suerte usando esta técnica para versiones anteriores de LTS. Al menos al momento de escribir v10 y v12 debería estar disponible, por ejemplo, brew install node@12 formulae.brew.sh/formula/node
patas
9

Instale una versión anterior del paquete de preparación (ejemplo de Flyway 4.2.0)

Encuentre su directorio local de homebrew git o clone Homebrew / homebrew-core localmente

cd /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core/

O

git clone [email protected]:Homebrew/homebrew-core.git

Lista todas las versiones disponibles

git log master -- Formula/flyway.rb

Copie la ID de confirmación de la versión que desee e instálela directamente

brew install https://raw.githubusercontent.com/Homebrew/homebrew-core/793abfa325531415184e1549836c982b39e89299/Formula/flyway.rb

ffghfgh
fuente
¿Por qué no simplemente ejecutar brew install Formula/flyway.rbdesde el homebrew-coredirectorio? funcionó para mí sin usar la raw.github..dirección
kangkyu
9

He probado la mayoría de las soluciones aquí y están desactualizadas. Tuve que combinar algunas ideas de aquí con mi propio trabajo. Como resultado, he creado un script para ayudarme a hacer el trabajo pesado que puedes encontrar aquí

Uso:

brewv.sh formula_name desired_version
demosten
fuente
6

se podría hacer muy fácil para la última versión de brew.

brew tap homebrew/versions
brew install subversion17 # for svn 1.7 branch instead of last available
brew install postgresql8  # for postgresql 8 (which you ask)
Maxim Kholyavkin
fuente
2
... si alguien se molestó en crear una receta versionada para ese paquete.
clacke
6

Ninguno de estos realmente funcionó para mi caso (Python), así que agregaré mis 2 centavos:

cd `brew --prefix`
git log Library/Formula/python.rb

La salida se ve así:

commit 9ff2d8ca791ed1bd149fb8be063db0ed6a67a6de
Author: Dominyk Tiller <[email protected]>
Date:   Thu Jun 30 17:42:18 2016 +0100

    python: clarify pour_bottle reason

commit cb3b29b824a264895434214e191d0d7ef4d51c85
Author: BrewTestBot <[email protected]>
Date:   Wed Jun 29 14:18:40 2016 +0100

    python: update 2.7.12 bottle.

commit 45bb1e220341894bbb7de6fd3f6df20987dc14f0
Author: Rakesh <[email protected]>
Date:   Wed Jun 29 10:02:26 2016 +0530

    python 2.7.12

    Closes #2452.

    Signed-off-by: Tim D. Smith <[email protected]>

commit cf5da0547cd261f79d69e7ff62fdfbd2c2d646e9
Author: BrewTestBot <[email protected]>
Date:   Fri Jun 17 20:14:36 2016 +0100

    python: update 2.7.11 bottle.

...

Quiero la versión, 2.7.11así que mi hash es cf5da0547cd261f79d69e7ff62fdfbd2c2d646e9(o cf5da05para abreviar). A continuación, verifico esa versión e instalo la fórmula python:

git checkout cf5da05
brew install python

Finalmente, limpia:

git checkout master
tenfishsticks
fuente
2
La vida cambia y esta respuesta es más relevante. No te olvides de HOMEBREW_NO_AUTO_UPDATEleer github.com/Homebrew/brew/issues/1188
Wile E.
Los comandos correctos son cd brew --prefix /Homebrewygit log Library/Taps/homebrew/homebrew-core/Formula/python.rb
Iulian Onofrei
Pero incluso eso no funciona porque /Library/Tapsse ignora.
Iulian Onofrei
No te olvides de eso HOMEBREW_NO_AUTO_UPDATE. Sí, no se olvide de lo que necesita hasta después de descubrir que lo necesite. xD
Josh Habdas
¿Que tal este? HOMEBREW_NO_INSTALL_CLEANUP¿No es esto algo que necesitas recordar?
kangkyu
6

Si no puede encontrar su versión brew search <formula>, también puede intentar revisar los registros de confirmación de su fórmula para encontrar la versión que desea:

Aquí hay un ejemplo para instalar una versión anterior de nginx a través de brew:

A partir de ahí, podemos instalar 1.6.3con la url sha y raw git:

brew install https://raw.githubusercontent.com/Homebrew/homebrew/eba75b9a1a474b9fc4df30bd0a32637fa31ec049/Library/Formula/nginx.rb

lfender6445
fuente
3

Actualmente, las viejas formas de instalar versiones de fórmulas específicas han quedado en desuso. Entonces parece que tenemos que usar brew edit [formula]. Por ejemplo, digamos que queremos instalar una 62.1versión de icu4c(necesaria, por ejemplo, para postgresql 10.5). Entonces tendrías que

> brew edit icu4c
# drops you to editor

Aquí tendría que modificar el url, versiony sha256(quizás también mirror) a las 62.1cadenas correspondientes .

url "https://ssl.icu-project.org/files/icu4c/62.1/icu4c-62_1-src.tgz"
mirror "https://github.com/unicode-org/icu/releases/download/release-62-1/icu4c-62_1-src.tgz"
version "62.1"
sha256 "3dd9868d666350dda66a6e305eecde9d479fb70b30d5b55d78a1deffb97d5aa3"

luego corre brew reinstall icu4cpara descargar finalmente la 62.1versión.

Emil Rehhnberg
fuente
¿Cómo conseguir el sha256 ? en mi casohttps://storage.googleapis.com/dart-archive/channels/stable/release/1.24.3/sdk/dartsdk-macos-x64-release.zip
simo
1

Actualización en la Biblioteca / Fórmula / postgresql.rb línea 8 a

http://ftp2.uk.postgresql.org/sites/ftp.postgresql.org/source/v8.4.6/postgresql-8.4.6.tar.bz2

Y MD5 en la línea 9 a

fcc3daaf2292fa6bf1185ec45e512db6

Guardar y Salir.

brew install postgres
initdb /usr/local/var/postgres

Ahora, en esta etapa, es posible que se enfrente al postgresql could not create shared memory segmenterror, para evitar esa actualización /etc/sysctl.confcomo esta:

kern.sysv.shmall=65536
kern.sysv.shmmax=16777216

Inténtalo de initdb /usr/local/var/postgresnuevo y debería funcionar sin problemas.

Para ejecutar postgresql al inicio

launchctl load -w /usr/local/Cellar/postgresql/8.4.6/org.postgresql.postgres.plist

Espero que ayude :)

mmrs151
fuente
1

Acabo de copiar una versión anterior de elasticsearch en el /usr/local/Cellar/elasticsearchdirectorio.

$ mkdir /usr/local/Cellar/elasticsearch/5.4.3/bin
$ cp elasticsearch /usr/local/Cellar/elasticsearch/5.4.3/bin
$ brew switch elasticsearch 5.4.3

Eso es. Quizás sea útil para cualquiera.

Thaars
fuente
Un truco feo. Pero, sí, ¡también funcionó para mí, mientras intentaba buscar e instalar una versión anterior de cónsul! Salud.
darkdefender27
0

Decidí, en contra de mi mejor juicio, crear una fórmula para Maven 3.1.1, que homebrew/versionsno tenía. Para hacer esto:

  1. Me bifurcada homebrew/versionsen github.
  2. Hice un enlace simbólico $(brew --prefix)/Library/Tapsa la copia de trabajo local de mi tenedor. Voy a llamar a este my-homebrew/versions.
  3. Probé especificando la fórmula como my-homebrew/versions/<formula>.
  4. Envié una solicitud de extracción homebrew/versionspara mi nueva fórmula.

Hurra.

JB Rainsberger
fuente
0

Creé una herramienta para facilitar el proceso prescrito en esta respuesta .

Para encontrar un paquete pkgcon versión a.b.c, ejecute:

$ brew-install-specific [email protected]

Esto enumerará los commits en la pkgfórmula homebrew que mencionan la versión dada junto con sus URL de GitHub.

Matching versions:
1. pkg: update a.b.c bottle.
   https://github.com/Homebrew/homebrew-core/commit/<COMMIT-SHA>
2. pkg: release a.b.c-beta
   https://github.com/Homebrew/homebrew-core/commit/<COMMIT-SHA>
3. pkg a.b.c
   https://github.com/Homebrew/homebrew-core/commit/<COMMIT-SHA>

Select index: 

Verifique la confirmación de la URL dada e ingrese el índice de la confirmación seleccionada.

Select index: 2
Run:
  brew install https://raw.githubusercontent.com/Homebrew/homebrew-core/<COMMIT-SHA>/Formula/pkg.rb

Copie y ejecute el comando dado para instalar.

divs1210
fuente