少女祈祷中...

无法打开

  • 在一个阴雨连绵的下午,我如往常一样使用Engrampa打开一个rar压缩包时,归档管理器直接崩溃。根据多年来的经验,肯定是压缩包的问题。毕竟人生不如意十之八九,压缩包损坏情有可原,但当我一番寻觅之后发现并非如此。

问题排查

  • 使用归档管理器打开其他几个rar的压缩包,正常

  • 使用unrar命令进行解压,也正常

  • 百思不得其解下,我询问了AI,毕竟AI可是debug的高手。一番询问后,发现似乎是rar升级了版本。使用以下命令查看rar版本。

    1
    2
    3
    4
    5
    file 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
    2
    Engrampa 版本为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
    15
    sudo 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
    2
    git clone https://github.com/mate-desktop/engrampa.git
    cd engrampa
  • 构建项目

    1
    2
    meson setup build
    meson compile -C build
  • 启动构建后的程序,测试打开成功。

    1
    ./build/src/engrampa
  • 安装到系统路径

    1
    sudo meson install -C build

老旧的编译方法

  • 搜索到的一篇CSDN中的安装方法,即使用autogen.sh进行编译安装。与文中不同的是,需要安装mate-common,而教程中没有提到。

参考文章