在主文件夹外面的流浪汉

我遇到了这样的问题: 我的主目录实际上位于一个远程服务器上,并且带有 ~/。D 坐在那个服务器上,流浪者的性能大大降低(文件服务器备份大小增加)。

那么有没有办法至少将 ~/vasrant.d/box 移出 home 目录呢?

干杯。

60315 次浏览

By default Vagrant uses ~/.vagrant.d. Fortunately, vagrant provides an environment variable called VAGRANT_HOME by which you can set vagrant home.

Just do the following to change the vagrant home (this only works in the current session)

export VAGRANT_HOME=/path/to/vagrant

To make it permanent, add this to your ~/.bash_profile (for login shell).

Update: VAGRANT_HOME has been added to the documentation - Environmental Variables

VAGRANT_HOME can be set to change the directory where Vagrant stores global state. By default, this is set to ~/.vagrant.d. The Vagrant home directory is where things such as boxes are stored, so it can actually become quite large on disk.

On Windows change line 17 of environment.rb located at:
vagrant\embedded\gems\gems\vagrant-1.x.x.dev\lib\vagrant\environment.rb

VAGRANT_HOME does not work well in my Windows 8.1. It worked for me when I changed the file

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

on line 117 to

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

like Steve H said and it works fine.

an other place (the root place where it read ENV variables) is in shared_helpers.rb, line 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

Anyway, I think the best way is to use the environment variable VAGRANT_HOME, in case of vagrant version upgrade.

You can use this function like:

disk_path = self.user_data_path().to_s

It might be useful to permanently set this on a Windows box by executing

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

For Windows users, set the environment variable VAGRANT_HOME to the new location. You might need to restart your PC for it to take effect.

Set of VAGRANT_DOTFILE_PATH environmental variable helped me on Windows machine. VAGRANT_HOME didn't work out.

It works for me on Linux creating a simbolic link from a folder on my secundary hard drive to ~/.vagrant.d/boxes/.