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


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


1709
2017-10-21 12:58


origen


Respuestas:


(He vuelto a editar mi respuesta para ofrecer un flujo de trabajo más completo para instalar / usar versiones de software antiguas con homebrew. Siéntase libre de agregar una nota si encontró mejor la versión anterior.)

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 por más tiempo y nunca ha eliminado versiones anteriores (usando, por ejemplo, brew cleanup), es posible que todavía exista alguna versión anterior de tu programa. Si quieres simplemente activar esa versión anterior, brew switch es la forma más fácil de hacer esto.

Comprobar 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 dos veces qué 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 * se ha movido a la versión recién activada

(*) Tenga en cuenta que brew switch solo funciona siempre que todas las dependencias de la versión anterior aún estén presentes. En algunos casos, puede ser necesaria una reconstrucción de la versión anterior. Por lo tanto, usando brew switch es principalmente útil cuando uno 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 haya una demanda lo suficientemente alta para varias versiones principales (potencialmente incompatibles con API) de un determinado software. A partir de marzo de 2012, Homebrew 0.9 proporciona un mecanismo para esto: brew tap & el versiones homebrew repositorio.

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 le mostrará dónde buscar:

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

Podemos simplemente instalarlo tecleando

$ 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 tiene golpeado el homebrew/versions grifo. (Comprobar con brew tap, eliminar 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 backported se mantengan actualizadas, este enfoque es probablemente la mejor manera de lidiar con software más antiguo.

3) Prueba alguna fórmula del pasado

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

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

a) tiempos históricos

Entre Agosto de 2011 y octubre de 2014, homebrew tenía una brew versions comando, que escupió todas las versiones disponibles con sus respectivos hashes SHA. A partir de octubre de 2014, debes hacer una brew tap homebrew/boneyard antes de que puedas usarlo Como sugiere el nombre del tap, 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 está instalada la versión postgresql más antigua, podemos volver a instalar la última fórmula para mantener nuestro repositorio limpio:

$ 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 probar nuestra propia excavación a través del repositorio homebrew.

$ git log -S'8.4.4' -- Library/Formula/postgresql.rb

git log -S busca todas las confirmaciones en las que la cadena '8.4.4' fue agregado o eliminado en el archivo Library/Formula/postgresql.rb. Conseguimos dos compromisos 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, fa992c6a82eebdc4cc36a0c0d2837f4c02f3f422 es el compromiso que nos interesa. Como este compromiso es bastante antiguo, intentaremos degradar la instalación homebrew completa (de ese modo, la fórmula API tiene más o menos garantía de ser 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 de git.

Una nota: cuando revises la confirmación anterior, bajas temporalmente tu instalación homebrew. Por lo tanto, debe tener cuidado ya que algunos comandos en homebrew pueden ser diferentes a la versión más reciente.

4) Escribir manualmente una fórmula

No es demasiado difícil y puedes subirlo a Homebrew-Versions.

A.) Bonificación: fijación

Si desea mantener una cierta versión de, digamos postgresql, y evitar que se actualice cuando haga lo natural brew update; brew upgrade procedimiento, puedes alfiler una fórmula:

$ brew pin postgresql

Las fórmulas fijas se enumeran en /usr/local/Library/PinnedKegs/ y una vez que quiera traer los últimos cambios y actualizaciones, puede desprender de nuevo:

$ brew unpin postgresql

2117
2017-11-11 20:04



Flujo de trabajo simple

Ahora que Homebrew / versions ha quedado obsoleto, Homebrew / core admite múltiples versiones de fórmulas con un nuevo formato de nomenclatura.

Para instalar una versión específica, p. postgresql 9.5 simplemente ejecuta:

$ brew install postgresql@9.5

Para ver una lista de las versiones disponibles, ejecute una búsqueda con @:

$ brew search postgresql@
==> Searching local taps...
postgresql@10.1      postgresql@9.4        postgresql@9.5        postgresql@9.6

632
2018-03-22 23:29



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

brew switch [formula] [version]

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

brew switch node 0.4.12
brew switch node 0.6.5

Ya que brew switch simplemente cambia los enlaces simbólicos, es muy rápido. Ver más documentación en Wiki Homebrew bajo Comandos externos.


425
2017-12-14 16:33



Actualización: 15/01/2015

  • Encuentra el historial de confirmación del software y la versión deseados. p.ej. Necesito cambiar de la versión 1.4.1 a la 1.3.3 de docker: https://github.com/Homebrew/homebrew-core/commits/master/Formula/docker.rb
  • Ver el archivo con este botón: enter image description here 
  • Haga clic en el botón Raw List item
  • Copia el URL (docker.rb url en este ejemplo) desde la barra de direcciones
  • brew install <url> (puede tener que brew unlink primero, p. brew unlink docker)
  • brew switch docker 1.3.3
  • Vuelve a la ventana acoplable 1.4.1 brew switch docker 1.4.1

De esto 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

183
2017-07-19 23:42



Descubrí una mejor solución alternativa 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 buscar el repositorio y un comentario en el repositorio.

Después de un poco de investigación, descubrieron que alguien tiene una colección de fórmulas raras con las que elaborar brebajes.


Si buscas MySQL 5.1.x, pruébalo.

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

92
2017-09-19 11:55



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

  1. Encuentra la biblioteca que estás buscando en https://github.com/mxcl/homebrew/tree/master/Library/Formula
  2. Pinchalo: https://github.com/mxcl/homebrew/blob/master/Library/Formula/postgresql.rb
  3. Haga clic en el botón "historial" para ver las confirmaciones antiguas: https://github.com/mxcl/homebrew/commits/master/Library/Formula/postgresql.rb
  4. Haga clic en el que desea: "postgresql: versión de actualización a 8.4.4", https://github.com/mxcl/homebrew/blob/fa992c6a82eebdc4cc36a0c0d2837f4c02f3f422/Library/Formula/postgresql.rb
  5. Haga clic en el enlace "raw": https://raw.github.com/mxcl/homebrew/fa992c6a82eebdc4cc36a0c0d2837f4c02f3f422/Library/Formula/postgresql.rb
  6. brew install https://raw.github.com/mxcl/homebrew/fa992c6a82eebdc4cc36a0c0d2837f4c02f3f422/Library/Formula/postgresql.rb

50
2017-10-16 22:12



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. Ir https://github.com/Homebrew/homebrew-core

  2. prensa t en su teclado para activar el buscador de archivos.

  3. Identifique una fórmula que parezca más relevante, tal vez: Formula/mysql.rb, que te lleva a una ubicación de archivo de forumla: https://github.com/Homebrew/homebrew-core/blob/master/Formula/mysql.rb.

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

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

NOTA: Puede que tenga que ver el historial de confirmaciones en su consola por sugerencia de GitHub si el historial de confirmaciones no se carga en su navegador. Reemplace el SHA de compromiso arriba en la URL si está interesado en ver esa confirmación en GitHub. Alternativamente, salte al paso 7, a continuación.

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

  2. A continuación, haga clic en el botón "Raw" para ver la fuente sin formato.

  3. Copia la URL. Alternativamente, crea la URL tú mismo con el mysql.rb nombre de archivo para identificar su fórmula y la versión particular de esa fórmula (identificada por el commmit SHA en la URL a continuación).

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

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

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

NOTA: Esta respuesta se actualizó para explicar la eliminación del sitio web braumeister.org. El mismo principio se aplica, braumeister simplemente había proporcionado una forma amigable para principiantes de navegar versiones de fórmula.


49
2018-02-24 05:38



Acabo de utilizar Homebrew para volver a Maven 2.2.1 ya que el simple brew install maven instalado Maven 3.0.3.

Primero debes dejar el dir de maven allí para

$ brew unlink maven

Use el comando de brew tap

$ brew tap homebrew / versiones
Clonación en '/ usr / local / Library / Taps / homebrew-versions' ...
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.
Resolución de deltas: 100% (362/362), hecho.
Fórmula golpeada 50

Ahora puedes 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
Hogar 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 SO: versión "mac os x": "10.7.4" arch: "x86_64" Familia: "mac"

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

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


27
2018-02-12 20:35



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

Descargalo, póngalo en su camino y brewv <formula_name> <wanted_version>. Para el OP específico, sería:

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

:)


21
2017-07-09 14:06