Mac OS X 中可能有两个版本的 Vagrant?

Mac OS X 中可能有两个版本的 Vagrant?

在我的公司中,我们使用的是 Vagrant 1.3,但我无法更新它,因为我们在开发环境中使用的 Vagrant 文件与该版本绑定,并且它们不再起作用。

我正在考虑将新版本的 Vagrant 安装在不同的文件夹中,但我不知道该怎么做以及是否可行。我需要使用 Laravel Homestead,它仅与 vagrant 1.6 及更高版本兼容...

有什么想法吗?谢谢

(我使用的是 Max OS X 10.10.1 Yosemite)

答案1

我也遇到了类似的问题。我需要 1.4.3,但无法更新到 1.7.4。经过多次试验,我想我找到了解决方案。它涉及一些丑陋的黑客行为,但它对我来说很管用。我写了一个要点来描述我是如何做到的:

https://gist.github.com/arielpontes/b2d783fde85e1b3237b8

让我知道它是否适用于您想要的版本:)

[ 更新 ]以下是要点说明的复制/粘贴内容:

1. 安装VirtualBox 4.3Vagrant 1.4.3

Vagrant 1.4.3 不适用于较新版本的 VirtualBox(>4.3)。在此实验中,我多次搞砸了所有安装,因此我重新安装所有内容(只需转到下载页面,下载 dmg 并正常运行 pkg 安装程序)。

2. 破解 Vagrant 1.4.3 安装

$ sudo mv /Applications/Vagrant /Applications/Vagrant\ 1.4.3
$ sudo ln -Fs /Applications/Vagrant\ 1.4.3/bin/vagrant /usr/bin/vagrant

*这是针对安装在的旧版 Vagrant 版本/Applications/Vagrant

3. 安装Vagrant 1.7.4

Vagrant 1.7.4 的组织方式与 1.4.3 不同,当首次运行需要应用程序数据的命令(例如vagrant box list)时,它将更新其文件结构,从而破坏 1.4.3 安装。为防止发生这种情况,请运行:

$ sudo mv ~/.vagrant.d ~/.vagrant143.d

*您可以在安装 1.7.4 后运行它,但请确保之前没有运行任何 vagrant 命令。

现在您可以安全地安装 Vagrant 1.7.4。完成后,您可以检查一切是否正常:

$ rehash
$ vagrant -v
Vagrant 1.7.4

*如果您仍使用 1.4.3,只需打开一个新 shell。

4. 破解 Vagrant 1.7.4 安装

$ sudo mv /opt/vagrant /opt/vagrant174
$ sudo ln -Fs /opt/vagrant174/bin/vagrant /usr/bin/vagrant

*这是针对安装在 中的新 Vagrant 版本/opt/vagrant

5.创建 shell 命令来切换 Vagrant

将这些行添加到您的 ~/.bash_profile(或 ~/.zshrc 或任何您使用的):

alias vagrant143='sudo ln -Fs /Applications/Vagrant\ 1.4.3/bin/vagrant /usr/bin/vagrant && mv ~/.vagrant.d ~/.vagrant174.d && mv ~/.vagrant143.d ~/.vagrant.d'
alias vagrant174='sudo ln -Fs /opt/vagrant174/bin/vagrant /usr/bin/vagrant && mv ~/.vagrant.d ~/.vagrant143.d && mv ~/.vagrant174.d ~/.vagrant.d'

就是这样!

现在您可以通过运行vagrant143或轻松地在版本之间切换vagrant174

$ vagrant143
$ vagrant -v
Vagrant 1.4.3
$ vagrant174
$ vagrant -v
Vagrant 1.7.4

请注意,您的 vagrant 盒子将被单独存储,因此如果您在使用某个版本的 Vagrant 时添加一个盒子,它将在其他版本中不可见:

$ vagrant143
$ vagrant box add trusty64
$ vagrant box list
trusty64 (virtualbox)
$ vagrant174
$ vagrant box list
There are no installed boxes! Use `vagrant box add` to add some.

这些都是一些丑陋的黑客,我无法保证新版本的 Vagrant 不会破坏它,但目前它对我来说还是有用的。

相关内容