在 Mac 上使用 Homebrew 按目录使用特定版本的软件包

在 Mac 上使用 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

直接回答你的问题:看一下翁迪尔。我个人没有使用过它,但它似乎适合您的使用情况。

ondir 是一个小程序,用于自动执行特定于某些目录的任务。它的工作原理是,当您进入和离开目录时执行目录中的脚本。

不过,仔细思考一下……

由于各种原因,通过 shell 在进入/退出目录时交换软件包版本是有风险的。(首先,想象一下两个终端会话,每个会话都在自己的目录中。)

你所要求的(每个目录的自制配置)实际上是一个虚拟机或容器,因为它超越了“虚拟化”一种语言(例如:Ruby viarbenv,Python 通过virtualenv'),而是针对所有系统包。您应该考虑设置一个流浪汉为您的项目设置一个框,以便将它们与您的 Mac 正确隔离,并更好地管理您的依赖项。

无论如何,回到你手头的问题......

PhantomJS 是一个独立的工具,恰好可以作为静态链接二进制。我们可以利用这一点。无需通过 交换 PhantomJS 版本brew switch,只需下载每个静态链接版本,将二进制文件粘贴到 中~/bin,适当命名(例如phantomjs-1.9.8),然后调整脚本以调用所需版本。如果您无法调整脚本,则需要设计另一种方案(项目特定的符号链接等)。

或者,按照建议您在 GitHub 上的查询,您还可以调整您的PATH,无论是通过ondir还是围绕任何驱动器的包装脚本phantomjs

(是的,对于一夜之间第二次我向某人介绍了一种我个人从未使用过的工具。)

相关内容