如何在 Linux 上使用 AppImage
已發表: 2022-09-27AppImages 讓 Linux 開發人員可以將他們的應用程序打包到一個文件中,該文件可以安裝在任何 Linux 發行版上。 這極大地簡化了事情。 以下是如何使用它們,並將它們集成到您的桌面中。
在 Linux 上安裝軟件
安裝軟件應該簡單方便。 事實證明這有多簡單和多方便很大程度上取決於您的發行版的包管理器。 包管理器是允許您下載其他 Linux 程序並安裝它們的軟件應用程序。
衍生 Linux 發行版傾向於使用其父發行版的包管理器。 例如,許多 Debian 變體和衍生產品使用apt
,RedHat 和 Fedora 發行版使用dnf
,Arch 系列發行版使用pacman
。 所以,值得慶幸的是,沒有多少包管理器有發行版。
即便如此,從開發人員的角度來看,支持所有不同的包格式意味著將您的應用程序包裝到 Debian 系列的 DEB 文件中,以及 RedHat 系列的 RPM 中,等等。 這是很多額外的開銷。
這也意味著,如果開發人員和其他任何人都沒有為您的發行版創建安裝包,則您無法安裝該軟件。 至少,不是本地的。
您也許可以將來自不同發行版的軟件包硬塞到您的計算機上,但這不是一種沒有風險的方法,也不能保證有效。 如果您知道自己在做什麼,您可以下載源代碼並在您的計算機上構建應用程序,但這遠非簡單方便。
Snap 和 Flatpak 等項目旨在克服為每個發行版打包應用程序的問題。 如果您可以將一個包包裝到一個文件中,以便它與適當的庫和它所具有的任何其他依賴項捆綁在一起,那麼它(實際上)對主機操作系統沒有要求,它應該能夠在任何操作系統上運行分配。
AppImage 項目就是這樣一個倡議。 AppImage 是項目的名稱,AppImages 是包裝應用程序的名稱。
AppImage 的工作原理
AppImage 文件不是傳統意義上的安裝。 構成應用程序包的組件文件都包含在一個文件中。 它們不會被解包並存儲在文件系統的不同目錄中。
包管理器安裝的應用程序會將其可執行文件複製到適當的“/bin”目錄中,其man
頁將存儲在“/usr/share/man”目錄中,依此類推。 AppImages 不會發生解包和復制步驟。
AppImage 中有一個文件系統,通常是 squashFS 文件系統。 運行應用程序所需的文件存儲在此文件系統中,而不是在 Linux 安裝的主文件系統中。 執行 AppImage 時,它會啟動其內部幫助程序之一,該程序將 squashFS 文件系統安裝在“/tmp/mount”中,以便可以從您的主文件系統訪問它。 然後它會啟動應用程序本身。
這就是為什麼從 Snaps、Flatpaks 和 AppImages 啟動應用程序比運行常規應用程序稍慢的原因。 為了使所有這些工作,主機文件系統必須安裝名為“用戶空間中的文件系統”的東西。 這是 AppImages 放在主機上的唯一依賴項。 FUSE 通常預裝在現代 Linux 發行版上。
使用 AppImage 文件
您需要做的第一件事是為您想要的應用程序下載 AppImage。 這些不會在您的發行版的存儲庫中。 通常,您可以在應用程序本身的網站上找到它們。
我們將下載並使用開源 3D 計算機輔助設計包 FreeCAD。 瀏覽到 FreeCAD 下載頁面並單擊“64 位 AppImage”按鈕。
下載後,在終端窗口中找到該文件。 除非您更改了 Web 瀏覽器的默認設置,否則它可能位於您的“下載”目錄中。 我們需要使 AppImage 可執行。 我們將使用chmod
命令添加-x
(可執行)權限。
chmod +x FreeCAD-0.20.0-Linux-x86_64.AppImage
我們已經下載了我們的文件並使其可執行。 要執行它,我們可以按名稱調用它。
./FreeCAD-0.20.0-Linux-x86_64.AppImage
這就是我們在 Fedora 和 Manjaro 上要做的所有事情。 在 Ubuntu 22.04 上,我們必須安裝一個庫文件。 FUSE 已經安裝在 Ubuntu 22.04 上,但它比大多數 AppImages 使用的版本更新。 安裝庫文件不會影響已安裝的 FUSE 版本。
sudo apt install libfuse2
這立即解決了問題,我們可以在 Ubuntu Jammy Jellyfish 22.04 上毫無問題地啟動 AppImages。
這一切都很棒。 但是如果你想吃蛋糕怎麼辦? 想像一下,如果有一種使用 AppImages 的方法不需要您從終端窗口啟動它們。 能夠像常規的原生應用程序一樣啟動 AppImage 應用程序會更方便。
這裡有一個明顯的矛盾——AppImages 的全部意義在於它們不安裝傳統意義上的自身,包括它們不集成到您的桌面中。 但是 AppImageLauncher 仍然可以。
AppImageLauncher
AppImageLauncher 監視指定目錄。 它掃描目錄,尋找 AppImage 文件。 對於它找到的每一個,它都會提取應用程序圖標(如果有的話)並將 AppImage 集成到桌面中,就像一個常規應用程序一樣。
對於添加到目錄的每個新 AppImage,都會重複此操作。 當它檢測到 AppImage 已被刪除時,它會刪除集成。 因此,只需將下載的 AppImage 文件拖放到受監控的目錄中,它們就會集成到您的桌面環境中。
如果您使用的是 Ubuntu 或 Fedora,請轉到 AppImageLauncher 下載頁面並單擊“發布構建(最新)”部分中的“資產”鏈接。
對於 Fedora,點擊“appimagelauncher-XXX.x86_64.rpm”鏈接,對於 Ubuntu,點擊“appimagelauncher_XXX.bionic_arm64.deb”文件。 “XXX”代表軟件的版本號。
請注意,有 AppImageLauncher Lite和 AppImageLauncher 的鏈接。 使用 AppImageLauncher 鏈接。
導航到您下載的文件,然後雙擊它開始安裝。 在 GNOME 上,這將啟動“軟件”應用程序。
在 Manjaro 上,您可以使用以下命令安裝 AppImageLauncher:
sudo pacman -S appimagelauncher
您可以通過按“Super”鍵啟動 AppImageLauncher。 在大多數鍵盤上,它位於左側的“Ctrl”和“Alt”鍵之間。 在搜索欄中輸入“appim”。
AppImageLauncher 圖標將出現。 單擊它以啟動應用程序。
有一點點配置要做。 我們需要告訴 AppImageLauncher 我們希望它監控哪個目錄。 單擊“文件夾”圖標並瀏覽到您通常存儲 AppImage 的目錄。我們選擇了“下載”目錄。 如果你願意,你可以選擇一個子目錄,也許是“/Downloads/apps”。
如果您希望 AppImageLauncher 將它在其他目錄中找到的 AppImage 移動到您的監視目錄中,請確保選中“詢問是否將 AppImage 文件移動到應用程序目錄”複選框。 但是如果 AppImageLauncher 只監控一個目錄,它如何在其他任何地方找到 AppImages 呢?
答案在於“appimagelauncherd”選項卡。 單擊“appimagelauncherd”選項卡,您會看到 AppImage 可以監控多個目錄。
單擊綠色的“加號”圖標以添加更多目錄。 確保選中“自動啟動自動集成守護程序”複選框。 做出選擇後,單擊“確定”按鈕。
等待幾分鐘,然後按“Super”鍵並鍵入受監控目錄中的 AppImage 名稱的第一部分。 在我們的例子中,我們只有一個。
只要您輸入“free”,您應該會看到 FreeCAD 的圖標。 單擊它會啟動應用程序。 如果 AppImage 文件不包含圖標,則使用通用齒輪圖標,FreeCAD 就是這種情況。
為了進一步測試,我們下載了 Subsurface 應用程序的 AppImage 文件。 我們等了大約 30 秒以確保它已被發現並集成,然後按下“Super”鍵,輸入“sub”,應用程序圖標出現。 這一次,已經找到並使用了該應用程序的正版圖標。
單擊圖標啟動應用程序。 我們甚至不需要使用chmod
來使 AppImage 可執行。
另一個不錯的方法是右鍵單擊圖標可以讓您從上下文菜單中刪除 AppImage。
還有一個選項可以將圖標固定到您的啟動器,使 AppImages 的使用與本機應用程序一樣方便。
AppImage 正在興起
在我們的測試機器上,從 AppImages 啟動的應用程序加載速度略快於 Flatpak 應用程序,並且比 Snap 應用程序快很多。 使用 AppImages 不需要安裝任何底層框架,因此除了應用程序本身所需的空間外,使用 AppImages 的硬盤佔用空間為零。
可選的 AppImageLauncher 應用程序增加了一些技巧,但沒有它您也可以愉快地使用 AppImages。
越來越多的應用程序提供 AppImages。 如果您發現自己嘗試安裝的東西似乎不在您的發行版存儲庫中,請查看該應用程序的網站。 他們很可能有一個 AppImage。
相關: apt 與 apt-get:Linux 有什麼區別?