感謝社區用戶@mozixun 投稿,本篇將以 motrix 為例為大家展示如何將 Linux 安裝包快速轉成玲瓏包。
本教程適用于使用 AppImage 或基于 Electron 框架構建等幾乎不需要額外依賴的應用。
01前置知識
在開始教程之前,建議大家提前了解 deb/rpm 應用及玲瓏容器內的工作流程,這有助于深入理解后續轉換過程。
XDG_DATA_DIRS 變量
玲瓏應用運行環境 VSdeb/rpm 應用運行環境
更多詳細理論知識可參考:
一級包管理器和二級?包管理器的區別 玲瓏內應用運行和直接用deb/rpm安裝應用的區別,以及玲瓏應用內的調用轉發機制 如意玲瓏應用構建指南(一):規范體系與配置文件全解析
通過以上基礎知識后,我們不難發現,順利實現玲瓏應用的打包聚焦有 3 個關鍵點:
應用本體 :這是打包的基礎,缺少應用本體則無從談起打包。
XDG_DATA_DIRS 下的快捷方式與圖標 :在指定目錄設置應用快捷方式和圖標,便于用戶在系統中快速定位與啟動應用。
響應調用能力 :部分應用需具備對文件或網頁調用做出響應的功能,以實現與其他應用或系統功能的交互。
02轉換教程(以motrix為例)
Step 1下載打包樣板并解壓到合適目錄
首先,我們需要下載打包樣板并解壓到一個你認為合適的目錄,本教程使用安裝包如下:
https://gitee.com/LFRon/linyaps-packaging-guide/releases/download/1.1/com.id.linyaps.tar.gz
Step 2解壓軟件安裝包
.deb 解壓
dpkg-deb-R.appimage 解壓<解壓到文件夾>
/xx/app.appimage --appimage-extract
Step 3
將軟件本體放置到合適位置 首先進入至解壓樣板后的文件夾,再進入 linglong/sources。隨后將 Step 2 中得到的軟件本身(可能在 deb 解壓后的/opt/xx 或者 /usr/lib 等位置)直接將文件夾本體替換。
以 motrix 為例,在 linglong/sources 文件夾中解壓 motrix.appimage 后得到 squashfs-root 文件夾,將其復制到 linglong/sources 里,取代 your_app 文件夾,并重命名為你想要的文件夾名,如 motrix。
經過上述操作后,linglong/sources 文件夾會成為如下結構。
最后,確定程序的執行文件是哪一個。以 motrix 為例,我們發現并不需要執行 AppRun,直接執行 motrix 二進制文件就可以直接啟動。于是,我們就了解了在這個文件夾下啟動它的命令是 ./motrix。
Step 4編輯 linglong.yaml 及 build 文件
4.1 編輯 linglong.yaml 文件
退回到工程目錄后,編輯 linglong.yaml 文件,編寫方法如下:
id:對標 deb 包 debian/control 文件里的 Package,這是應用唯一的識別符;
name:玲瓏商店上顯示的應用名字;
description:應用的介紹。
注意,在基礎運行環境中,使用的 base(基礎環境)必須聲明,使用的 Runtime(運行庫)可以不加。比如類似 motrix 這樣的 Electron 應用,使用 org.deepin.base 作底已經足夠,那就可以把 runtime 刪了變成如下的樣子。
接著,在 Command 命令中,把"com.id.linyaps"字樣改成你自己設置的 id 即可。 之所以沒有要在 Command 里直接執行,是由于 Command 這一行在玲瓏打包識別應用時會自動調整,無需人工干預,打包者只需在 Command 處調整好包名即可。如果需要,可以在自定義腳本中添加其他參數以適應玲瓏環境或增加新功能。
4.2 編輯 build 腳本
將腳本中對應應用本體文件夾名稱的部分改為你的應用本體文件夾名稱。例如,案例中將文件夾名稱改為 motrix,就直接在腳本中修改為 motrix。
接下來,根據已知的軟件啟動方式,修改腳本中的啟動命令。對于 motrix,由于其 appimage 安裝包設計是進入程序主文件夾后直接執行 motrix,因此將腳本中 "./樣本啟動文件.sh" 改為直接執行 motrix即可,如下圖所示。
若想開啟 Electron 的 Wayland 會話,那也可以如下圖所示修改(但目前 Electron 的 Wayland 顯示協議版并不成熟,不建議使用)。
最終,build 構建腳本應如下所示(以 motrix 為例):
Step 5加入 desktop 啟動快捷方式和應用圖標
主要的部分完成后,剩下的就是讓應用的快捷方式可以正常運行應用,以及能正常顯示圖標。
5.1 修改 desktop 文件
首先,從 deb 安裝包和 appimage 解壓后的文件里找出 .desktop 的快捷方式,將其復制到工作目錄 /linglong/sources/share/applications 文件夾。
打開 .desktop 文件,設置關鍵屬性:
Name:設置啟動菜單里會顯示的應用名字;
Categories:設置應用快捷方所在的文件夾類型 (如圖會放在網絡應用里);
Exec:設置雙擊快捷方式后會執行的命令;
Icon:設置圖標顯示,如果你只如圖設置應用名字那么桌面環境就會自動去尋找以該名字(不包括后綴名)對應的圖片。
在這里我們主要設置 Exec 和 Icon 兩個屬性,Exec 只需要填寫容器內執行路徑,玲瓏會自動生成前置路徑。
所以我們如下圖填寫 Exec 路徑即可。
圖像直接填寫成你想要的名字即可(不要填絕對路徑),比如我這里填成motrix。
最后保存 desktop 文件即可完成對desktop快捷方式的編輯。
5.2 放置對應應用圖標
首先找到你想給應用設置成的圖標,注意分辨率不要過高(以 KDE Plasma 為例,最高支持 512x512 像素)。
隨后返回工作目錄 /linglong/sources/share 并新建文件夾,命令如下:
mkdir -p icons/hicolor/512x512/apps在文件管理器打開效果如下:
將圖標重命名為 desktop 文件中設置的 Icon 名稱加上后綴(如 motrix.png),然后復制到新建的圖標路徑中,效果如下:
完成以上步驟,桌面快捷方式和應用圖標就設置成功了。如果 AppImage 應用直接提供 usr/share 下的 icons 文件夾,只需確認圖標名稱,然后將圖標復制到對應路徑并按設置的名稱重命名即可。
Step 6構建和調試應用
返回工作目錄(linglong.yaml所在的文件夾),打開終端運行以下命令,開啟構建應用。
ll-builder build
運行情況如下所示:
若報錯提示缺少 so 二進制庫文件,需在 pkgs.org 或 Debian Packages 下載對應安裝包,解包后將 so 文件放到工作目錄的 linglong/sources/libs 文件夾下,重新執行 ll-builder build,如有需要重復此操作。
·pkgs.org:https://pkgs.org
·Debian Packages:https://www.debian.org/distrib/packages#search_contents
構建完成后,在終端中運行以下命令調試,檢查應用是否正常運行。
ll-builder run隨后會出現以下界面:
若出現由于 org.deepin.base 缺失 xdg-open 和 systemd-run 導致文件夾內打開和內置瀏覽器打開異常的問題,可下載以下壓縮包,將 bin 和 libs 覆蓋原文件夾以解決。
Step 7導出 layer 安裝包
由于導出可運行的 uab 文件在除 deepin/UOS 以外的發行版不支持,而且導出的文件體積會巨大(因為包括 Runtime),所以本文只提供導出安裝包的教程。 在 ll-builder run 測試通過后,終端運行以下命令導出安裝包。
ll-builder export --layer
輸出內容示例如下:
導出安裝包后的工作區目錄如下:
隨后安裝本地導出的 layer 包即可。 經過檢查,桌面圖標顯示正常,那么一個樣板玲瓏應用就已經打包成功了。本教程至此結束,希望這個教程能更好地幫助您構建玲瓏包!
再次感謝社區用戶@mozixun 的分享。如果您在構建過程中遇到了任何問題,或者對我們的教程有任何建議,歡迎隨時在deepin 社區論壇與我們交流,參與項目討論。
關于項目
如意玲瓏(Linyaps)是一種新型的獨立包管理工具集,專注于解決 Linux 系統下由傳統軟件包格式的復雜性和交叉依賴關系引起的兼容性問題。項目通過先進的隔離技術,將應用與系統完全解耦,從根本上解決因環境變化引發的應用兼容性問題,實現“一個架構,一次構建”,致力于簡化軟件開發流程、降低維護成本、加強數據安全,促進技術與平臺間的協同合作,構建一個更加繁榮、安全和高效的 Linux 軟件生態環境。
-
Linux
+關注
關注
87文章
11509瀏覽量
213715 -
軟件
+關注
關注
69文章
5150瀏覽量
89205 -
容器
+關注
關注
0文章
511瀏覽量
22447 -
安裝包
+關注
關注
1文章
16瀏覽量
3700
原文標題:技術市集 | 如何將 Linux 安裝包快速轉成玲瓏包
文章出處:【微信號:linux_deepin,微信公眾號:深度操作系統】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
labview程序生成安裝包問題
labview程序生成安裝包問題
求Linux版的labview安裝包
如何將多個LabVIEW生成的exe打包進同一個安裝包??
照明護照APP安裝包如何安裝到手機

評論