AppImage 在自足的環境中分發應用, 它適用於任何 Linux 發行版。linux
管理 Linux 機器(尤爲是遠程機器)的一個重要分就是管理和安裝軟件。當本地應用程序出現問題時,或者文件系統上的某些文件損壞須要修復時,你一般會但願推送更新,而沒必要走不少路坐在物理屏幕前。正如我在 Pluralsight 課程《Linux 系統維護和故障排除》中所解釋的那樣,許多問題固然能夠經過 Bash 腳本解決,可是仍有不少狀況下,除了老式的二進制文件外,沒有其餘選擇。git
想象一下,你的某些遠程系統須要安裝新的應用程序,這樣使用這些計算機的團隊成員就可以執行某些業務。可以利用 Debian 或 RPM 之類的主要 Linux 倉庫系統的集成和自動化,可使你的管理任務變得更加容易。github
正如 Linus Torvalds 永不厭倦地提醒咱們的那樣,太多的 Linux 軟件管理系統的問題是 Linux 軟件管理系統太多了。多年來,應用開發甚至是 Linux 的採用都變得越發複雜起來,由於你爲了提供你的軟件(好比,放到 Debian 倉庫)而投入的全部時間和工做,對於你想讓它們進入 RPM 系統並無什麼幫助,對於 SUSE 的 Zypper 管理器也同樣,沒有什麼幫助。bash
解決軟件孤島問題的一種有前途的方案是分發具備自足環境的應用,它們能夠在任何 Linux 發行版上運行。在這個年輕且不斷髮展的領域中,選擇之一是 AppImage。架構
我全面投入到了 AppImage。就像我提到的其餘軟件包管理系統同樣,若是你須要的話,有不少複雜的功能可使用。可是,從本質上講,AppImage 很是簡單。AppImage 不像大多數其餘包管理器同樣經過倉庫工做,它使用單個、獨立的文件,能夠直接發送或經過網站共享。app
下面是個展現它的美妙之處的例子。當我在用 AppImage 時,我在一個技術論壇上看到了一個很老的討論,它讓我找到了一個一樣久遠且廢棄的 GitHub 項目以及相關的 YAML 和配方文件。它們旨在自動構建準備生成 AppImage 包所需的至關複雜的基礎架構。儘管該基礎架構所有是在 5 年前的 Ubuntu 版本上構建的,可是當我將它們放在一塊兒並運行 appimagetool
命令時,它建立了一個 AppImage 文件,它可在我當前的桌面上無縫運行。我不認爲有不少有五年曆史的 GitHub 複雜項目可使用其餘技術運行,而無需認真重作。工具
可是這裏我我不會介紹這個案例。相反,我將用一個簡單的 Hello World 程序向你展現它是如何工做的。首先,請確保本地已安裝 AppStream 包。網站
對於基於 Debian 的系統,運行:ui
$ sudo apt install appstream
複製代碼
對於 RPM 系統,請使用:spa
$ sudo dnf install appstream
複製代碼
克隆這篇文章中說起的 Git 倉庫,我會基於它示例:
$ git clone <https://github.com/boolean-world/appimage-resources>
$ cd appimage-resources
$ ls hello-world-appimage
複製代碼
接下來,使用 cd
進入 Git 新建立的目錄。這裏有兩個目錄。請使用 hello-world-appimage
。另外一個是更復雜的項目,你也應該考慮嘗試一下。
Linux GUI 系統會讀取 helloworld.desktop
文件來知道如何呈現桌面圖標。事實證實,當前的這個文件會在之後給你帶來點麻煩,所以請進行一些小修改:添加 Categories=
這行併爲其賦予值 GNOME
。不要忘記最後的分號:
$ nano hello-world-appimage/helloworld.desktop
add Categories=GNOME;
複製代碼
從 AppImage GitHub 項目下載 appimagetool
預編譯的二進制文件。訪問 GitHub 的緣由之一:那裏有不少出色的文檔和資源。下載二進制文件後,使文件可執行,並將 hello-world-appimage
目錄傳給它。可是首先,你須要告訴它你想要的架構。因爲某些緣由,一個名字以 x86_64 結尾的工具都不能自行肯定是否該使用 x86_64 來構建應用程序(我不知道這是怎麼回事)。
$ wget <https://github.com/AppImage/AppImageKit/releases/download/continuous/appimagetool-x86_64.AppImage>
$ chmod +x appimagetool-x86_64.AppImage
$ ARCH=x86_64 ./appimagetool-x86_64.AppImage hello-world-appimage
複製代碼
若是你沒有看到任何錯誤消息,那麼表示完成了,請運行:
$ ls
$ ./hello-world-appimage-x86_64.AppImage
複製代碼
AppImage 是軟件包管理的很是有效的選擇。當你探索它時,我想你會發現它是 Linux 發行版默認軟件包系統的很好的替代品。
via: opensource.com/article/20/…
做者:David Clinton 選題:lujun9972 譯者:geekpi 校對:wxy