webentwicklung-frage-antwort-db.com.de

Box 'Laravel/Homestead' konnte nicht gefunden werden

Ich habe die laravel/Homestead-Box manuell von hier heruntergeladen.

Ich füge die Box erfolgreich hinzu:

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

wenn ich jedoch vagrant up starte, heißt es: Box 'laravel/Homestead' could not be found, obwohl vagrant box list die Box anzeigt.

Auf der Downloadseite wird angegeben, dass vagrant init laravel/Homestead ausgeführt wird, der ein vagrantfile generiert, das laravel/Homestead-Repository selbst jedoch ein vagrantfile bereitstellt.

Ich kann vagrant up mit dem vagrantfile, das mit vagrant init laravel/Homestead generiert wird, aber es fehlen die wesentlichen Konfigurationen im vagrantfile des laravel/Homestead-Repositorys.

Dies ist die vagrantfile, die generiert wird 

# -*- 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

es hat diese Einstellung:

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

Ich habe versucht, dies zu dem Standard-vagrantfile von laravel/Homestead hinzuzufügen, aber es hat nicht funktioniert.

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

Was soll ich machen?

15
MTVS

Die Vagrantfile des laravel/homstead-Projekts ist weiter fortgeschritten als eine generische Vagrantfile, die von vagrant init generiert wird.

Die Vagrantfile des Projekts laravel/homstead verwendet Ruby-Code, um die Vagrant-Umgebung einzurichten. Was wir aus dem Homestead Ruby-Code sehen können, ist, dass geprüft wird, ob Sie eine Box mit einer Version größer oder gleich 0.4.0 haben:

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

Wenn Sie das Feld manuell hinzugefügt haben, werden Sie feststellen, dass es auf Ihrem lokalen Computer vorhanden ist:

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

Beachten Sie jedoch, dass die Nummer neben dem Anbieter 0 ist. Diese Nummer ist die Box-Version. Da die Box manuell hinzugefügt wurde, waren die Box-Metadaten nicht verfügbar. Standardmäßig erhalten Sie eine Version von 0.

Wenn Sie jetzt einen vagrant up ausführen, überprüft der Code, ob Sie eine Box> = 0.4.0 haben, die Sie nicht haben. Deshalb erhalten Sie Box 'laravel/Homestead' could not be found. Es wird dann versucht, die Box mit der erforderlichen Mindestversion herunterzuladen.

Um dies zu umgehen, können Sie eine Datei metadata.json lokal in demselben Verzeichnis wie die heruntergeladene Box-Datei erstellen. z.B:

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

Dann vagrant box add metadata.json ausführen

Dadurch wird die Box mit einer Version installiert und kann bestätigt werden durch:

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

Sie können jetzt vagrant up mit Ihrer lokalen Box ausführen.

26
jaxim

Ich habe das Problem durch Folgen gelöst. Ich teste nur auf Mac El-Capitan.

vagrant box add laravel/Homestead homestead.box

es zeigt folgendes:

==> 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'!

Und dann habe ich in das Verzeichnis vagrant file gewechselt

cd ~/.vagrant.d/

Dann liste Dateien auf und ich habe Meine Boxen gesehen

cent   hashicorp-VAGRANTSLASH-precise64      laravel-VAGRANTSLASH-Homestead

und wähle Laravel nach cd laravel-VAGRANTSLASH-Homestead

und ls und siehe 0

Ich befehle durch mv 0 0.4.0

Wenn ich nach vagrant box list liste

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

Dann bearbeite ich die Vagrant Homestead-Datei vi ~/Homestead/Vagrantfile Und füge Folgendes hinzu:

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

und dann vagrant up

Ich hoffe, dass es für einige funktioniert, die nicht direkt von metadata.json hinzugefügt werden können. Vielen Dank.

3

wenn jemand das gleiche Problem hat und win verwendet, prüfen Sie, ob die visuellen Bibliotheken von ms in Ordnung sind.

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

2
den_ban

Warum sollten Sie die Box manuell herunterladen, wenn Sie das alles für Sie tun können?

Wie in der Homestead-Dokumentation gesagt:
vagrant box add laravel/Homestead wird die Box für Sie hinzufügen und herunterladen.

"Wenn dieser Befehl fehlschlägt, verfügen Sie möglicherweise über eine alte Version von Vagrant, für die die vollständige URL erforderlich ist:"
vagrant box add laravel/Homestead https://atlas.hashicorp.com/laravel/boxes/Homestead

Sie können eine Box manuell hinzufügen:
vagrant box add laravel/Homestead path/to/your/box/file.box

So installieren Sie die manuell heruntergeladene .box für Vagrant

1
Rai

Ich folgte der akzeptierten Antwort, versuchte jedoch immer noch die Virtualbox "Box" herunterzuladen. Ich musste die folgenden Einstellungen in scripts/Homestead.rb ändern 

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

Hinweis: Ich habe die Versionszeile auskommentiert, weil sie sich mit der folgenden Meldung beschwert hat:

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

Für alle, die mit diesem Problem konfrontiert sind, stellen Sie sicher, dass Sie Ihren Vagrant aufrüsten und das Hinzufügen von laravel/Homestead ohne Probleme installiert wird.

0
Abdullah R.