2014-10-18 66 views
10

本人已下載家園箱第三時間,使用vagrant box add laravel/homestead。我目前無法訪問快速上網,所以每次都下載它非常麻煩。是否有辦法再次使用下載的軟件包,並將本地軟件包包含在流浪漢中,如果項目或同步位置得到保留,它的劑量就很重要。如何複製流浪箱以便再次使用

我在Ubuntu機器上,如果有關係。

更新:我需要下載的Homestead盒子,這樣如果我的機器出現故障,或者我必須將其安裝在沒有/慢互聯網連接的地方,我可以在本地執行此操作。

+1

通常一旦你使用了'箱add'一旦你可以使用'vagrant init '創建一個具有相同基本框的新實例。你爲什麼不這樣做? – benbot 2014-10-18 01:43:26

+1

@thecodethinker也許我無法解釋它,我需要下載的Homestead盒子,這樣如果我的機器出現故障,或者我必須將其安裝在沒有/慢互聯網連接的地方,我可以在本地執行此操作。 – 2014-10-18 01:46:46

回答

11

一個更好的辦法來做到這一點是:

  1. 只要到那裏你已經完成了Vagrant init
  2. 做一個vagrant package --output mynew.box

你將得到一個箱子打包到mynew目錄.box文件,您甚至可以複製並與其他開發人員共享。在我看來,在網速較慢的情況下,這非常有用。

13

哦,這很容易。

要將當前安裝的文件包打包回.box文件(同時將其保存在系統中),只需使用vagrant box list即可找到文件夾名稱,提供程序和版本。

然後使用vagrant box repackage <name> <provider> <version>,它會將它打包到一個名爲package.box的文件中。

希望這可以幫到!

2

只是爲了補充@thecodethinker答案。

當我申請建議的命令:

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