
나는 종종 다음과 같이 설치된 패키지의 특정 버전으로 전환하는 것을 발견합니다.집에서 만든 맥주프로젝트를 전환할 때.
$ 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
귀하의 질문에 직접 답변하려면 다음을 살펴보십시오.온디르. 개인적으로 사용해본 적은 없지만 귀하의 사용 사례에 적합한 것 같습니다.
ondir은 특정 디렉토리와 관련된 작업을 자동화하는 작은 프로그램입니다. 디렉토리에 들어가고 나갈 때 디렉토리에서 스크립트를 실행하여 작동합니다.
잠시 반추하자면...
셸을 통해 디렉터리를 입력/종료할 때 패키지 버전을 교체하는 것은 여러 가지 이유로 위험합니다. (우선, 각각 자신의 디렉터리에 있는 두 개의 터미널 세션을 생각해 보세요.)
당신이 요구하는 것(디렉터리별 홈브류 구성)은 언어를 "가상화"하는 것 이상이므로 사실상 가상 머신이나 컨테이너입니다(예: Ruby viarbenv
, Python을 통해virtualenv
`) 대신 모든 시스템 패키지에 사용됩니다. 다음을 설정하는 것을 고려해야 합니다.방랑자프로젝트를 Mac에서 적절하게 격리하고 종속성을 더 잘 관리할 수 있는 상자입니다.
어쨌든, 당면한 문제로 돌아가서 ...
PhantomJS는 유용한 도구로 사용할 수 있는 독립형 도구입니다.정적으로 연결된 바이너리. 우리는 이것을 유리하게 활용할 수 있습니다. 를 통해 PhantomJS 버전을 교체하는 대신 brew switch
정적으로 링크된 각 버전을 다운로드하고 바이너리를 에 삽입한 다음 ~/bin
적절하게 이름을 지정하고(예: phantomjs-1.9.8
) 원하는 버전을 호출하도록 스크립트를 조정하세요. 스크립트를 조정할 수 없는 경우 다른 구성표(프로젝트별 심볼릭 링크 등)를 고안해야 합니다.
또는에서 제안한대로GitHub에 대한 귀하의 쿼리, 드라이브에 상관없이 래핑 스크립트를 PATH
통해 를 조정할 수도 있습니다 .ondir
phantomjs
(예,어느 날 밤에 두 번째개인적으로 사용하지 않은 도구를 누군가에게 지적했습니다.)