Vagrant创建了大量垃圾配置文件和目录

时间:2015-09-02 12:20:32

标签: vagrant

我正在使用Vagrant和Docker作为提供商。

每当我使用任何命令启动vagrant时,该目录将填充四个文件,前缀为“vagrant”,例如'vagrant20150902-10813-1p2j0fh'和一个前缀为'd'的目录,例如: 'd20150902-10813-14u60qc'。

这些都没有被自动删除,所以在几次重启后,我的pwd变得混乱了一组文件和目录,内容相同:

cluttered dir

cluttered dir 2

有没有人遇到过这样的麻烦?也许同步文件夹有问题?

文件内容

流浪者%日期% - %id% - %rand1%(例如'vagrant20150902-12033-1j2np7i')和流浪者%日期% - %id% - %rand2%(例如'vagrant20150902-12033-v7vbh4')是空的。

vagrant%date% - %id% - %rand2%2 (例如'vagrant20150902-12033-v7vbh42')看起来像一个Gemfile:

source "https://rubygems.org"
source "http://gems.hashicorp.com"
gem "vagrant", "= 1.7.2"
group :plugins do
gem "vagrant-share", nil, {}
end

vagrant%date% - %id% - %rand2%2.lock (例如'vagrant20150902-12033-v7vbh42.lock')看起来像Gemfile.lock:

GEM
  remote: https://rubygems.org/
  remote: http://gems.hashicorp.com/
  specs:
    akami (1.2.2)
      gyoku (>= 0.4.0)
      nokogiri
    builder (3.2.2)
    celluloid (0.16.0)
      timers (~> 4.0.0)
    childprocess (0.5.5)
      ffi (~> 1.0, >= 1.0.11)
    erubis (2.7.0)
    ffi (1.9.6)
    gssapi (1.0.3)
      ffi (>= 1.0.1)
   ...

PLATFORMS
  ruby

DEPENDENCIES
  vagrant (= 1.7.2)
  vagrant-share

目录 d%date% - %id% - %rand3%(例如'd20150902-12033-1gkuid5')包含单个相同的文件 config

BUNDLE_PATH: "/home/username/.vagrant.d/gems"

编辑:既没有项目Gemfile,也没有Gemfile.lock包含gem'vagrant',我已经从.deb包中安装了它。 Vagrant版本是1.7.4

更新

这看起来很奇怪。我将问题追溯到调用Vagrant::Bundle#deinit的{​​{3}}:

at_exit(&Vagrant::Bundler.instance.method(:deinit))

vagrant bin该方法在源代码中的显示方式:

def deinit
   File.unlink(ENV["BUNDLE_APP_CONFIG"]) rescue nil
   File.unlink(ENV["BUNDLE_CONFIG"]) rescue nil
   File.unlink(ENV["GEMFILE"]) rescue nil
end

尝试取消链接ENV["BUNDLE_APP_CONFIG"],这是一个目录,导致错误随后被静音。此外,ENV["GEMFILE"]未定义(ENV["BUNDLE_GEMFILE"]),因此此行也会导致抑制错误。

现在我必须覆盖流浪汉中的Vagrant::Bundle#deinit

Vagrant::Bundler.class_eval do
  def deinit
    file1 = ENV["BUNDLE_CONFIG"][0..-2]
    file2 = ENV["BUNDLE_GEMFILE"][0..-2]
    gemfile_lock = "#{ENV["BUNDLE_GEMFILE"]}.lock"
    FileUtils.rm_rf(ENV["BUNDLE_APP_CONFIG"])
    File.unlink(ENV["BUNDLE_CONFIG"], ENV["BUNDLE_GEMFILE"], file1, file2, gemfile_lock)
  end
end

# Schedule the cleanup of things
at_exit(&Vagrant::Bundler.instance.method(:deinit))

必须有一种更清洁的方法来做到这一点,太糟糕了,我还没有找到它。

Upd2 Here's导致这些更改的问题,以及Here's提交。也许我错过了一些旗帜或env变量?

Upd3 :在here's

提交了一个问题

0 个答案:

没有答案