确定一个包是不是包含 GPL 许可证

Posted

技术标签:

【中文标题】确定一个包是不是包含 GPL 许可证【英文标题】:Identify whether a package contains GPL license确定一个包是否包含 GPL 许可证 【发布时间】:2014-07-31 19:11:15 【问题描述】:

我有几千个包含 GPL/APL/BSD 许可证的软件包。目前,为了确定一个包是否包含 GPL 许可证,我正在遍历每个包以查找 LICENSE 文件,然后检查其内容并将其与示例 GPL 模板匹配。我遵循启发式,如果匹配率大于 90%,那么它就是 GPL 许可证。

 如果匹配 > 0.9: license = True 
但我认为这不是正确的做法,而且速度也很慢。

所以我在想,如果我知道一个包中所有文件的 sha1sum、sha256sum 的值,这是否有助于确定包是否包含 GPL 许可证?

例如,在我的包中,许可的 sha1sum 值为:

b7077bddb5a97beca2da00c07cc56b602e2ac6cc 许可证

那么如果 LICENSE 的内容相同,那么对应的 sha1sum 值是否相同?如果那是真的,那么我可以用 sha1sum 值识别 LICENSE 文件。还有另一种方法来识别包中的 LICENSE 文件吗?

【问题讨论】:

如果两个文件相等,则它们的哈希值相等。 你能更详细地解释一下@OliCharlesworth。这与 GPL 许可证有什么关系 @Rahul 那是你应该能够自己回答的问题。 这可能是一个很好的问题,可以转移到opensource.stackexchange.com 附带说明,正确检测许可证并非易事。请参阅 github.com/nexB/scancode-toolkit 或 Fossology 了解可以执行此操作的工具 【参考方案1】:

GPL 有多个版本,因此您需要检查其中的几个版本。此外,有些项目不直接包含许可证/版权文件,而是说“这个项目是在 GPL v2 下获得许可”的影响。所以你会发现一些,甚至可能是大多数,但不是所有的项目都使用 GPL(或任何其他许可证)。

【讨论】:

【参考方案2】:

根本没有关系。 SHA-1 是一种哈希算法,可用于检查文件的完整性或检查文件是否被篡改。它不以任何方式描述信息(虽然,可以使用哈希来识别文件,所以如果您知道 GPL 许可文件的哈希,您可以计算文件的哈希和并比较它以查看它是否匹配)。

【讨论】:

以上是关于确定一个包是不是包含 GPL 许可证的主要内容,如果未能解决你的问题,请参考以下文章

开源的许可证GPLLGPLBSDApache 2.0

java中的二维码图像生成器(开源但没有GPL)

常见开源许可证简述

开源许可证GPL,BSD,MIT,Mozilla,Apache和LGPL的区别

代码开源许可证 区别 Apache MIT GPL

[转帖]GNU GPL 许可证常见问题解答