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

1

Muitas vezes me vejo alternando para uma versão específica de um pacote instalado com homebrew ao alternar projetos.

$ 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 quando 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 o brew a mudar automaticamente para uma versão específica quando estiver dentro de um determinado projeto?

Seria legal se alguém pudesse criar um arquivo chamado algo como .homebrew dentro do diretório de destino e de lá especificar os pacotes e versões necessários.

    
por karlingen 06.05.2015 / 08:22

1 resposta

1

Para responder diretamente à sua pergunta: dê uma olhada em ondir . Eu não usei isso pessoalmente, mas parece se encaixar no seu caso de uso.

ondir is a small program to automate tasks specific to certain directories. It works by executing scripts in directories when you enter and leave them.

Para ruminar por um momento, embora ...

Trocar as versões do pacote ao entrar / sair de diretórios através do shell é, bem, arriscado por várias razões. (Para começar, pense em duas sessões de terminal, cada uma em seu próprio diretório.)

O que você está pedindo (por hom-dir homebrew config) é efetivamente uma máquina virtual ou container, já que vai além de "virtualizar" uma linguagem (ex: Ruby via rbenv , o Python via virtualenv ') e, em vez disso, é para todos os pacotes do sistema. Você deve considerar a criação de uma caixa Vagrant para que seus projetos os isolem adequadamente do seu Mac e gerenciem melhor suas dependências.

De qualquer forma, voltemos ao seu problema ...

O PhantomJS é uma ferramenta autônoma que, por acaso, está disponível como um binário vinculado estaticamente . Podemos usar isso para nossa vantagem. Em vez de trocar as versões do PhantomJS via brew switch , basta fazer o download de cada versão vinculada estaticamente, colocar o binário em ~/bin , nomeá-lo adequadamente (por exemplo, phantomjs-1.9.8 ) e ajustar seus scripts para chamar a versão desejada. Se você não puder ajustar os scripts, precisará criar outro esquema (links simbólicos específicos do projeto, etc.)

Ou, como sugerido na sua consulta no GitHub , você também pode ajustar seu PATH , seja por meio de ondir ou um script de contorno em torno de qualquer unidade phantomjs .

(Sim, para a segunda vez em uma noite , apontei alguém para uma ferramenta que não usei pessoalmente.)

    
por 20.05.2015 / 06:46