Как скопировать бродячий бокс для повторного использования

Я загрузил Homestead box thrid time в этом месяце, используя бродячий бокс, добавив laravel/homestead. В настоящее время у меня нет доступа к быстрому интернету, поэтому его очень раздражает, чтобы скачивать его каждый раз. Есть ли способ снова использовать загруженный пакет и включить локальный пакет в бродяжничестве, он имеет значение, если проекты или синхронизированные местоположения сохранены или нет.

Я на машине Ubuntu, если это имеет значение.

Обновление: мне нужен загруженный ящик Homestead, чтобы, если моя машина опустилась, или мне нужно установить ее где-то еще без подключения к интернету, я могу сделать это локально.

Ответ 1

Лучший способ сделать это:

  • Просто перейдите в каталог, в котором вы выполнили Vagrant init
  • Сделайте vagrant package --output mynew.box

Вы получите коробку, упакованную в файл mynew.box, который вы даже можете скопировать и поделиться с другими разработчиками. Это очень полезно, на мой взгляд, где у вас медленная скорость интернета.

Ответ 2

О, это очень легко.

Чтобы упаковать установленный вами ящик обратно в файл .box(при сохранении его в вашей системе), просто используйте vagrant box list, чтобы найти имя поля, поставщика и версию.

Затем используйте vagrant box repackage <name> <provider> <version>, и он упакует его в файл с именем package.box.

Надеюсь, что это помогло!

Ответ 3

Просто чтобы дополнить @thecodetinker ответ.

Когда я применил предложенную команду:

vagrant box list

и

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

Произошло следующее:

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

Как вы можете видеть, он не распознал package.box и пытается загрузить из Интернета. Если вы посмотрите внимательно выше, вы увидите, что ищет box version >= 0.4.0.

Это результат vagrant box list:

laravel/homestead (virtualbox, 0)

Потому что окно было добавлено вручную. Метаданные ящика не были доступны, и по умолчанию она будет установлена ​​на 0.

Чтобы устранить проблему, создайте metadata.json:

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

Поскольку теперь у нас есть правильные метаданные, вы можете сделать:

vagrant box add metadata.json