关于360压缩软件 DEB 包的一些技术分析
发表于 : 2019-06-30 22:44
关于360压缩软件 DEB 包的一些技术分析
DEB 包名称:360zip_1.0.0.1010_amd64.deb
版本:1.0.0.1010
平台:amd64 (64位)
下载地址:
http://packages.deepin.com/deepin/pool/ ... _amd64.deb
首先声明个人立场:
有国内厂商愿意在 Linux 平台上开发软件,
----不管是自主研发,还是在某些现有的软件基础上进行“二次开发”;
----不管是基于企业良心,还是基于商业利益;
----不管企业以前的业界声誉,是好评,还是中差评;
----对用户而言,只关心“蛋”的质量,不在意生蛋的母鸡是正是邪;
----只要不违背软件版权原则、不违背社会道德、不违背软件道德,都是值得肯定和支持的!
以下是技术分析:
1. control 文件内容
Package: 360zip
Version: 1.0.0.1010
Architecture: amd64
Maintainer: qihu360 company <[email protected]>
Installed-Size: 20990
Depends: libqt5core5a (>= 5.7.1), libqt5widgets5 (>= 5.7.1), libqt5gui5 (>= 5.7.1)
Section: gnome
Priority: required
Homepage: http://www.360.cn/
Description: 360 zip
疑问:
* 一个压缩软件,优先级指定为 required (必需), 是不是要求得太多了?常见的压缩软件包,一般都是指定为 optional (可选)。
* 既然依赖的是 QT 库,为什么 section 指定为 gnome ? gnome 用的不是 GTK ?难道 gnome 改行了 ?
-------------
2 lintian 输出:
E: 360zip: unstripped-binary-or-object usr/local/share/360zip/360zip
E: 360zip: embedded-library usr/local/share/360zip/360zip: sqlite
E: 360zip: missing-dependency-on-libc needed by usr/lib/x86_64-linux-gnu/dde-file-manager/plugins/menu/libdeepin-360zip.so and 3 others
E: 360zip: changelog-file-missing-in-native-package
E: 360zip: no-copyright-file
E: 360zip: extended-description-is-empty
E: 360zip: dir-in-usr-local usr/local/share/
E: 360zip: dir-in-usr-local usr/local/share/360zip/
E: 360zip: file-in-usr-local usr/local/share/360zip/360zip
W: 360zip: file-in-unusual-dir usr/local/share/360zip/360zip
E: 360zip: file-in-usr-local usr/local/share/360zip/360zip.sh
W: 360zip: file-in-unusual-dir usr/local/share/360zip/360zip.sh
E: 360zip: file-in-usr-local usr/local/share/360zip/7z.so
W: 360zip: file-in-unusual-dir usr/local/share/360zip/7z.so
E: 360zip: dir-in-usr-local usr/local/share/360zip/Codecs/
E: 360zip: file-in-usr-local usr/local/share/360zip/Codecs/Rar.so
W: 360zip: file-in-unusual-dir usr/local/share/360zip/Codecs/Rar.so
E: 360zip: file-in-usr-local usr/local/share/360zip/copying.txt
W: 360zip: file-in-unusual-dir usr/local/share/360zip/copying.txt
W: 360zip: non-standard-executable-perm usr/local/share/360zip/copying.txt 0744 != 0755
E: 360zip: file-in-usr-local usr/local/share/360zip/readme.txt
W: 360zip: file-in-unusual-dir usr/local/share/360zip/readme.txt
W: 360zip: non-standard-executable-perm usr/local/share/360zip/readme.txt 0744 != 0755
E: 360zip: dir-in-usr-local usr/local/share/applications/
E: 360zip: file-in-usr-local usr/local/share/applications/360zip.desktop
W: 360zip: file-in-unusual-dir usr/local/share/applications/360zip.desktop
W: 360zip: non-standard-executable-perm usr/local/share/applications/360zip.desktop 0744 != 0755
E: 360zip: dir-in-usr-local usr/local/share/icons/
E: 360zip: file-in-usr-local usr/local/share/icons/360zip.png
W: 360zip: file-in-unusual-dir usr/local/share/icons/360zip.png
W: 360zip: non-standard-executable-perm usr/local/share/icons/360zip.png 0744 != 0755
W: 360zip: executable-not-elf-or-script usr/local/share/360zip/readme.txt
W: 360zip: executable-not-elf-or-script usr/local/share/applications/360zip.desktop
W: 360zip: executable-not-elf-or-script usr/local/share/360zip/copying.txt
W: 360zip: executable-not-elf-or-script usr/local/share/icons/360zip.png
W: 360zip: maintainer-script-empty prerm
W: 360zip: maintainer-script-ignores-errors prerm
E: 360zip: shlib-with-executable-bit usr/lib/x86_64-linux-gnu/dde-file-manager/plugins/menu/libdeepin-360zip.so 0755
Lintian finished with exit status 1
问题:
1。打包时,文件权限太不专业。有太多文件,指定了不必要的“可执行”权限。见上面红字部分。
2。DEBIAN/prerm 安装脚本内容异常。详见下面具体分析
------------
* DEBIAN/prerm 安装脚本内容:
#! /bin/bash
#set -e
case "$1" in
remove)
#pkill -9 -f 360zip 2>/dev/null
;;
esac
调试完成后,忘记删掉 井号了?
--------------
* DEBIAN/postinst 安装脚本内容:
#! /bin/bash
set -e
case "$1" in
configure)
if [ -e "/usr/local/bin/360zip" ]
then
rm -rf /usr/local/bin/360zip
fi
ln -s /usr/local/share/360zip/360zip.sh /usr/local/bin/360zip
;;
esac
风险:
你能确定每台 Linux 电脑上,都一定会存在 /usr/local/bin/ 目录?
DEB 包名称:360zip_1.0.0.1010_amd64.deb
版本:1.0.0.1010
平台:amd64 (64位)
下载地址:
http://packages.deepin.com/deepin/pool/ ... _amd64.deb
首先声明个人立场:
有国内厂商愿意在 Linux 平台上开发软件,
----不管是自主研发,还是在某些现有的软件基础上进行“二次开发”;
----不管是基于企业良心,还是基于商业利益;
----不管企业以前的业界声誉,是好评,还是中差评;
----对用户而言,只关心“蛋”的质量,不在意生蛋的母鸡是正是邪;
----只要不违背软件版权原则、不违背社会道德、不违背软件道德,都是值得肯定和支持的!
以下是技术分析:
1. control 文件内容
Package: 360zip
Version: 1.0.0.1010
Architecture: amd64
Maintainer: qihu360 company <[email protected]>
Installed-Size: 20990
Depends: libqt5core5a (>= 5.7.1), libqt5widgets5 (>= 5.7.1), libqt5gui5 (>= 5.7.1)
Section: gnome
Priority: required
Homepage: http://www.360.cn/
Description: 360 zip
疑问:
* 一个压缩软件,优先级指定为 required (必需), 是不是要求得太多了?常见的压缩软件包,一般都是指定为 optional (可选)。
* 既然依赖的是 QT 库,为什么 section 指定为 gnome ? gnome 用的不是 GTK ?难道 gnome 改行了 ?
-------------
2 lintian 输出:
E: 360zip: unstripped-binary-or-object usr/local/share/360zip/360zip
E: 360zip: embedded-library usr/local/share/360zip/360zip: sqlite
E: 360zip: missing-dependency-on-libc needed by usr/lib/x86_64-linux-gnu/dde-file-manager/plugins/menu/libdeepin-360zip.so and 3 others
E: 360zip: changelog-file-missing-in-native-package
E: 360zip: no-copyright-file
E: 360zip: extended-description-is-empty
E: 360zip: dir-in-usr-local usr/local/share/
E: 360zip: dir-in-usr-local usr/local/share/360zip/
E: 360zip: file-in-usr-local usr/local/share/360zip/360zip
W: 360zip: file-in-unusual-dir usr/local/share/360zip/360zip
E: 360zip: file-in-usr-local usr/local/share/360zip/360zip.sh
W: 360zip: file-in-unusual-dir usr/local/share/360zip/360zip.sh
E: 360zip: file-in-usr-local usr/local/share/360zip/7z.so
W: 360zip: file-in-unusual-dir usr/local/share/360zip/7z.so
E: 360zip: dir-in-usr-local usr/local/share/360zip/Codecs/
E: 360zip: file-in-usr-local usr/local/share/360zip/Codecs/Rar.so
W: 360zip: file-in-unusual-dir usr/local/share/360zip/Codecs/Rar.so
E: 360zip: file-in-usr-local usr/local/share/360zip/copying.txt
W: 360zip: file-in-unusual-dir usr/local/share/360zip/copying.txt
W: 360zip: non-standard-executable-perm usr/local/share/360zip/copying.txt 0744 != 0755
E: 360zip: file-in-usr-local usr/local/share/360zip/readme.txt
W: 360zip: file-in-unusual-dir usr/local/share/360zip/readme.txt
W: 360zip: non-standard-executable-perm usr/local/share/360zip/readme.txt 0744 != 0755
E: 360zip: dir-in-usr-local usr/local/share/applications/
E: 360zip: file-in-usr-local usr/local/share/applications/360zip.desktop
W: 360zip: file-in-unusual-dir usr/local/share/applications/360zip.desktop
W: 360zip: non-standard-executable-perm usr/local/share/applications/360zip.desktop 0744 != 0755
E: 360zip: dir-in-usr-local usr/local/share/icons/
E: 360zip: file-in-usr-local usr/local/share/icons/360zip.png
W: 360zip: file-in-unusual-dir usr/local/share/icons/360zip.png
W: 360zip: non-standard-executable-perm usr/local/share/icons/360zip.png 0744 != 0755
W: 360zip: executable-not-elf-or-script usr/local/share/360zip/readme.txt
W: 360zip: executable-not-elf-or-script usr/local/share/applications/360zip.desktop
W: 360zip: executable-not-elf-or-script usr/local/share/360zip/copying.txt
W: 360zip: executable-not-elf-or-script usr/local/share/icons/360zip.png
W: 360zip: maintainer-script-empty prerm
W: 360zip: maintainer-script-ignores-errors prerm
E: 360zip: shlib-with-executable-bit usr/lib/x86_64-linux-gnu/dde-file-manager/plugins/menu/libdeepin-360zip.so 0755
Lintian finished with exit status 1
问题:
1。打包时,文件权限太不专业。有太多文件,指定了不必要的“可执行”权限。见上面红字部分。
2。DEBIAN/prerm 安装脚本内容异常。详见下面具体分析
------------
* DEBIAN/prerm 安装脚本内容:
#! /bin/bash
#set -e
case "$1" in
remove)
#pkill -9 -f 360zip 2>/dev/null
;;
esac
调试完成后,忘记删掉 井号了?
--------------
* DEBIAN/postinst 安装脚本内容:
#! /bin/bash
set -e
case "$1" in
configure)
if [ -e "/usr/local/bin/360zip" ]
then
rm -rf /usr/local/bin/360zip
fi
ln -s /usr/local/share/360zip/360zip.sh /usr/local/bin/360zip
;;
esac
风险:
你能确定每台 Linux 电脑上,都一定会存在 /usr/local/bin/ 目录?