使用AppImage進(jìn)行Linux軟件包管理
AppImage 在自足的環(huán)境中分發(fā)應(yīng)用, 它適用于任何 Linux 發(fā)行版。
管理 Linux 機(jī)器(尤其是遠(yuǎn)程機(jī)器)的一個(gè)重要分就是管理和安裝軟件。當(dāng)本地應(yīng)用程序出現(xiàn)問題時(shí),或者文件系統(tǒng)上的某些文件損壞需要修復(fù)時(shí),你通常會(huì)希望推送更新,而不必走很多路坐在物理屏幕前。正如我在 Pluralsight 課程《Linux 系統(tǒng)維護(hù)和故障排除》中所解釋的那樣,許多問題當(dāng)然可以通過 Bash 腳本解決,但是仍有很多情況下,除了老式的二進(jìn)制文件外,沒有其他選擇。
想象一下,你的某些遠(yuǎn)程系統(tǒng)需要安裝新的應(yīng)用程序,這樣使用這些計(jì)算機(jī)的團(tuán)隊(duì)成員就能夠執(zhí)行某些業(yè)務(wù)。能夠利用 Debian 或 RPM 之類的主要 Linux 倉庫系統(tǒng)的集成和自動(dòng)化,可以使你的管理任務(wù)變得更加容易。
正如 Linus Torvalds 永不厭倦地提醒我們的那樣,太多的 Linux 軟件管理系統(tǒng)的問題是 Linux 軟件管理系統(tǒng)太多了。多年來,應(yīng)用開發(fā)甚至是 Linux 的采用都變得愈加復(fù)雜起來,因?yàn)槟銥榱颂峁┠愕能浖ū热?,放?Debian 倉庫)而投入的所有時(shí)間和工作,對于你想讓它們進(jìn)入 RPM 系統(tǒng)并沒有什么幫助,對于 SUSE 的 Zypper 管理器也一樣,沒有什么幫助。
解決軟件孤島問題的一種有前途的方案是分發(fā)具有自足環(huán)境的應(yīng)用,它們可以在任何 Linux 發(fā)行版上運(yùn)行。在這個(gè)年輕且不斷發(fā)展的領(lǐng)域中,選擇之一是 AppImage。
使用 AppImage
我全面投入到了 AppImage。就像我提到的其他軟件包管理系統(tǒng)一樣,如果你需要的話,有很多復(fù)雜的功能可以使用。但是,從本質(zhì)上講,AppImage 非常簡單。AppImage 不像大多數(shù)其他包管理器一樣通過倉庫工作,它使用單個(gè)、獨(dú)立的文件,可以直接發(fā)送或通過網(wǎng)站共享。
下面是個(gè)展示它的美妙之處的例子。當(dāng)我在用 AppImage 時(shí),我在一個(gè)技術(shù)論壇上看到了一個(gè)很老的討論,它讓我找到了一個(gè)同樣久遠(yuǎn)且廢棄的  GitHub 項(xiàng)目以及相關(guān)的 YAML 和配方文件。它們旨在自動(dòng)構(gòu)建準(zhǔn)備生成 AppImage  包所需的相當(dāng)復(fù)雜的基礎(chǔ)架構(gòu)。盡管該基礎(chǔ)架構(gòu)全部是在 5 年前的 Ubuntu 版本上構(gòu)建的,但是當(dāng)我將它們放在一起并運(yùn)行 appimagetool 命令時(shí),它創(chuàng)建了一個(gè) AppImage 文件,它可在我當(dāng)前的桌面上無縫運(yùn)行。我不認(rèn)為有很多有五年歷史的 GitHub 復(fù)雜項(xiàng)目可以使用其他技術(shù)運(yùn)行,而無需認(rèn)真重做。
但是這里我我不會(huì)介紹這個(gè)案例。相反,我將用一個(gè)簡單的 Hello World 程序向你展示它是如何工作的。首先,請確保本地已安裝 AppStream 包。
對于基于 Debian 的系統(tǒng),運(yùn)行:
$ sudo apt install appstream
對于 RPM 系統(tǒng),請使用:
$ sudo dnf install appstream
克隆這篇文章中提及的 Git 倉庫,我會(huì)基于它示例:
$ git clone <https://github.com/boolean-world/appimage-resources>$ cd appimage-resources$ ls hello-world-appimage
接下來,使用 cd 進(jìn)入 Git 新創(chuàng)建的目錄。這里有兩個(gè)目錄。請使用 hello-world-appimage。另一個(gè)是更復(fù)雜的項(xiàng)目,你也應(yīng)該考慮嘗試一下。
Linux GUI 系統(tǒng)會(huì)讀取 helloworld.desktop 文件來知道如何呈現(xiàn)桌面圖標(biāo)。事實(shí)證明,當(dāng)前的這個(gè)文件會(huì)在以后給你帶來點(diǎn)麻煩,因此請進(jìn)行一些小修改:添加 Categories= 這行并為其賦予值 GNOME。不要忘記最后的分號:
$ nano hello-world-appimage/helloworld.desktopadd Categories=GNOME;
從 AppImage GitHub 項(xiàng)目下載 appimagetool 預(yù)編譯的二進(jìn)制文件。訪問 GitHub 的原因之一:那里有很多出色的文檔和資源。下載二進(jìn)制文件后,使文件可執(zhí)行,并將 hello-world-appimage 目錄傳給它。但是首先,你需要告訴它你想要的架構(gòu)。由于某些原因,一個(gè)名字以 x86_64 結(jié)尾的工具都不能自行確定是否該使用 x86_64 來構(gòu)建應(yīng)用程序(我不知道這是怎么回事)。
$ 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
如果你沒有看到任何錯(cuò)誤消息,那么表示完成了,請運(yùn)行:
$ ls$ ./hello-world-appimage-x86_64.AppImage
總結(jié)
AppImage 是軟件包管理的非常有效的選擇。當(dāng)你探索它時(shí),我想你會(huì)發(fā)現(xiàn)它是 Linux 發(fā)行版默認(rèn)軟件包系統(tǒng)的很好的替代品。















 
 
 






 
 
 
 