Utilice una versión específica del paquete por directorio con Homebrew en Mac

Utilice una versión específica del paquete por directorio con Homebrew en Mac

A menudo me encuentro cambiando a una versión específica de un paquete instalado concerveza caseraal cambiar de proyecto.

$ cd ~/Desktop/projects/project1
$ brew switch phantomjs 2.0.0
Cleaning /usr/local/Cellar/phantomjs/1.9.7_1
Cleaning /usr/local/Cellar/phantomjs/1.9.8
Cleaning /usr/local/Cellar/phantomjs/2.0.0
2 links created for /usr/local/Cellar/phantomjs/2.0.0

Y luego al cambiar de proyecto:

$ cd ~/Desktop/projects/project2
$ brew switch phantomjs 1.9.8
Cleaning /usr/local/Cellar/phantomjs/1.9.7_1
Cleaning /usr/local/Cellar/phantomjs/1.9.8
Cleaning /usr/local/Cellar/phantomjs/2.0.0
2 links created for /usr/local/Cellar/phantomjs/1.9.8

¿Es posible automatizar esto de alguna manera para poder forzar brewel cambio automático a una versión específica cuando esté dentro de un proyecto determinado?

Sería bueno si se pudiera crear un archivo llamado algo así como .homebrewdentro del directorio de destino y desde allí especificar los paquetes y versiones requeridos.

Respuesta1

Para responder directamente a su pregunta: eche un vistazo aondir. No lo he usado personalmente, pero parece encajar en su caso de uso.

ondir es un pequeño programa para automatizar tareas específicas de determinados directorios. Funciona ejecutando scripts en directorios cuando entras y sales de ellos.

Pero para reflexionar un momento...

Intercambiar versiones de paquetes al entrar/salir de directorios a través del shell es, bueno, arriesgado por una variedad de razones. (Para empezar, piense en dos sesiones de terminal, cada una en su propio directorio).

Lo que estás pidiendo (configuración homebrew por directorio) es efectivamente una máquina virtual o un contenedor, ya que va más allá de "virtualizar" un lenguaje (por ejemplo: Ruby a través derbenv, Python víavirtualenv`) y en su lugar es para todos los paquetes del sistema. Deberías considerar establecer unVagabundocuadro para que sus proyectos los aísle adecuadamente de su Mac y administre mejor sus dependencias.

De todos modos, volvamos a tu problema actual...

PhantomJS es una herramienta independiente que está útilmente disponible comobinario vinculado estáticamente. Podemos usar esto a nuestro favor. En lugar de intercambiar versiones de PhantomJS a través de brew switch, simplemente descargue cada versión vinculada estáticamente, coloque el binario en ~/bin, asígnele el nombre apropiado (p. ej phantomjs-1.9.8.) y ajuste sus scripts para llamar a la versión deseada. Si no puede ajustar los scripts, deberá idear otro esquema (enlaces simbólicos específicos del proyecto, etc.)

O, como se sugiere entu consulta en GitHub, también puede ajustar su PATH, ya sea a través de ondirun script envolvente alrededor de cualquier unidad phantomjs.

(Sí, para elsegunda vez en una nocheLe señalé a alguien una herramienta que no he usado personalmente).

información relacionada