Vagrant:vagrant up命令给出"必须指定一个框"错误

时间:2015-07-28 02:30:44

标签: laravel terminal vagrant virtualbox homestead

我在尝试运行" vagrant up"时遇到此错误终端命令:

  

本机的配置存在错误。请修正以下错误,然后重试:

     

*必须指定一个框。

在我的Homestead/.vagrant/machines/default/virtualbox文件夹中,那里没有文件,所以我假设这是指它必须指定一个方框时指的是什么,但是我不喜欢这样的文件。我知道如何包含一个盒子,因为这是我第一次使用vagrant,而且我已经在线搜索,没有决心。

任何人都有解决方案吗?

编辑(Vagrantfile):

require 'json'
require 'yaml'

VAGRANTFILE_API_VERSION = "2"
confDir = $confDir ||= File.expand_path("~/.homestead")

homesteadYamlPath = confDir + "/Homestead.yaml"
homesteadJsonPath = confDir + "/Homestead.json"
afterScriptPath = confDir + "/after.sh"
aliasesPath = confDir + "/aliases"

require File.expand_path(File.dirname(__FILE__) + '/scripts/homestead.rb')

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
    if File.exists? aliasesPath then
        config.vm.provision "file", source: aliasesPath, destination: "~/.bash_aliases"
    end

    if File.exists? homesteadYamlPath then
        Homestead.configure(config, YAML::load(File.read(homesteadYamlPath)))
    elsif File.exists? homesteadJsonPath then
        Homestead.configure(config, JSON.parse(File.read(homesteadJsonPath)))
    end

    if File.exists? afterScriptPath then
        config.vm.provision "shell", path: afterScriptPath
    end
end

3 个答案:

答案 0 :(得分:6)

在宅基地目录中,您必须运行命令bash init.sh

这将在您的主目录(Homestead.yaml)中生成after.sh文件(以及aliases~)。

如果您再次更改Homestead.yaml,则必须重新运行bash init.sh。它会要求覆盖,说是。

(另外,请确保folders: - map:的目录存在)

答案 1 :(得分:3)

通过修复homestead.yaml中的文件路径来解决此问题。当我在终端中进行安装时,在Hometead主文件夹之外创建了一个.homestead文件夹,这就是导致我出现问题的原因。但在将.homestead / homestead.yaml内部的路径更改为我的Homestead / homestead.yaml中的相同路径后,问题不再持续存在。

答案 2 :(得分:-2)

如果您使用的是宅基地套餐,请使用homestead up代替vagrant up。它已经知道所有文件的位置,并且很容易在VM上运行。