主文件夹外部的vagrant.d


80

我的问题是我的主目录实际上位于远程服务器上,而〜/ .vagrant.d位于该服务器上,导致vagrant的性能大幅下降(并且文件服务器备份大小增加了)。

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

干杯。

Answers:


117

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

只需执行以下操作即可更改无业游民的家庭(这仅在当前会话中有效)

export VAGRANT_HOME=/path/to/vagrant

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

更新VAGRANT_HOME已添加到文档中-环境变量

VAGRANT_HOME可以设置为更改Vagrant存储全局状态的目录。默认情况下,此设置为~/.vagrant.d。Vagrant主目录是存储盒子等内容的目录,因此它实际上在磁盘上可能会变得很大。


8
实际上,我发现必须设置VAGRANT_HOME,并且必须通过“ VBoxManage setproperty machinefolder <path>”来设置VirtualBox中的属性“ machinefolder” __感谢您的提示
pagid

1
我的个人发现:在使环境变量永久化时(在中~/.bash_profile或如果在中使用ZSH~/.zshrc等),请确保也进行编写export。检查是否env在命令行上设置了。当使用virtualbox作为提供程序时,在GUI中还有一个默认路径的设置。
Urs

2
对于Windows,请使用环境变量对话框,并使用实例值d:\ vagrant添加VAGRANT_HOME。至少与2.2.4版完美兼容。记住要关闭现有的PowerShell控制台并打开一个新的控制台来加载新的环境变量。
EivindGussiåsLøkseth,19年

在WSL2上-我遇到了一个问题,我删除了由vagrant创建的虚拟框,突然它不再能够组成一个vagrant-我设法通过将〜/ .vagrant.d文件夹复制到我的Windows c驱动器中来修复它- / mnt / c /之后,我可以再次变得
无所事事

16

VAGRANT_HOME在Windows 8.1中无法正常运行。当我更改文件时它对我有用

D:\ HashiCorp \ Vagrant \ embedded \ gems \ gems \ vagrant-1.5.3 \ lib \ vagrant \ environment.rb

在第117行到

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

就像史蒂夫·H(Steve H)所说的那样,效果很好。


4
如果您使用Windows本地路径,请记住不要使用反斜杠(这使我陷入困境)。即“ D:\\ vagrant \\ home”
游击队2015年

2
现在至少可以在2.2.4版中正常运行。我在环境变量对话框中添加了VAGRANT_HOME并将其值设置为d:\ vagrant,在关闭并打开一个新的PowerShell控制台后,它的工作效果非常好。
EivindGussiåsLøkseth,19年

是的,它有效。无需转义反斜杠。简单地说VAGRANT_HOME=d:\my\alternative\path。我猜您在创建环境变量之后没有重新加载环境(例如,通过关闭并重新启动控制台)。
David FerenczyRogožan,19年

切勿完全按照自己的意愿进行操作(修改了所使用软件中的文件)。每次重新安装Vagrant或将其升级到较新版本时,都必须重新应用所做的修改。
David FerenczyRogožan,19年

12

通过执行以下命令将其永久设置在Windows框上可能很有用

setx VAGRANT_HOME "/d/.vagrant.d/"

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

setx可以执行而无需移动到C:\Windows\System32,就像C:\Windows\System32通常在上一样%path%
lucid_dreamer '18年

5

在Windows上,更改位于以下位置的environment.rb的第17行:
vagrant \ embedded \ gems \ gems \ vagrant-1.xxdev \ lib \ vagrant \ environment.rb


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

14
在ruby文件中乱七八糟根本不是一个好建议,并且VAGRANT_HOME环境变量在Windows上也可以正常工作。
pagid 2013年

没意识到env变量在Win上可用。
Storsey 2014年

1
这是有效的回应。并非每个人都希望(或知道)重新启动Windows以使新的环境变量生效。如果有人要更改核心文件,可能是临时的,也可能是绝望的设置。 support.microsoft.com/en-us/kb/821761
2016年

为什么需要重新启动Windows?绝对不需要。我现在刚刚创建了一个环境变量,它工作正常。没有重启。您可能只需要在控制台中重新加载环境,或者仅在创建环境变量之后启动它即可。不要修改某些软件或软件包中的文件。
David FerenczyRogožan,19年

2

另一个地方(读取ENV变量的根目录)位于shared_helpers.rb,第71行(vagrant 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

这是我的首选解决方案。它可以在vagrant文​​件中用作Vagrant::user_data_path().to_s
Tomas Creemers

0

对于Windows用户,请将环境变量VAGRANT_HOME设置为新位置。您可能需要重新启动PC才能生效。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.