Saltar al contenido

instalación – Homebrew ¿instalar una versión específica de la fórmula?

octubre 19, 2021
apple touch icon@2

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 cleanupSi 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 switchVemos 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. 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 de varias versiones principales (potencialmente incompatibles con la API) de una determinada pieza de software. En marzo de 2012, brew tap Homebrew 0.9 proporciona un mecanismo para esto: & los

versiones caseras

brew search postgresql repositorio.

$ 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 taplos brew untap homebrew/versionsgrifo. (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 completarlos. 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 está instalada la versión anterior de postgresql, 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.rbbusca 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 muy dificily luego puede cargarlo en su propio repositorio. Solía ​​ser

Versiones caseras

, pero que ahora está descontinuado. 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:

close