1

Я часто переключаюсь на конкретную версию пакета, установленного вместе с homebrew, при переключении проектов.

$ 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

А потом при смене проекта:

$ 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

Можно ли как-то автоматизировать это так, чтобы я мог заставить brew автоматически переключаться на указанную версию внутри определенного проекта?

Было бы хорошо, если бы можно было создать файл с именем что-то вроде .homebrew внутри целевого каталога и оттуда указать необходимые пакеты и версии.

1 ответ1

1

Чтобы прямо ответить на ваш вопрос: взгляните на ondir. Я лично не использовал его, но он подходит для вашего случая использования.

ondir - это небольшая программа для автоматизации задач, характерных для определенных каталогов. Он работает, выполняя сценарии в каталогах, когда вы входите и выходите из них.

Чтобы размышлять на мгновение, хотя ...

Обмен версиями пакетов при входе / выходе dirs через оболочку, по ряду причин, рискован. (Для начала подумайте о двух терминальных сессиях, каждая в своем собственном каталоге.)

То, о чем вы просите (конфигурация per-dir homebrew), фактически представляет собой виртуальную машину или контейнер, поскольку она выходит за рамки "виртуализации" языка (например, Ruby через rbenv, Python через virtualenv `) и применяется для всех системных пакетов. Вам следует подумать о настройке Vagrant box для своих проектов, чтобы должным образом изолировать их от вашего Mac и лучше управлять своими зависимостями.

Во всяком случае, вернемся к вашей проблеме под рукой ...

PhantomJS - это автономный инструмент, доступный в виде статически связанного двоичного файла. Мы можем использовать это в наших интересах. Вместо того, чтобы менять версии PhantomJS с помощью brew switch , просто загрузите каждую статически связанную версию, вставьте двоичный файл в ~/bin , назовите его соответствующим образом (например, phantomjs-1.9.8) и настройте сценарии для вызова нужной версии. Если вы не можете настроить сценарии, вам нужно разработать другую схему (символические ссылки для проекта и т.д.)

Или, как предложено в вашем запросе на GitHub, вы также можете настроить PATH либо с помощью ondir , либо с помощью сценария обтекания того, что движет phantomjs .

(Да, второй раз за одну ночь я указал кому-то на инструмент, которым я лично не пользовался.)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .