2014-10-18 5 views
10

Ich habe Homestead Box thrid Zeit in diesem Monat mit Landstreicher Feld hinzufügen Laravel/Gehöft heruntergeladen. Ich habe derzeit keinen Zugriff auf schnelles Internet, also ist es ziemlich nervig, es jedes Mal herunterzuladen. Gibt es eine Möglichkeit, das heruntergeladene Paket erneut zu verwenden und das lokale Paket in vagrant einzuschließen, ist es wichtig, ob Projekte oder synchronisierte Standorte beibehalten werden oder nicht.So kopieren Sie Vagabund Box, um wieder zu verwenden

Ich bin auf Ubuntu-Maschine, wenn das zählt.

Update: Ich brauche die heruntergeladene Homestead-Box, so dass, wenn meine Maschine ausfällt oder ich es woanders mit keiner/langsamen Internetverbindung installieren muss, kann ich es lokal tun.

+1

Normalerweise, wenn Sie, wenn Sie 'Box add' verwenden kann einfach 'vagrant init ' verwenden, um eine neue Instanz mit derselben Basisbox zu erstellen. Warum tust du das nicht? – benbot

+1

@thecodethinker Vielleicht könnte ich es nicht erklären, ich brauche die heruntergeladene Homestead-Box, so dass, wenn meine Maschine ausfällt oder ich sie woanders mit keiner/langsamen Internetverbindung installieren muss, kann ich es lokal machen. –

Antwort

11

Ein besserer Weg, es zu tun ist:

  1. in das Verzeichnis Gehen Sie einfach, wo Sie die Vagrant init
  2. eine vagrant package --output mynew.box
Sie getan haben

Sie die Box in die mynew verpackt erhalten .box-Datei, die Sie sogar kopieren und mit Ihren anderen Entwicklern teilen können. Dies ist meiner Meinung nach ziemlich nützlich, wenn Sie eine langsamere Internetgeschwindigkeit haben.

13

Oh, das ist ziemlich einfach.

Um Ihre aktuell installierte Box wieder in eine .box-Datei zu packen (und dabei auf Ihrem System zu installieren), verwenden Sie einfach vagrant box list, um den Boxnamen, den Provider und die Version zu finden.

Dann verwenden Sie vagrant box repackage <name> <provider> <version> und es wird es in eine Datei namens package.box packen.

Hoffen Sie das geholfen!

2

Nur zur Ergänzung @thecodethinker Antwort.

Wenn ich den vorgeschlagenen Befehl angewendet:

vagrant box list

und

vagrant box repackage <name> <provider> <version>

passierte folgendes:

Bringing machine 'default' up with 'virtualbox' provider... 
==> default: Box 'laravel/homestead' could not be found. Attempting to find and install... 
default: Box Provider: virtualbox 
default: Box Version: >= 0.4.0 
==> default: Loading metadata for box 'laravel/homestead' 
default: URL: https://atlas.hashicorp.com/laravel/homestead 
==> default: Adding box 'laravel/homestead' (v0.5.0) for provider: virtualbox 
default: Downloading: https://atlas.hashicorp.com/laravel/boxes/homestead/versions/0.5.0/providers/virtualbox.box 

Wie Sie sehen können, ist es nicht erkennen die package.box und versucht, aus dem Internet herunterzuladen. Wenn Sie genau hinsehen, können Sie sehen, dass Sie nach box version >= 0.4.0 suchen.

Dies ist das Ergebnis von vagrant box list:

laravel/homestead (virtualbox, 0)

Da die Box manuell hinzugefügt wurde. Die Box-Metadaten waren nicht verfügbar und standardmäßig wird die Version auf 0 gesetzt.

das Problem zu beheben, ein erstellen metadata.json:

{ 
"name": "laravel/homestead", 
    "versions": [{ 
     "version": "0.4.0", 
     "providers": [{ 
      "name": "virtualbox", 
      "url": "file://package.box" 
     }] 
    }] 
} 

Weil wir eine richtige Metadaten jetzt haben, können Sie tun:

vagrant box add metadata.json

Verwandte Themen