采用Apache 2.0许可的.deb包在Ubuntu 17.10中被误报为专有软件求助
关于Deb包许可证被误标为“Proprietary”的排查思路
我来帮你捋捋可能导致这个问题的几个点:
Ubuntu 17.10的许可证识别库版本限制
17.10是比较老旧的版本(早已停止官方支持),它自带的许可证解析工具可能对Apache-2.0标识符的支持不够完善。哪怕你严格遵循了1.0版copyright格式规范,旧版本的dpkg或lintian也可能没把这个标识符正确映射到开源许可证分类,反而默认归为了Proprietary。copyright文件的格式细节疏漏
整体结构符合规范的前提下,一些小细节也可能触发识别错误:- 检查
Files: *、Copyright:、License:这几行之间是否有空行分隔?Debian的copyright格式要求每个字段块之间必须有空行,比如:
要是没留空行,解析工具可能会把内容当成一个整体,无法正确识别License字段。Files: * Copyright: 1998-2018 My Name License: Apache-2.0 - 有没有补充许可证的文本引用?按照规范,最好在License字段后加上一行说明,告诉系统去哪里找完整许可证文本:
缺少这行可能让工具无法确认许可证的有效性,从而误判为专有。License: Apache-2.0 On Debian systems, the complete text of the Apache 2.0 license can be found in /usr/share/common-licenses/Apache-2.0
- 检查
包构建过程中的潜在问题
试试用lintian -i your-package.deb检查你的deb包,lintian是Debian/Ubuntu的包检查工具,它会指出copyright文件里的格式错误或者许可证识别问题。如果有类似copyright-file-lacks-license-text的警告,那就是直接线索。工具链的兼容性bug
如果你是用dh-make、debuild这类工具构建的包,会不会在构建过程中自动生成了不符合规范的copyright片段?部分旧版本的构建工具对1.0格式的支持存在bug,可能覆盖你手动编写的内容。建议你对比构建前后的debian/copyright文件,确认内容没有被篡改。
内容的提问来源于stack exchange,提问作者Paulo Moura
相关产品推荐
相关产品推荐

