[Seek Help] 归档管理器(file-roller)无法打开很多 zip 文件
Tofloor
poster avatar
duanyao
deepin
2021-04-13 21:21
Author

近期系统升级后,归档管理器(file-roller 3.30.2.1-1+dde)无法打开很多 zip 文件(具体是哪种文件见7楼)了,弹出对话框“装入归档文件时出现了一个错误”,如图:

经查,可能是因为 unzip 包升级后,与 file-roller 出现了不兼容。deepin 仓库里 unzip 有以下版本:

$ apt policy unzip
unzip:
  已安装:6.0.5-23+deb10u2
  候选: 6.0.5-23+deb10u2
  版本列表:
 *** 6.0.5-23+deb10u2 500
        500 https://community-packages.deepin.com/deepin apricot/main amd64 Packages
        100 /var/lib/dpkg/status
     6.0-31deepin 200
        200 http://packages.deepin.com/deepin lion/main amd64 Packages
     6.0-30+i18n4 200
        200 http://packages.deepin.com/deepin panda/main amd64 Packages

最新的 6.0.5-23+deb10u2 是会导致 file-roller 报错的,而降级到 6.0-31deepin 后则恢复正常:

$ sudo apt install unzip=6.0-31deepin

 

这两个版本的 unzip 有何不同呢?我看了一下其帮助,似乎 6.0.5-23+deb10u2 少了几个命令行参数:

 

  -O CHARSET  specify a character encoding for DOS, Windows and OS/2 archives
  -I CHARSET  specify a character encoding for UNIX and other archives

这可能是原因吧。

Reply Favorite View the author
All Replies
152******14
deepin
2021-04-13 21:46
#1

一直用360压缩

Reply View the author
guaguale
deepin
2021-04-14 03:11
#2

居然仓库还有lion panda  估计仓库混用导致的。

Reply View the author
Ziggy
deepin
2021-04-14 08:42
#3

你这个应该是其他依赖出问题了吧...源都乱了

Reply View the author
duanyao
deepin
2021-04-14 19:45
#4
Ziggy

你这个应该是其他依赖出问题了吧...源都乱了

没乱,我故意这么设置的,我需要一些旧版本的软件,比如 nautilus ,新版本有一些严重bug。

思路是根据我的这篇文章:

https://bbs.deepin.org/zh/post/179163

 

你那里不能重现这个问题吗?你的 file-roller 和 unzip 分别是什么版本?

Reply View the author
duanyao
deepin
2021-04-14 19:45
#5
guaguale

居然仓库还有lion panda  估计仓库混用导致的。

我故意这么设置的,我需要一些旧版本的软件,比如 nautilus ,新版本有一些严重bug。

Reply View the author
Ziggy
deepin
2021-04-18 01:57
#6
duanyao

没乱,我故意这么设置的,我需要一些旧版本的软件,比如 nautilus ,新版本有一些严重bug。

思路是根据我的这篇文章:

https://bbs.deepin.org/zh/post/179163

 

你那里不能重现这个问题吗?你的 file-roller 和 unzip 分别是什么版本?

我的软件包都是和你一样的,没有这个问题,可以先换其他压缩工具看看

Reply View the author
duanyao
deepin
2021-04-19 22:52
#7
Ziggy

我的软件包都是和你一样的,没有这个问题,可以先换其他压缩工具看看

我发现我的问题描述不准确,并非所有的 zip 文件都无法打开,能否打开取决于 zip 中的文件名的字符编码。我的测试表明,含有 utf-8 编码的汉字、纯 ASCII 编码的 zip 都无法打开,而含有 GB 编码的汉字的 zip 则有可能打开。附件是两个打不开的,你试试。

ccc.zip

ddd.zip

 

Reply View the author
duanyao
deepin
2021-04-19 23:33
#8
Ziggy

我的软件包都是和你一样的,没有这个问题,可以先换其他压缩工具看看

我已经确定我在主贴的猜测是正确的。下载 file-roller_3.30.2.1-1+dde 源码编译,只要注释掉 src/fr-command-zip.c 中的以下代码,就不会报错了:

        fr_process_add_arg (comm->process, "-O");
        fr_process_add_arg (comm->process, cs);
        fr_process_add_arg (comm->process, "-I");
        fr_process_add_arg (comm->process, cs);

这说明就是因为较新版本的 unzip 不支持 -O 和 -I 选项。

我下载了 unzip 6.0-31deepin 和 6.0.5-23+deb10u2 的源码,后者确实不支持 -O 和 -I 选项。看changelog,前者支持-O 和 -I 选项是从 archlinux 和 ubuntu 继承来的,后者应该是直接照搬 debian 仓库的,不支持。

这个兼容性问题需要解决一下。

Reply View the author
Ziggy
deepin
2021-04-21 03:06
#9
duanyao

我已经确定我在主贴的猜测是正确的。下载 file-roller_3.30.2.1-1+dde 源码编译,只要注释掉 src/fr-command-zip.c 中的以下代码,就不会报错了:

        fr_process_add_arg (comm->process, "-O");
        fr_process_add_arg (comm->process, cs);
        fr_process_add_arg (comm->process, "-I");
        fr_process_add_arg (comm->process, cs);

这说明就是因为较新版本的 unzip 不支持 -O 和 -I 选项。

我下载了 unzip 6.0-31deepin 和 6.0.5-23+deb10u2 的源码,后者确实不支持 -O 和 -I 选项。看changelog,前者支持-O 和 -I 选项是从 archlinux 和 ubuntu 继承来的,后者应该是直接照搬 debian 仓库的,不支持。

这个兼容性问题需要解决一下。

@ deepin-mq麻烦呼叫开发的同学看一下

Reply View the author