我正在使用 Ubuntu-15.10。除了普通安装之外,我还安装了许多应用程序。
现在,我想知道有多少已安装的软件包是根据 GPL 或第三方许可(例如 Fluendo)获得许可的。
有没有办法找出这个?或者我是否需要手动检查每个已安装应用程序的每个许可证?
编辑:
下面的片段我用来列出各种已安装的许可证文件的名称。
find /usr/share/doc -type f -name copyright -exec grep "License\:" {} + | cut -f3 -d: | sort -u
Run Code Online (Sandbox Code Playgroud)
包的许可证在 中描述/usr/share/doc/${package}/copyright
。需要这个文件来指定包的主许可证;许多软件包使用机器可读copyright
文件,其中列出了源软件包中每个文件的许可证。
对于机器可读的文件,您可以使用License:
引入许可证的行:
awk '/^License:/ { print $2 }' /usr/share/doc/*/copyright | sort -u
Run Code Online (Sandbox Code Playgroud)
如果您正在寻找 中记录的许可证/usr/share/common-licenses
,您可以查找文件中提及的许可证copyright
;例如,计算 GPL 或 LGPL 许可的软件包数量:
grep -l GPL /usr/share/doc/*/copyright | wc -l
Run Code Online (Sandbox Code Playgroud)
要仅计算源包的数量,请计算唯一文件的数量(从单个源包提供的二进制包具有完全相同的copyright
文件,或指向同一文件的链接):
md5sum $(grep -l GPL /usr/share/doc/*/copyright) | sort -k1,1 -u | wc -l
Run Code Online (Sandbox Code Playgroud)
Debsources 提供了多种搜索Debiancopyright
文件的方法;这是检索单个文件许可证的单行代码(如果其包使用机器可读格式)。(该单行的许可证没有记录在案,所以我只是链接到它,而不是在这里复制它。)
请注意,由于这些copyright
文件记录了源包的许可证,因此它们可能记录了未在二进制包中提供的文件,并且不会影响二进制包的许可证;例如,GPL 许可的文件就是这种情况,这些文件仅在构建非 GPL 许可的包时使用。
大多数软件的许可信息可在/usr/share/doc/pkg-name/copyright
您可以粗略地估计使用的程序数量GPL
:
grep -l GPL /usr/share/doc/*/copyright
但grep
还将包括链接文件而不是常规文件。所以,我推荐find
使用如下:
sudo find /usr/share/doc -name copyright -type f -exec grep -l "GPL" '{}' \; | wc -l
它还将包括类似的文件/usr/share/doc/ca-certificates/examples/ca-certificates-local/debian/copyright
,如果您不希望它们计数,您可以maxdepth
使用 find 指定。
示例(在我的系统上):
$ grep -l GPL /usr/share/doc/*/copyright | wc -l
1949
Run Code Online (Sandbox Code Playgroud)
$ sudo find /usr/share/doc -name copyright -type f -exec grep -l "GPL" '{}' \; | wc -l
1889
Run Code Online (Sandbox Code Playgroud)
请注意,软件中的每个文件可能包含多个许可证copyright
。
归档时间: |
|
查看次数: |
7389 次 |
最近记录: |