关于360压缩软件 DEB 包的一些技术分析

OOo,TeX,KO,ABI,GIMP,Picasa,ProE,QCAD,Inkscape,Kicad,Eagle
头像
careone
帖子: 839
注册时间: 2007-12-17 21:41

关于360压缩软件 DEB 包的一些技术分析

#1

帖子 careone » 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/ 目录?
上次由 careone 在 2019-07-01 22:33,总共编辑 1 次。
魁拔不死,天下不宁。
魁拔既死,天下不平。
--------------
Careone <emacslocale^126.com>
https://sourceforge.net/projects/emacslocale/files/
onlylove
论坛版主
帖子: 5369
注册时间: 2007-01-14 16:23

Re: 关于360压缩软件 DEB 包的一些技术分析

#2

帖子 onlylove » 2019-06-30 23:09

我不觉得一堆神魔乱舞的软件是什么好事,看国内安卓就知道了,该要的,不该要的,统统都要来再说,不给?不给我不启动,这样的软件,我觉得有还不如没有,还记得之前的windows和ie浏览器工具栏么,各种流氓捆绑,偷偷下载,然后疯狂弹窗,好不容易找了个安静点的地方,你还来?

你看你拆的这个,不就要了个required么
头像
bzimage
帖子: 716
注册时间: 2006-03-14 10:25

Re: 关于360压缩软件 DEB 包的一些技术分析

#3

帖子 bzimage » 2019-07-01 1:16

江山易改 本性难移 抵制
头像
astolia
论坛版主
帖子: 6703
注册时间: 2008-09-18 13:11

Re: 关于360压缩软件 DEB 包的一些技术分析

#4

帖子 astolia » 2019-07-01 11:46

careone 写了: 2019-06-30 22:44 调试完成后,忘记删掉 井号了?
又不像windows非要先关闭进程才能删除文件,不用pkill并没有错
careone 写了: 2019-06-30 22:44 风险:
你能确定每台 Linux 电脑上,都一定会存在 /usr/local/bin/ 目录?
如果系统是FHS兼容的,那么/usr/local/bin/必然会存在
https://refspecs.linuxfoundation.org/FH ... 04s09.html
debian(系)是FHS兼容的
https://www.debian.org/doc/debian-polic ... -hierarchy

这个包里readme.txt和360zip.sh两个,前者直接从peazip拿过来里面名字都不换一下,后者从chromium抄来里面一堆chromium相关的东西也不知道改改
至于在/usr/local/share里面放平台相关的2进制文件都懒得说了
头像
careone
帖子: 839
注册时间: 2007-12-17 21:41

Re: 关于360压缩软件 DEB 包的一些技术分析

#5

帖子 careone » 2019-07-01 22:17

回4楼 astolia 兄弟:

------
careone 写了: ↑
2019-06-30 22:44
调试完成后,忘记删掉 井号了?

又不像windows非要先关闭进程才能删除文件,不用pkill并没有错
--------------

如果是真的想禁用这行,那么这个 选项后面就没有有效的操作指令,脚本运行时会报错的。
哪怕是加个空指令行,来消除这个警报。
----不要让无意义的警报打扰,或者困扰用户,尤其是非专业程序员用户。

示例(即在原文件中,添加一个冒号,用做空指令):

原 * DEBIAN/prerm 安装脚本内容:

#! /bin/bash

#set -e


case "$1" in
remove)
#pkill -9 -f 360zip 2>/dev/null
:
;;
esac
魁拔不死,天下不宁。
魁拔既死,天下不平。
--------------
Careone <emacslocale^126.com>
https://sourceforge.net/projects/emacslocale/files/
头像
careone
帖子: 839
注册时间: 2007-12-17 21:41

Re: 关于360压缩软件 DEB 包的一些技术分析

#6

帖子 careone » 2019-07-01 22:27

onlylove 写了: 2019-06-30 23:09 我不觉得一堆神魔乱舞的软件是什么好事,看国内安卓就知道了,该要的,不该要的,统统都要来再说,不给?不给我不启动,这样的软件,我觉得有还不如没有,还记得之前的windows和ie浏览器工具栏么,各种流氓捆绑,偷偷下载,然后疯狂弹窗,好不容易找了个安静点的地方,你还来?

你看你拆的这个,不就要了个required么
这个软件,可以当个药引子。多少还是有点价值的。懂行的朋友,完全可以拆包后,理顺了,再重新打包,方便众友。

有些东西,很烦人,但总有它存在的必要。

比如手机上的 UC 浏览器,都设置了不自动启动了,还是每天都二三十次的自动唤醒。
比如淘宝,天猫,锁屏状态,随随便便就能跑掉几十M,上百 M 的流量。我都想不通,它到底拿这些流量干什么去了。

再看看国内的软件行业,有几个不流氓的?
魁拔不死,天下不宁。
魁拔既死,天下不平。
--------------
Careone <emacslocale^126.com>
https://sourceforge.net/projects/emacslocale/files/
头像
astolia
论坛版主
帖子: 6703
注册时间: 2008-09-18 13:11

Re: 关于360压缩软件 DEB 包的一些技术分析

#7

帖子 astolia » 2019-07-02 0:01

careone 写了: 2019-07-01 22:17 如果是真的想禁用这行,那么这个 选项后面就没有有效的操作指令,脚本运行时会报错的。
理论上是这样,但实际上它那段代码在现在的bash里真的不会报错
onlylove
论坛版主
帖子: 5369
注册时间: 2007-01-14 16:23

Re: 关于360压缩软件 DEB 包的一些技术分析

#8

帖子 onlylove » 2019-07-02 1:14

重新打包?你来保证安全?我无意嘲讽第三方打包的,不过,这年头重新打包往里面加私货的好像不在少数吧,就不提中文版putty了,看看安卓里面各种包,被重新打包加广告的,重新打包加了额外下载脚本的,少?你如何保证网友下载到的,是正确的版本?网盘版xcode刚过去没多久吧?
头像
zzugyl
帖子: 360
注册时间: 2011-03-07 17:26
系统: Ubuntu 20.04.3 LTS

Re: 关于360压缩软件 DEB 包的一些技术分析

#9

帖子 zzugyl » 2019-07-02 9:36

有企业支持Linux系统是好事,毕竟企业要生存要养活员工,付出劳动是需要从某些地方拿到回报。
大家都来监督反馈,或许他们能改进一些。
如果一味的埋怨,Linux桌面只会变成少数人的玩具。
常在深闺人未识 一朝成名天下知
头像
zzugyl
帖子: 360
注册时间: 2011-03-07 17:26
系统: Ubuntu 20.04.3 LTS

Re: 关于360压缩软件 DEB 包的一些技术分析

#10

帖子 zzugyl » 2019-07-02 9:44

有了领头羊,更多的企业进入,也就有了竞争,到时候就是拼软件质量,拼用户体验。
不担心没有高质量软件。
常在深闺人未识 一朝成名天下知
头像
careone
帖子: 839
注册时间: 2007-12-17 21:41

Re: 关于360压缩软件 DEB 包的一些技术分析

#11

帖子 careone » 2019-07-02 21:26

astolia 写了: 2019-07-02 0:01
careone 写了: 2019-07-01 22:17 如果是真的想禁用这行,那么这个 选项后面就没有有效的操作指令,脚本运行时会报错的。
理论上是这样,但实际上它那段代码在现在的bash里真的不会报错
但是 DEB 包的 Lintian 里,有警报

-------------
W: 360zip: maintainer-script-empty prerm
W: 360zip: maintainer-script-ignores-errors prerm
-------------
魁拔不死,天下不宁。
魁拔既死,天下不平。
--------------
Careone <emacslocale^126.com>
https://sourceforge.net/projects/emacslocale/files/
头像
careone
帖子: 839
注册时间: 2007-12-17 21:41

Re: 关于360压缩软件 DEB 包的一些技术分析

#12

帖子 careone » 2019-07-02 21:33

onlylove 写了: 2019-07-02 1:14 重新打包?你来保证安全?我无意嘲讽第三方打包的,不过,这年头重新打包往里面加私货的好像不在少数吧,就不提中文版putty了,看看安卓里面各种包,被重新打包加广告的,重新打包加了额外下载脚本的,少?你如何保证网友下载到的,是正确的版本?网盘版xcode刚过去没多久吧?
我们不能保证任何事。
我们只能保证,“有”,还是“没有”这个东西,能干活的。当然,可能有副作用。

软件的质量,需要大家的共同见证。好评,还是中差评,一个人说了,不算。多数人的、主流的客观评价,才是值得我们认可的。

自由软件,开源软件,商业软件,是有不一样的游戏规则。商业软件需要生存。靠信仰不能养活人。

没有无缘无故的自由软件和开源软件。要么广告,要么利益。要么信仰。
魁拔不死,天下不宁。
魁拔既死,天下不平。
--------------
Careone <emacslocale^126.com>
https://sourceforge.net/projects/emacslocale/files/
头像
astolia
论坛版主
帖子: 6703
注册时间: 2008-09-18 13:11

Re: 关于360压缩软件 DEB 包的一些技术分析

#13

帖子 astolia » 2019-07-03 19:40

careone 写了: 2019-07-02 21:26 但是 DEB 包的 Lintian 里,有警报

-------------
W: 360zip: maintainer-script-empty prerm
W: 360zip: maintainer-script-ignores-errors prerm
-------------
是有警报,但这又如何呢?
careone 写了: 2019-07-01 22:17 不要让无意义的警报打扰,或者困扰用户,尤其是非专业程序员用户。
这些警报用户用常规手段(软件中心/apt)安装软件包时根本不会看到,你这句根本不成立

再说了,读一下这些警报的说明
https://lintian.debian.org/tags/maintai ... empty.html
这只是一个严重程度为minor的小提醒,出现了并不是什么了不得的大问题,下面列出的存在同样问题的包也不乏gnome这样的重量级软件。

https://lintian.debian.org/tags/maintai ... rrors.html
这个严重程度是normal,要高一点。但既然没有实际执行的代码,不用set -e也没有什么问题
头像
careone
帖子: 839
注册时间: 2007-12-17 21:41

Re: 关于360压缩软件 DEB 包的一些技术分析

#14

帖子 careone » 2019-07-03 22:05

astolia 写了: 2019-07-03 19:40
careone 写了: 2019-07-02 21:26 但是 DEB 包的 Lintian 里,有警报

-------------
W: 360zip: maintainer-script-empty prerm
W: 360zip: maintainer-script-ignores-errors prerm
-------------
是有警报,但这又如何呢?
careone 写了: 2019-07-01 22:17 不要让无意义的警报打扰,或者困扰用户,尤其是非专业程序员用户。
这些警报用户用常规手段(软件中心/apt)安装软件包时根本不会看到,你这句根本不成立

再说了,读一下这些警报的说明
https://lintian.debian.org/tags/maintai ... empty.html
这只是一个严重程度为minor的小提醒,出现了并不是什么了不得的大问题,下面列出的存在同样问题的包也不乏gnome这样的重量级软件。

https://lintian.debian.org/tags/maintai ... rrors.html
这个严重程度是normal,要高一点。但既然没有实际执行的代码,不用set -e也没有什么问题
的确,不影响功能和使用。
但是,作为一款商业公司开发的软件,有必要尽可能做到专业。
没有别的意思,只是单纯从技术角度,给出一点建议。不是批判。
------一个冒号就能解决的问题,没必要再让 warning 或者 error 出现。
如果一款软件,有新的共同开发者,或者维护者加入,看到 W 或者 E,第一反应都会去打开源文件看一看。
尽可能去避免或者减少别人的维护工作量或者审核量,也是功德一件。

再次申明一个观点:
不要让无意义的警报,无必要地打扰别人。
魁拔不死,天下不宁。
魁拔既死,天下不平。
--------------
Careone <emacslocale^126.com>
https://sourceforge.net/projects/emacslocale/files/
头像
astolia
论坛版主
帖子: 6703
注册时间: 2008-09-18 13:11

Re: 关于360压缩软件 DEB 包的一些技术分析

#15

帖子 astolia » 2019-07-04 0:48

careone 写了: 2019-07-03 22:05 ------一个冒号就能解决的问题,没必要再让 warning 或者 error 出现。
不要想当然信口开河好不好?对上面case那段代码是否报错犯下的想当然错误,还没吸取教训?
更何况,case那段还可以说是bash的问题,但 maintainer-script-empty 和 maintainer-script-ignores-errors 两个警告,我上面都给出链接了,你稍微读一下它们的说明就知道加冒号对这两个警告屁用没有,照报不误
回复