如何找到我安裝的每個應用程式/軟體包的許可證?

如何找到我安裝的每個應用程式/軟體包的許可證?

我使用的是 Ubuntu-15.10。除了普通安裝之外,我還安裝了許多應用程式。

現在,我想知道有多少已安裝的軟體包是根據 GPL 或第三方授權(例如 Fluendo)獲得許可的。

有什麼辦法可以查出這一點嗎?或者我是否需要手動檢查每個已安裝應用程式的每個許可證?

編輯:

下面的程式碼片段我用來列出各種已安裝的許可證文件的名稱。

find /usr/share/doc -type f -name copyright -exec grep "License\:" {} + | cut -f3 -d: | sort -u

答案1

軟體包的許可證在 中進行了描述/usr/share/doc/${package}/copyright。需要該文件來指定軟體包的主許可證;許多包使用機器可讀copyright文件其中列出了來源包中每個文件的許可證。

對於機器可讀的文件,您可以使用License:引入許可證的行:

awk '/^License:/ { print $2 }' /usr/share/doc/*/copyright | sort -u

如果您正在尋找 中記錄的許可證/usr/share/common-licenses,您可以在文件中找到這些許可證的提及copyright例如計算根據 GPL 或 LGPL 許可的軟體包數量:

grep -l GPL /usr/share/doc/*/copyright | wc -l

要僅計算來源包的數量,請計算唯一文件的數量(從單一來源包發出的二進位包具有完全相同的copyright文件,或連結到同一文件):

md5sum $(grep -l GPL /usr/share/doc/*/copyright) | sort -k1,1 -u | wc -l

Debsources 提供了多種搜尋方式Debian 的所有copyright文件;這是一行檢索單一文件的許可證(如果其包使用機器可讀格式)。 (該單行的許可證沒有記錄,所以我只是連結到它,而不是在此處複製它。)

請注意,由於這些copyright文件記錄了來源包的許可證,因此它們很可能會記錄未在二進位包中提供的文件,並且不會影響二進位包的許可證;例如,GPL 許可的文件就屬於這種情況,這些文件僅在建置非 GPL 許可的軟體包期間使用。

答案2

大多數軟體的許可資訊可在/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

$ sudo find /usr/share/doc -name copyright -type f -exec grep -l "GPL" '{}' \; | wc -l
1889

請注意,軟體中的每個文件可能包含多個許可證copyright

答案3

以下程式碼將幫助我列出 Ubuntu 15.04 上各種應用程式已安裝的授權。

find /usr/share/doc -type f -name copyright -exec grep "License\:" {} + | cut -f3 -d: | sort -u

答案4

我手邊只有 CentOS 系統,您可以使用以下命令顯示軟體包名稱和許可證資訊:

$ rpm -qa --qf "%{name}: %{license}\n"
...
ncurses: MIT
cairo: LGPLv2 or MPLv1.1
dbus-python: MIT
media-player-info: BSD
dbus-x11: GPLv2+ or AFL
NetworkManager: GPLv2+
...

您應該能夠dpkg-query --license在 Ubuntu 系統上執行類似的操作。

喜歡這裡,他用來$ dpkg-query -f='${PackageSpec;-30}\t${Homepage}\n' -W "*"僅顯示每個包的一部分資訊。檢查dpkg-query選項以查看您是否可以在那裡取得許可證表格。

其他有趣的貼文關於這一點,準確地討論了這個問題:

目前,這方面的支援很差,儘管正在努力在/usr/share/doc/*/copyright文件中提供機器可讀的資訊。

相關內容