
我一直在 Raspberry Pi 2 設備上嘗試使用 snappy Ubuntu 核心,並且聽說我可以使用 Snapcraft 在其上進行開發。現在我聽說 Ubuntu 16.04 和其他發行版的桌面和伺服器上都可以使用快照。
什麼是 Snapcraft 以及如何使用它?
答案1
Snapcraft 是一個一套工具捆綁在snapcraft
指令下即可輕鬆為多個 Linux 發行版創建(製作)軟體包。這些 .snap 軟體包通常包含獨立的應用程序,提供安全隔離,並且可以從 Ubuntu 軟體商店或透過命令手動安裝snap install <snap-name>.snap
。
簡而言之,作為開發人員,您可以使用常規工具編寫程式碼,然後讓 Snapcraft 負責組裝它以進行分發。 Snapcraft 也擅長為開發人員提供支持港口將他們現有的應用程式遷移到任何支援 snap 的 Linux 平台。
快照工藝:
- 很聰明:它取得、建構和組裝不同的軟體(部分)從遠端來源到最終的 .snap 套件,其中包含運行所需的所有依賴項
- 需要食譜:它依賴
snapcraft.yaml
指定的文件部分和外掛創建包所需的 - 可擴充帶插件。雖然它附帶了一組最常見的構建系統插件來滿足各種應用程式構建的需要,但它可以很容易用新的擴展。
3 分鐘 Snapcraft 之旅
在 Ubuntu 上安裝 Snapcraft
您需要 Ubuntu 16.04 LTS 才能使用 Snapcraft。使用Ctrl+ Alt+開啟終端t,然後使用以下命令安裝 Snapcraft:
sudo apt install snapcraft
sudo apt install build-essential # Optional, but useful for different builds
如果您使用其他發行版,查看替代安裝說明>
試駕 Snapcraft
以下範例製作一個包,其中包含允許您貼上和共享的服務。完成後,您可以在 snappy 裝置上手動安裝它以進行測試,或將其上傳到商店供其他用戶使用。
首先,我們打開一個終端並從範例儲存庫下載範例:
sudo apt install git
git clone https://github.com/ubuntu-core/snapcraft.git
cd snapcraft/demos/gopaste
請注意snapcraft.yaml
該目錄中的文件,它指定了組裝最終 .snap 所需的服務和零件。您可以選擇使用文字編輯器檢查它。
現在snapcraft
在終端機上運行命令。這將導致所有 snapcraft 子命令按順序運行以構建部件並將結果放入最終的 .snap 包中。在開發過程中,您通常會單獨執行這些步驟,直到您確信整個建置和組裝運作正常為止。
$ snapcraft
Pulling gopaste
env GOPATH=/tmp/snapcraft/examples/gopaste/parts/gopaste/build go get -t -d github.com/wisnij/gopaste/gopasted
Building gopaste
env GOPATH=/tmp/snapcraft/examples/gopaste/parts/gopaste/build go build github.com/wisnij/gopaste/gopasted
env GOPATH=/tmp/snapcraft/examples/gopaste/parts/gopaste/build go install github.com/wisnij/gopaste/gopasted
env GOPATH=/tmp/snapcraft/examples/gopaste/parts/gopaste/build cp -a /tmp/snapcraft/examples/gopaste/parts/gopaste/build/bin /tmp/snapcraft/examples/gopaste/parts/gopaste/install
Staging gopaste
Snapping gopaste
Generated 'gopaste_1.0_amd64.snap' snap
在命令的輸出中,您可以看到 snapcraft 為您運行的步驟:
- 拉:它從遠端 Github 儲存庫中提取所需的 gopaste 部分的程式碼
- 建造:它在本地建造 gopaste
- 階段:建構後,各部分被放入一個目錄樹中,即“暫存區”
- 折斷:最終的 .snap 套件是根據暫存區域中組裝的部件建立的
筆記:
- 您將找到最終的快照檔案
gopaste_1.0_amd64.snap
(請注意,在我的例子中,我在 amd64 桌面上建立了它,例如 Raspberry Pi 2 軟體包將具有_armhf
架構後綴)。 - 您也可以單獨執行每個命令:
snapcraft pull
、snapcraft build
或snapcraft stage
snapcraft snap
- 用於
snapcraft -h
快速概覽所有可用命令。
這就是 Snapcraft 功能的快速概覽!了解更多關於 Snapcraft 的資訊 >