引言
起初,我在針對deepin制作一款appimage安裝工具,想要其實現的功能就是自動獲取圖標,只需要輸入軟件名稱和分類即可,當然以后也會尋找方案省去手動輸入的麻煩。
后來我發現一個有趣的問題
openshot有些特立獨行,我無法使用傳統的方案,--appimage-extract
參數來為其解包,以至於很長時間內,軟件都是靠判斷文件名來實現自動獲取圖標的。
但是隨着我發現越來越多“特立獨行”的軟件包,我開始尋找答案。
首先,我注意到一些細節。
在deepin操作系統上,兩者雖然都是AppImage,但是圖標顯示的不同,說明他們的minetype存在差異。
於是我找到了下面這兩個文件
發現確實存在兩個不同的appimage格式,而且,其中一個是iso9660。
於是我全盤搜索其中一個,找到了這個圖標:
這就表示,那個“特立獨行”的人,就是x-iso9660-appimage
,於是我尋找將它的文件讀取出來的辦法,首先,基於我弱雞的linux基礎,我發現mount可以成功掛載這個文件,但是有一個不可忽視的問題,mount需要root。
其實如果這是日常使用,mount就夠了,只是輸入一下密碼而已。
但是有什么方案能不需要root將其中內容取出來?
開始嘗試了7z,安裝u7zip后,使用7z可以成功將其解包,但是而且這對於普通的vnd.appimage
同樣有效,但是貌似這個有可能導致文件損壞,比如我解包openshot時,其中的圖標就無法查看了,用mount掛載時是可以的。我尚不清楚這個現象的原因,開始懷疑是不是iso9660類型特有的問題,后來發現不是。
於是我又開始尋找,找到了fuseiso
其可以無需root權限將iso掛載到指定目錄。
fuseiso的使用
掛載:
fuseiso -p <ISO文件> <目標文件夾>
#-p的作用是當目標文件夾不存在時自動創建
卸載:
fusermount -u <目標文件夾>
至此,就可是實現無需root掛載鏡像了,也實現了x-iso9660-appimage文件內容的讀取。
一些指引我的重要資料的位置:
https://linux.cn/article-4287-1.html :發現fuseiso
https://www.ubuntukylin.com/news/873-cn.html :發現mimetype文件類型標柱的位置