2021-05-12 14:32:11
安裝snap應用到Ubuntu 16.4桌面系統
Canonical公司於最近2016年4月發布了一個新的Ubuntu 16.04系統,並且這個系統是長期支援版(LongTerm Support - LTS).它一如既往地支援debian安裝包,但同時它也支援最新的snap安裝包.snap安裝包是Canonical公司最新發布的一種安裝包的格式,它甚至可以在其它的Linux發行版上安裝.更多的資訊可以在我們的官方開發者網站:https://developer.ubuntu.com/en/desktop/或http://snapcraft.io/檢視.
1)什麼是snap?
2)16.04桌面支援
從上面的圖中,我們可以看出來在16.04的桌面中支援兩種格式的安裝包:snap及debian.另外我們可以看出,snap包每個安裝的應用都是自成一體:每個snap應用包含執行所需要的任何依賴(dependencies);同時我們可以看出每個snap應用都是互相隔離的(請注意OS也是一個snap).和debian包相比較,我們可以看出來每個debian應用的安裝依賴於其它包的安裝;debian應用之間可以不受限制地互相存取而造成安全問題;刪除其中的一個debian應用或包可能導致其它的應用不可以正常執行.相比較而言,不同的snap應用可以安裝同樣一個軟體的不同版本(比如一個安裝python 2.7,另外一個應用安裝python 3.3)而不造成任何的干擾.從理論上講,一個snap應用可以安裝到任何一個Linux的發行版上,因為它不依賴於作業系統及其發布版本.這對於應用的維護來說是非常好的.
目前在如下的Linux發行版上支援snap包的安裝.大家如果有興趣的話,可以試一下.大家甚至可以直接從原始碼編譯在它上面執行的snapd環境.
Canonical公司目前正在號召全社群把應用移植成為snap包,並最終把作業系統變為Ubuntu core系統,從而打造最安全的作業系統及良好的應用維護.
對於一個All-snap Ubuntu core系統來說(如上面的右圖所示),它可以分為兩個邏輯部分:
- 唯讀的最基本的系統
- 這部分包括組態檔,標準目錄,庫,工具及核心的服務(比如network services, libc, systemd及其它).系統的這部分是唯讀的,裡面的每個元素不可以被分別更新.這個被稱之為"system-image".在一個系統中,這種image可以達到兩個及以上.這些最基本的系統是一種root filesystem的形式出現的.在啟動後它們之間可以互相roll back,也即如果一個系統啟動有問題,可以自動切換到先前的或指定的系統image去.這個部分也是通過snap打包來實現的.
- 可寫的snap應用及在其之上的架構(framework).它們利用上面的系統所提供的服務達成.
3)安裝
$ sudo apt update $ sudo apt install snapd $ sudo apt install snapcraft
在這裡,我們簡單地介紹一下所使用的術語:
$ sudo snap install ubuntu-calculator-app $ ubuntu-calculator-app.calculator
我們可以在我們的電腦的dash中直接執行我們所安裝的應用:
liuxg@liuxg:~/snappy/desktop/rssreader$ snap list Name Version Rev Developer Notes hello-world 6.3 27 canonical - hello-world-cli 0.1 x1 - hello-xiaoguo 1.0 x2 - rssreader-app 1.0 x2 - snappy-debug 0.23 22 canonical - telegram-sergiusens 0.9.50 x1 - test-license 0.1 x1 - ubuntu-calculator-app 2.1+snap3 5 ubuntucoredev - ubuntu-core 16.04+20160531.11-56 122 canonical - webcam-webui 1.0 x1 -
$ snap install hello --channel-beta
$ snap refresh hello --channel=beta Name Version Rev Developer Notes hello 2.10.1 29 canonical - hello (beta) installed
https://code.launchpad.net/~dpm/ubuntu-calendar-app/snap-all-things
細心的開發者也許會發現,這個應用實際上是使用了同樣一個和Ubuntu手機一樣的程式碼.沒有做任何的改變.從某種意義上講,Ubuntu實現了真正意義上的融合(Convergence)應用設計.在為了,我們只需要一個應用的snap包,它就可以直接執行於不同螢幕尺寸上,並自動適配螢幕尺寸從而得到最佳的顯示效果.比如在我們的另外一個教學中"如何把一個qmake的Ubuntu手機應用打包為一個snap應用",它展示了如何把一個手機的應用轉換為一個可以在桌面系統執行的snap應用.
$ snap refresh <snap name>我們也可以通過如下的命令來rollback到以前的版本(從snapd 2.11版本開始支援)
$ snap revert <snap name>
liuxg@liuxg:~$ snap find calculator Name Version Developer Notes Summary ubuntu-calculator-app 2.1+snap3 ubuntucoredev - Ubuntu Calculator application for the Unity 7 desktop
liuxg@liuxg:~$ snap find Name Version Developer Notes Summary ab 1.0 snappy-test - Test snap with shortest name ag-mcphail 1.0.1 njmcphail - The Silver Searcher - mcphail's build and upstream git version alsa-utils 1.1.0-1 woodrow - Utilities for configuring and using ALSA apktool 2.1.1 ligboy - A tool for reverse engineering 3rd party, closed, binary Android apps. ...
liuxg@liuxg:~$ snap find | grep hello hello 2.10 canonical - GNU Hello, the "hello world" snap hello-bluet 0.1 bluet - Qt Hello World example hello-huge 1.0 noise - a really big snap hello-snap 0.01 muhammad - GNU hello-snap, the "Hello, Snap!" snap
4)刪除一個snap應用
liuxg@liuxg:~$ snap list Name Version Rev Developer Notes hello-world 6.1 26 canonical - rssreader 1.0 x1 devmode rssreader-app 1.0 x2 - snaptest 1 x1 devmode snaptest-app 1 x3 devmode ubuntu-calculator-app 2.1+snap3 5 ubuntucoredev - ubuntu-core 16.04+20160531.11-56 122 canonical - webcam-webui 1 x1 -
liuxg@liuxg:~$ sudo snap remove ubuntu-calculator-app [sudo] password for liuxg: Done
liuxg@liuxg:~$ snap list Name Version Rev Developer Notes hello-world 6.1 26 canonical - rssreader 1.0 x1 devmode rssreader-app 1.0 x2 - snaptest 1 x1 devmode snaptest-app 1 x3 devmode ubuntu-core 16.04+20160531.11-56 122 canonical - webcam-webui 1 x1顯然我們再也找不到ubuntu-calculator-app應用了.
更多詳情見請繼續閱讀下一頁的精彩內容: http://www.linuxidc.com/Linux/2016-08/134676p2.htm
相關文章