无法打开
- 在一个阴雨连绵的下午,我如往常一样使用Engrampa打开一个rar压缩包时,归档管理器直接崩溃。根据多年来的经验,肯定是压缩包的问题。毕竟人生不如意十之八九,压缩包损坏情有可原,但当我一番寻觅之后发现并非如此。
问题排查
使用归档管理器打开其他几个rar的压缩包,正常
使用unrar命令进行解压,也正常
百思不得其解下,我询问了AI,毕竟AI可是debug的高手。一番询问后,发现似乎是rar升级了版本。使用以下命令查看rar版本。
1
2
3
4
5file xxx.rar
// 得到
xxx.rar: RAR archive data, v5
xxx.rar: RAR archive data, v4, os: Win32经过测试发现,可打开的rar文件大部分为v4,小部分为v5。
使用以下命令得到Engrampa解压调用的程序。发现调用的是7z相关的命令。
1
strace engrampa xxx.rar 2>&1|grep -E 'unrar|unar|bsdtar|7z|7za'
使用以下命令调用7z解压,成功
1
7z x xxx.rar
使用以下命名调用unrar解压,成功
1
unrar x xxx.rar
说明不是后端的问题,那么就把目标锁定到Engrampa上面来。排查开源bug最方便的方法就是去查找该项目的github。一找真找到了,在4月份有个issue,说的就是在这个版本的rar解压的问题。
1
2Engrampa 版本为1.26.2
UNRAR 7.00 freeware
解决方法
根据issue提供的信息,最简单的解决方法就是将
.rar
后缀改为.zip
,实测可行。但是,很多时候我只是想打开看看里面有啥东西而已,每次都需要这样改来改去未免有点太麻烦了。第二个解决方法就是升级版本,在issue的回复中有说明在1.28版本中修复了这个问题。更新版本有不少办法,最简单的就是找个最新的ppa,加进去。但通过观察issue的提交时间可知,修复是在近三个月时间修复的,其他源不一定更新了这个修复。于是,编译成了最佳的选项。(事实上最新的release好像是24年的)
编译安装
根据AI提供的安装教程,亲测可用。先安装依赖
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15sudo apt update
sudo apt install -y \
git \
meson \
ninja-build \
gettext \
libgtk-3-dev \
libglib2.0-dev \
libarchive-dev \
libxml2-dev \
itstool \
yelp-tools \
libjson-glib-dev \
libsm-dev \
desktop-file-utils下载源码
1
2git clone https://github.com/mate-desktop/engrampa.git
cd engrampa构建项目
1
2meson setup build
meson compile -C build启动构建后的程序,测试打开成功。
1
./build/src/engrampa
安装到系统路径
1
sudo meson install -C build
老旧的编译方法
- 搜索到的一篇CSDN中的安装方法,即使用
autogen.sh
进行编译安装。与文中不同的是,需要安装mate-common,而教程中没有提到。