首先,通过对语言环境的判断,对unzip的编码进行预先在设定参数,也就是添加"-O"参数来使用正确的编码进行读取。使用root用户执行以下命令,在/etc/profile.d下生成一个文件。
代码: 全选
cat > /etc/profile.d/unzip-default-charset.sh << "EOF"
locale=${LC_ALL:-$LC_CTYPE}
locale=${locale:-$LANG}
locale=${locale%%.*}
case "$locale" in
ja_JP)
charset=CP932
;;
ko_KR)
charset=CP949
;;
th_TH)
charset=CP874
;;
vi_VN)
charset=CP1258
;;
zh_CN)
charset=CP936
;;
zh_TW)
charset=CP950
;;
*)
charset=
;;
esac
if [ -n "$charset" ]; then
export UNZIP="-O $charset"
export ZIPINFO="-O $charset"
fi
EOF
代码: 全选
sudo apt update
apt source file-roller
#最新版本为3.36.2
cd file-roller-3.36.2/debian/patches
cat > disable_p7zip-full_for_zip.patch << "EOF"
--- a/src/fr-command-7z.c
+++ b/src/fr-command-7z.c
@@ -593,7 +593,6 @@
"application/x-ms-dos-executable",
"application/x-ms-wim",
"application/x-rar",
- "application/zip",
NULL
};
@@ -640,21 +639,16 @@
capabilities |= FR_ARCHIVE_CAN_READ;
if (_g_mime_type_matches (mime_type, "application/x-cbz")
- || _g_mime_type_matches (mime_type, "application/x-ms-dos-executable")
- || _g_mime_type_matches (mime_type, "application/zip"))
+ || _g_mime_type_matches (mime_type, "application/x-ms-dos-executable"))
{
capabilities |= FR_ARCHIVE_CAN_WRITE | FR_ARCHIVE_CAN_ENCRYPT;
}
}
else if (_g_program_is_available ("7za", check_command)) {
- if (_g_mime_type_matches (mime_type, "application/vnd.ms-cab-compressed")
- || _g_mime_type_matches (mime_type, "application/zip"))
+ if (_g_mime_type_matches (mime_type, "application/vnd.ms-cab-compressed"))
{
capabilities |= FR_ARCHIVE_CAN_READ;
}
-
- if (_g_mime_type_matches (mime_type, "application/zip"))
- capabilities |= FR_ARCHIVE_CAN_WRITE;
}
/* multi-volumes are read-only */
EOF
echo "disable_p7zip-full_for_zip.patch" >> series
cd ../../
tar Jcvf ../file-roller_3.36.2-0ubuntu1.debian.tar.xz debian/
# 安装编译依赖
sudo apt install debhelper-compat dh-sequence-gnome itstool libarchive-dev libglib2.0-dev libgtk-3-dev libjson-glib-dev libmagic-dev libnautilus-extension-dev libnotify-dev meson
# 开始编译
dpkg-buildpackage
# 安装
sudo dpkg -i ../file-roller_3.36.2-0ubuntu1_amd64.deb
附件是已经编译好的file-roller包和需要放在/etc/profile.d下的文件