
我使用的是 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
文件中提供機器可讀的資訊。