Use uma versão específica do pacote por diretório com Homebrew no Mac

Use uma versão específica do pacote por diretório com Homebrew no Mac

Muitas vezes me pego mudando para uma versão específica de um pacote instalado comcerveja caseiraao mudar de projeto.

$ 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

E então, ao mudar de projeto:

$ 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

É de alguma forma possível automatizar isso para que eu possa forçar brewa mudança automática para uma versão especificada quando estiver dentro de um determinado projeto?

Seria bom se alguém pudesse criar um arquivo chamado algo como .homebrewdentro do diretório de destino e a partir daí especificar os pacotes e versões necessários.

Responder1

Para responder diretamente à sua pergunta: dê uma olhada emondir. Eu não o usei pessoalmente, mas parece adequado ao seu caso de uso.

ondir é um pequeno programa para automatizar tarefas específicas para determinados diretórios. Funciona executando scripts em diretórios quando você entra e sai deles.

Para ruminar por um momento, no entanto...

Trocar versões de pacotes na entrada/saída de diretórios por meio do shell é arriscado por vários motivos. (Para começar, pense em duas sessões de terminal, cada uma em seu próprio diretório.)

O que você está pedindo (configuração homebrew por diretório) é efetivamente uma máquina virtual ou contêiner, já que vai além de "virtualizar" uma linguagem (ex: Ruby viarbenv, Python viavirtualenv`) e, em vez disso, é para todos os pacotes do sistema. Você deve considerar a criação de umVagabundocaixa para seus projetos para isolá-los adequadamente do seu Mac e gerenciar melhor suas dependências.

De qualquer forma, voltando ao seu problema em questão ...

PhantomJS é uma ferramenta autônoma que está disponível como umbinário vinculado estaticamente. Podemos usar isso a nosso favor. Em vez de trocar as versões do PhantomJS por brew switch, basta baixar cada versão vinculada estaticamente, inserir o binário ~/bin, nomeá-lo apropriadamente (por exemplo phantomjs-1.9.8, ) e ajustar seus scripts para chamar a versão desejada. Se você não conseguir ajustar os scripts, precisará criar outro esquema (links simbólicos específicos do projeto, etc.)

Ou, como sugerido emsua consulta no GitHub, você também pode ajustar seu PATHscript por meio ondirde um script de agrupamento em torno de qualquer unidade phantomjs.

(Sim, para osegunda vez em uma noiteApontei para alguém uma ferramenta que não usei pessoalmente.)

informação relacionada