¿Instalar una versión específica de Homebrew?
¿Cómo puedo instalar una versión específica de una fórmula en homebrew? Por ejemplo, postgresql-8.4.4 en lugar de la última 9.0.
2061
3
¿Cómo puedo instalar una versión específica de una fórmula en homebrew? Por ejemplo, postgresql-8.4.4 en lugar de la última 9.0.
TLDR:
brew install postgresql@8.4.4
Ver respuesta abajo para más detalles.(He reeditado mi respuesta para dar un flujo de trabajo más completo para instalar/usar versiones de software más antiguas con homebrew. Siéntete libre de añadir una nota si encuentras mejor la versión antigua.*) Empecemos por el caso más sencillo:
Comprueba si la versión ya está instalada (pero no activada)
Cuando homebrew instala una nueva fórmula, la pone en un directorio versionado como
/usr/local/Cellar/postgresql/9.3.1
. A continuación, sólo se instalan globalmente los enlaces simbólicos a esta carpeta. En principio, esto hace que sea bastante fácil cambiar entre dos versiones instaladas. (*) Si has estado utilizando homebrew durante más tiempo y nunca has eliminado las versiones anteriores (utilizando, por ejemplo,brew cleanup
), lo más probable es 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 hacerlo. Comprueba conbrew info postgresql
(obrew switch postgresql
) si la versión anterior está instalada:Vemos que alguna versión anterior ya está instalada. Podemos activarla usando
brew switch
:Comprobemos de nuevo lo que está activado:
Observe que la estrella
*
se ha movido a la versión recién activada () Tenga en cuenta que elcambio de versión
sólo funciona mientras todas las dependencias de la versión anterior sigan existiendo. En algunos casos, puede ser necesario reconstruir la versión anterior. Por lo tanto, el uso debrew switch
es útil sobre todo cuando se quiere cambiar entre dos versiones no muy lejanas.* 2) Comprueba si la versión está disponible como un tapEspecialmente para los proyectos de software más grandes, es muy probable que haya una demanda suficientemente alta para varias versiones principales (potencialmente incompatibles con la API) de una determinada pieza de software. Desde marzo de 2012, Homebrew 0.9 ofrece un mecanismo para ello:
brew tap
y el repositorio homebrew versions. Ese repositorio de versiones puede incluir backports de versiones antiguas para varias fórmulas. (Mayormente sólo las grandes y famosas, pero por supuesto también tendrán varias fórmulas para postgresql).brew search postgresql
te mostrará dónde buscar:Podemos simplemente instalarlo escribiendo
Tenga en cuenta que esto ha tomado automáticamente el grifo
homebrew/versions
. (Comprobar conbrew tap
, eliminar conbrew untap homebrew/versions
.) Lo siguiente habría sido equivalente:Mientras las fórmulas de las versiones respaldadas se mantengan actualizadas, este enfoque es probablemente la mejor manera de tratar con software antiguo. 3) Probar alguna fórmula del pasado
Los siguientes enfoques se enumeran principalmente para completar. Ambos intentan resucitar alguna fórmula no muerta del repositorio de Brew. Debido a cambios en las dependencias, cambios en la API 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 git, uno puede instalar versiones específicas usando simples comandos git. Sin embargo, necesitamos encontrar una manera de llegar a un commit donde la versión antigua estaba disponible. a) tiempos históricos Entre agosto de 2011 y octubre de 2014, homebrew tenía un comando
brew versions
, que escupía todas las versiones disponibles con sus respectivos hashes SHA. A partir de octubre de 2014, hay que hacer unbrew tap homebrew/boneyard
antes de poder usarlo. Como el nombre del grifo sugiere, probablemente sólo deberías hacer esto como último recurso. Por ejemploComo puedes ver, se desaconseja su uso. Homebrew escupe todas las versiones que puede encontrar con su heurística interna y te muestra una forma de recuperar las fórmulas antiguas. Vamos a probarlo.
Ahora que la versión antigua de postgresql está instalada, podemos reinstalar la última fórmula para mantener nuestro repositorio limpio:
brew switch
es tu amigo para cambiar entre la antigua y la nueva. b) la prehistoria Para necesidades especiales, también podemos probar nuestra propia excavación a través del repo de homebrew.git log -S
busca todos los commits en los que se haya añadido o eliminado la cadena'8.4.4'
en el archivoLibrary/Taps/homebrew/homebrew-core/Formula/postgresql.rb
. Obtenemos dos commits como resultado.Obviamente,
fa992c6a82eebdc4cc36a0c0d2837f4c02f3f422
es el commit que nos interesa. Como este commit es bastante antiguo, intentaremos hacer un downgrade de la instalación completa de homebrew (de esta manera, la API de la fórmula está más o menos garantizada como válida):Puedes omitir el último comando para mantener la referencia en tu repositorio git. Una nota: Al comprobar el commit más antiguo, se rebaja temporalmente la instalación de homebrew. Por lo tanto, debes 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 muy difícil y luego puedes subirla a tu propio repositorio. Solía ser Homebrew-Versiones, pero ya está descontinuado. A.) Bono: Pinning
Si quieres mantener una determinada versión de, por ejemplo, postgresql, y evitar que se actualice cuando hagas el procedimiento natural
brew update; brew upgrade
, puedes pin una fórmula:Las fórmulas ancladas se encuentran en
/usr/local/Library/PinnedKegs/
y una vez que quieras introducir los últimos cambios y actualizaciones, puedes desanclarla de nuevo:He descubierto una solución alternativa mejor que las otras soluciones complejas.
Esto descargará e instalará PostgreSQL 8.4.8
Encontré esta solución empezando a seguir los pasos de búsqueda en el repo y un comentario en el repo .
Después de un poco de investigación encontró que alguien tiene una colección de fórmulas raras para elaborar.
Si estás buscando MySQL 5.1.x, prueba esto.
Actualizar en la línea 8 de Library/Formula/postgresql.rb a
Y MD5 en la línea 9 a
Guarde y salga.
Ahora, en esta etapa puede enfrentar el error
postgresql no pudo crear un segmento de memoria compartida
, para evitarlo actualice el/etc/sysctl.conf
de esta manera:Prueba
initdb /usr/local/var/postgres
de nuevo, y debería funcionar sin problemas.Para ejecutar postgresql al inicio
Espero que eso ayude :)