linux无需root挂载iso镜像文件

引言

起初,我在针对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文件类型标柱的位置

posted @ 2021-02-11 17:50  Maicss  阅读(1043)  评论(0编辑  收藏  举报