2013-02-06 64 views
65

我的问题是,我的主目录实际上位于远程服务器上,并且在〜/ .vagrant.d坐在该服务器上,vagrant的性能大大降低服务器备份大小增加)。vagrant.d在主文件夹之外

那么有什么办法可以将至少〜/ vagrant.d/box移出主目录吗?

干杯。

回答

96

默认情况下,Vagrant使用~/.vagrant.d。幸运的是,流浪者提供了一个称为VAGRANT_HOME的环境变量,您可以通过该变量设置流浪家。

只要做到以下改变流浪汉的家(在当前会话这只作品)

export VAGRANT_HOME=/path/to/vagrant

要使其永久,添加到您的~/.bash_profile(用于登录shell)。

更新VAGRANT_HOME已添加到文档 - Environmental Variables

VAGRANT_HOME可以设置来改变目录,流浪店全局状态。默认情况下,它被设置为~/.vagrant.d。 Vagrant主目录是存储盒子等东西的地方,所以它实际上可以在磁盘上变得非常大。

+6

永久设置这在Windows中有用属性“machinefolder”在VirtualBox中必须通过“VBoxManage setproperty machinefolder ”__ 感谢提示 – pagid

+0

感谢这篇文章! – Robert

+0

我的个人发现:当使环境变量永久化(在'〜/ .bash_profile'中,或者在'〜/ .zshrc'中使用ZSH等等)时,确保你也编写'export'。检查它是否在命令行中用'env'设置。将virtualbox用作提供程序时,GUI中还有一个默认路径设置。 – Urs

7

在Windows上变线位于environment.rb中的17:
流浪汉\嵌入式\宝石\ \宝石无业游民,1.xxdev \ LIB \流浪汉\ environment.rb中

+3

不知道为什么我被拒绝了。这与问题有关 - 它没有被标记为linux,可以帮助像我这样的人。 – Storsey

+12

乱七八糟的ruby文件并不是一个好建议,VAGRANT_HOME环境变量在Windows上也能正常工作。 – pagid

+0

没有意识到env变量在Win上可用。排序出来,谢谢! – Storsey

13

VAGRANT_HOME不起作用以及我的Windows 8.1。它的工作对我来说,当我改变了文件

d:\ HashiCorp \流浪\嵌入式\宝石\ \宝石无业游民-1.5.3 \ LIB \流浪汉\ environment.rb中

上线117到

@home_path = Util::Platform.fs_real_path("D:/vagrant/home/") 

像史蒂夫H说,它工作正常。

+2

如果您使用Windows本地路径记得要转义反斜杠(这让我感到困惑)。即“D:\\ vagrant \\ home” – Guerrilla

2

的其他地方(在那里读ENV变量根的地方)在shared_helpers.rb,行71(流浪者v 1.6.5):

# This returns the path to the ~/.vagrant.d folder where Vagrant's 
    # per-user state is stored. 
    # 
    # @return [Pathname] 
    def self.user_data_path 
    # Use user spcified env var if available 
    path = ENV["VAGRANT_HOME"] 

    # On Windows, we default to the USERPROFILE directory if it 
    # is available. This is more compatible with Cygwin and sharing 
    # the home directory across shells. 
    if !path && ENV["USERPROFILE"] 
     path = "#{ENV["USERPROFILE"]}/.vagrant.d" 
    end 

    # Fallback to the default 
    path ||= "~/.vagrant.d" 

    Pathname.new(path).expand_path 
end 

无论如何,我认为最好的办法是使用环境变量VAGRANT_HOME,以防流浪版本升级。

您可以使用这样的功能:

disk_path = self.user_data_path().to_s 
+0

这是我的首选解决方案。它在vagrant文​​件中工作为'Vagrant :: user_data_path()。to_s'。 –

9

其实我发现,VAGRANT_HOME必须设置,而且它可能是通过执行

setx VAGRANT_HOME "/d/.vagrant.d/" 
+1

您必须从setx应用程序所在的路径运行它。最常见的路径是:C:\ Windows \ System32 – versedi

相关问题