如何找到我安装的每个应用程序/软件包的许可证?

SHW*_*SHW 6 ubuntu licenses

我正在使用 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)

Ste*_*itt 6

包的许可证在 中描述/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 许可的包时使用。


Pan*_*dya 3

大多数软件的许可信息可在/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