Solución:
TLDR: brew install [email protected]
Consulte la respuesta a continuación para obtener más detalles.
* (He reeditado mi respuesta para brindar un flujo de trabajo más completo para instalar / usar versiones de software anteriores con homebrew. Siéntase libre de agregar una nota si encontró mejor la versión anterior.)
Comencemos con el caso más simple:
1) Compruebe 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
. A continuación, solo se instalan globalmente los enlaces simbólicos a esta carpeta. En principio, esto hace que sea bastante fácil cambiar entre dos versiones instaladas.
brew cleanup
Si ha estado usando homebrew durante más tiempo y nunca eliminó versiones anteriores (usando, por ejemplo, brew switch
), es probable que aún exista alguna versión anterior de su programa. Si simplemente desea activar esa versión anterior,
es la forma más sencilla de hacer esto. brew info postgresql
Comprobar con brew switch postgresql <TAB>
(o
$ 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
) si la versión anterior está instalada: brew switch
Vemos que ya está instalada alguna versión anterior. Podemos activarlo usando
$ 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
:
$ 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
Comprobemos dos veces lo que está activado: *
Tenga en cuenta que la estrella
se ha movido a la versión recién activada brew switch
brew switch
Tenga en cuenta que
solo funciona siempre que todas las dependencias de la versión anterior sigan existiendo. En algunos casos, es posible que sea necesario reconstruir la versión anterior. Por lo tanto, usando
es sobre todo útil cuando uno quiere cambiar entre dos versiones no muy separadas. brew tap
2) Compruebe si la versión está disponible como grifo
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 una determinada pieza de software. En marzo de 2012, Homebrew 0.9 proporciona un mecanismo para esto:
brew search postgresql
y el repositorio de versiones homebrew.
$ brew search postgresql
postgresql
homebrew/versions/postgresql8 homebrew/versions/postgresql91
homebrew/versions/postgresql9 homebrew/versions/postgresql92
Ese repositorio de versiones puede incluir backports de versiones anteriores para varias fórmulas. (En su mayoría solo los grandes y famosos, pero por supuesto también tendrán varias fórmulas para postgresql).
$ 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
# …
le mostrará dónde buscar: Simplemente podemos instalarlo escribiendo Tenga en cuenta que esto tiene automáticamente homebrew/versions
golpeado brew tap
los brew untap homebrew/versions
grifo. (Comprobar con
$ brew tap homebrew/versions
$ brew install postgresql8
, eliminar con
.) Lo siguiente habría sido equivalente:
Siempre que las fórmulas de la versión retroportada 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 que estén completos. Ambos intentan resucitar alguna fórmula de muertos vivientes del repositorio de cerveza. Debido a las dependencias cambiadas, los cambios de la 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 de git, se pueden instalar versiones específicas usando comandos git simples. Sin embargo, necesitamos encontrar una manera de llegar a una confirmación donde la versión anterior estaba disponible. a) tiempos históricosEntre brew versions
Agosto de 2011 y octubre de 2014 brew tap homebrew/boneyard
, homebrew tenía un
comando, que escupió todas las versiones disponibles con sus respectivos hash SHA. A partir de octubre de 2014, debe realizar una
$ 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
antes de poder usarlo. Como sugiere el nombre del grifo, probablemente solo debería hacer esto como último recurso.
# 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
P.ej
$ git checkout -- Library/Formula/postgresql.rb
brew switch
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.
Ahora que la versión anterior de postgresql está instalada, podemos volver a instalar la última fórmula para mantener limpio nuestro repositorio:
es tu amigo para cambiar entre lo viejo y lo nuevo.
$ cd Library/Taps/homebrew/homebrew-core && git log -S'8.4.4' -- Formula/postgresql.rb
git log -S
b) tiempos prehistóricos '8.4.4'
Para necesidades especiales, también podemos probar nuestra propia búsqueda en el repositorio de homebrew. Library/Taps/homebrew/homebrew-core/Formula/postgresql.rb
busca todas las confirmaciones en las que la cadena
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
fue agregado o eliminado en el archivo fa992c6a82eebdc4cc36a0c0d2837f4c02f3f422
. Obtenemos dos confirmaciones como resultado.
$ git checkout -b postgresql-8.4.4 fa992c6a82eebdc4cc36a0c0d2837f4c02f3f422
$ brew install postgresql
$ git checkout master
$ git branch -d postgresql-8.4.4
Obviamente,
es el compromiso que nos interesa. Como este compromiso es bastante antiguo, intentaremos degradar la instalación completa de Homebrew (de esa manera, se garantiza más o menos la validez de la API de fórmulas):
Puede omitir el último comando para mantener la referencia en su repositorio de git.
Una nota: cuando revisa la confirmación anterior, temporalmente degrada la 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 cargarlo en su propio repositorio. Solían ser versiones Homebrew, pero ahora están descontinuadas. brew update; brew upgrade
A.) Bono: Fijar Si desea mantener una determinada versión de, por ejemplo, postgresql, y evitar que se actualice cuando haga lo natural procedimiento, puedes
$ brew pin postgresql
alfiler /usr/local/Library/PinnedKegs/
una fórmula: Las fórmulas fijadas se enumeran en y una vez que desee incorporar los últimos cambios y actualizaciones, puede
$ brew unpin postgresql
desprender
de nuevo:
Flujo de trabajo simple
$ brew install [email protected]
Ahora que las versiones de Homebrew / han quedado obsoletas, Homebrew / core admite algunas versiones de fórmulas con un nuevo formato de nomenclatura.
$ brew search [email protected]
==> Searching local taps...
[email protected] ✔ [email protected] [email protected] [email protected]
Para instalar una versión específica, por ejemplo, postgresql 9.5, simplemente ejecute:
brew switch [formula] [version]
Para enumerar las versiones disponibles, ejecute una búsqueda con @:
brew switch node 0.4.12
brew switch node 0.6.5
Ahora existe una forma mucho más sencilla de instalar una versión anterior de una fórmula que había instalado anteriormente. Simplemente use brew switch
Por ejemplo, alterno regularmente entre Node.js 0.4.12 y 0.6.5:
Ya que
solo cambia los enlaces simbólicos, es muy rápido. Consulte más documentación en Homebrew Wiki en Comandos externos.