web-dev-qa-db-ja.com

ボックス「laravel / Homestead」が見つかりませんでした

laravel/Homesteadボックスを here から手動でダウンロードしました。

私はボックスを正常に追加しました:

vagrant box add file:///path/to/the/laravel/Homestead.box --name 'laravel/Homestead'

しかし、vagrant upを実行すると、Box 'laravel/Homestead' could not be foundにボックスが表示されていても、vagrant box listと表示されます。

ダウンロードページには、vagrantfileを生成するvagrant init laravel/Homesteadを実行すると書かれていますが、laravel/Homesteadリポジトリ自体がvagrantfileを提供しています。

vagrant upで生成されたvagrantfileを使用してvagrant init laravel/Homesteadを実行できますが、laravel/Homesteadリポジトリのvagrantfile内に必須の構成がありません。

これは生成されるvagrantfileです

# -*- mode: Ruby -*-
# vi: set ft=Ruby :

# All Vagrant configuration is done below. The "2" in Vagrant.configure
# configures the configuration version (we support older styles for
# backwards compatibility). Please don't change it unless you know what
# you're doing.
Vagrant.configure(2) do |config|
  # The most common configuration options are documented and commented below.
  # For a complete reference, please see the online documentation at
  # https://docs.vagrantup.com.

  # Every Vagrant development environment requires a box. You can search for
  # boxes at https://atlas.hashicorp.com/search.
  config.vm.box = "laravel/Homestead"

  # Disable automatic box update checking. If you disable this, then
  # boxes will only be checked for updates when the user runs
  # `vagrant box outdated`. This is not recommended.
  # config.vm.box_check_update = false

  # Create a forwarded port mapping which allows access to a specific port
  # within the machine from a port on the Host machine. In the example below,
  # accessing "localhost:8080" will access port 80 on the guest machine.
  # config.vm.network "forwarded_port", guest: 80, Host: 8080

  # Create a private network, which allows Host-only access to the machine
  # using a specific IP.
  # config.vm.network "private_network", ip: "192.168.33.10"

  # Create a public network, which generally matched to bridged network.
  # Bridged networks make the machine appear as another physical device on
  # your network.
  # config.vm.network "public_network"

  # Share an additional folder to the guest VM. The first argument is
  # the path on the Host to the actual folder. The second argument is
  # the path on the guest to mount the folder. And the optional third
  # argument is a set of non-required options.
  # config.vm.synced_folder "../data", "/vagrant_data"

  # Provider-specific configuration so you can fine-tune various
  # backing providers for Vagrant. These expose provider-specific options.
  # Example for VirtualBox:
  #
  # config.vm.provider "virtualbox" do |vb|
  #   # Display the VirtualBox GUI when booting the machine
  #   vb.gui = true
  #
  #   # Customize the amount of memory on the VM:
  #   vb.memory = "1024"
  # end
  #
  # View the documentation for the provider you are using for more
  # information on available options.

  # Define a Vagrant Push strategy for pushing to Atlas. Other Push strategies
  # such as FTP and Heroku are also available. See the documentation at
  # https://docs.vagrantup.com/v2/Push/atlas.html for more information.
  # config.Push.define "atlas" do |Push|
  #   Push.app = "YOUR_ATLAS_USERNAME/YOUR_APPLICATION_NAME"
  # end

  # Enable provisioning with a Shell script. Additional provisioners such as
  # Puppet, Chef, Ansible, Salt, and Docker are also available. Please see the
  # documentation for more information about their specific syntax and use.
  # config.vm.provision "Shell", inline: <<-Shell
  #   Sudo apt-get update
  #   Sudo apt-get install -y Apache2
  # Shell
end

次の設定があります。

Vagrant.configure(2) do |config|  
    config.vm.box = "laravel/Homestead"
end

これをデフォルトのlaravel/Homesteadvagrantfileに追加しようとしましたが、機能しませんでした。

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

    ## HERE I added the setting ############################################
    config.vm.box = "laravel/Homestead"
    ########################################################################
end

私は何をすべきか?

16
MTVS

laravel/homstead project によって提供されるVagrantfileは、vagrant initによって生成される一般的なVagrantfileよりも高度です

Laravel/homsteadプロジェクトによって提供されるVagrantfileは、いくつかのRubyコードを使用して、Vagrant環境のセットアップを支援します。 Homestead Ruby code からわかることは、0.4.0以上のバージョンのボックスがあることを確認していることです。

config.vm.box_version = settings["version"] ||= ">= 0.4.0"

ボックスを手動で追加すると、ローカルマシンに存在することがわかります。

$ vagrant box list
laravel/Homestead               (virtualbox, 0)

ただし、プロバイダーの横の番号は0です。その番号はボックスバージョンです。ボックスが手動で追加されたため、ボックスのメタデータは使用できず、デフォルトでバージョン0を取得します。

ここでvagrant upを実行すると、0.4.0以上のボックスがあるかどうかがコードによってチェックされます。これがないため、Box 'laravel/Homestead' could not be foundを取得しています。次に、必要な最小バージョンでボックスをダウンロードしようとします。

この問題を回避するには、ダウンロードしたボックスファイルと同じディレクトリにローカルでmetadata.jsonファイルを作成します。例えば:

{
    "name": "laravel/Homestead",
    "versions": [{
        "version": "0.4.0",
        "providers": [{
            "name": "virtualbox",
            "url": "file:///path/to/Homestead.box"
        }]
    }]
}

次にvagrant box add metadata.jsonを実行します

これにより、バージョン付きのボックスがインストールされ、次の方法で確認できます。

$ vagrant box list
laravel/Homestead               (virtualbox, 0.4.0)

これで、ローカルボックスを使用してvagrant upを実行できるようになります。

28
jaxim

以下の方法で問題を解決しました。 Mac El-capitanでのみテストします。

vagrant box add laravel/Homestead homestead.box

次のように表示されます。

==> box: Box file was not detected as metadata. Adding it directly...
==> box: Adding box 'laravel/Homestead' (v0) for provider: 
    box: Unpacking necessary files from: file:///Users/lwinmaungmaung/Vagrant%20Boxes/Homestead/homestead.box
==> box: Successfully added box 'laravel/Homestead' (v0) for 'virtual box'!

そして、私は迷惑なファイルディレクトリに変更しました

cd ~/.vagrant.d/

次に、ファイルを一覧表示すると、ボックスが表示されました

cent   hashicorp-VAGRANTSLASH-precise64      laravel-VAGRANTSLASH-Homestead

laravel by cd laravel-VAGRANTSLASH-Homestead

およびlsと0を参照

mv 0 0.4.0のコマンド

vagrant box listでリストした場合

cent                (virtualbox, 0)
hashicorp/precise64 (virtualbox, 0)
laravel/Homestead   (virtualbox, 0.4.0)

次に、Vagrant Homesteadファイルvi ~/Homestead/Vagrantfileを編集して、以下を追加します。

config.vm.box = "laravel/Homestead"
config.vm.box_url = "https://atlas.hashicorp.com/laravel/Homestead"
config.vm.box_version = "0.4.0"
config.vm.box_check_update = false

そしてvagrant up

Metadata.jsonで直接追加できない人のために動作することを願っています。ありがとう。

3

誰かが同じ問題を抱えており、winを使用している場合は、msビジュアルライブラリに問題がないかどうかを確認し、メインはcurlです。

https://www.Microsoft.com/en-us/download/confirmation.aspx?id=5555

2
den_ban

Vagrantにすべてを任せることができるのに、なぜボックスを手動でダウンロードするのですか?

ホームステッドのドキュメントで述べたように:
vagrant box add laravel/Homesteadは、ボックスを追加してダウンロードします。

「このコマンドが失敗した場合、完全なURLを必要とする古いバージョンのVagrantがある可能性があります:」
vagrant box add laravel/Homestead https://atlas.hashicorp.com/laravel/boxes/Homestead

次のように手動でボックスを追加できます:
vagrant box add laravel/Homestead path/to/your/box/file.box

Vagrant用に手動でダウンロードした.boxをインストールする方法

1
Rai

私は受け入れられた答えに従いましたが、それでも仮想ボックス「ボックス」をダウンロードしようとしていました。 scripts/Homestead.rbの以下の設定を変更する必要がありました

#config.vm.box_version = settings["version"] ||= ">= 1.0.0"                 
config.vm.box_url = "file:///home/divick/Homestead/virtualbox.box"          

注:次のメッセージで問題があったため、バージョン行をコメントアウトしました。

Bringing machine 'Homestead-7' up with 'virtualbox' provider...
==> Homestead-7: Box 'laravel/Homestead' could not be found. Attempting to find and install...
    Homestead-7: Box Provider: virtualbox
    Homestead-7: Box Version: >= 1.0.0
==> Homestead-7: Box file was not detected as metadata. Adding it directly...
You specified a box version constraint with a direct box file
path. Box version constraints only work with boxes from Vagrant
Cloud or a custom box Host. Please remove the version constraint
and try again.
0
Divick

この問題に直面している人は、必ず vagrantをアップグレード し、laravel/Homesteadを追加すると問題なくインストールされるはずです。

0
Abdullah R.