2016-01-27 73 views
1

我想我的服務器上的所有已安裝的軟件包許可證,我可以使用(source is from 2013 post)轉儲這一切:如何在Ubuntu中列出所有已安裝的軟件包許可證?

packages=`dpkg --get-selections | awk '{ print $1 }'` for package in $packages; do echo "$package: "; cat /usr/share/doc/$package/copyright; echo ""; echo ""; done > ~/licenses.txt 

但產量與所有的每個包的版權數據巨大的無用文件。我需要這樣的東西:

package : package_name  licence: licence_name 

是否有解析器或其他工具來獲取這樣的數據?

回答

3

儘管目前正在努力在文件/usr/share/doc/*/copyright文件中提供機器可讀信息,但您所嘗試的內容目前得不到支持。參見例如this excerpt

Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ 
Upstream-Name: at 
Source: git://anonscm.debian.org/collab-maint/at.git 
Comment: This package was debianized by its author Thomas Koenig 
<[email protected]>, taken over and re-packaged first by Martin 
Schulze <[email protected]> and then by Siggy Brentrup <[email protected]>, 
and then taken over by Ryan Murray <[email protected]>. 
. 
In August 2009 the upstream development and Debian packaging were taken over 
by Ansgar Burchardt <[email protected]> and Cyril Brulebois <[email protected]>. 
. 
This may be considered the experimental upstream source, and since there 
doesn't seem to be any other upstream source, the only upstream source. 

Files: * 
Copyright: 1993-1997, Thomas Koenig <[email protected]> 
      1993,  David Parsons 
      2002, 2005, Ryan Murray <[email protected]> 
License: GPL-2+ 

Files: getloadavg.c 
Copyright: 1985-1995, Free Software Foundation Inc 
License: GPL-2+ 

Files: posixtm.* 
Copyright: 1989-2007, Free Software Foundation Inc 
License: GPL-3+ 

Files: parsetime.pl 
Copyright: 2009, Ansgar Burchardt <[email protected]> 
License: ISC 

License: GPL-2+ 
This program is free software; you can redistribute it 
and/or modify it under the terms of the GNU General Public 
License as published by the Free Software Foundation; either 
version 2 of the License, or (at your option) any later 
version. 

詳見說明書(上面鏈接)中http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/

正如您所看到的,每個軟件包必須有單個許可證的基本假設是錯誤的。可能有多個許可證每個文件 - 根據您要解決的問題,當然可能會忽略其中的許多許可證(例如,如果您想調查是否有Apache下的東西許可證,對於過渡到這種新格式的軟件包,這應該很容易做到)。

這是Debian Jessie在2015年發佈的新功能;舊版本的Debian沒有這樣的東西。如果您需要使用較舊的軟件包來審覈系統,那麼您可以做的最好的做法可能是grep copyright文件中看起來像GPL,BSD,MIT等的碎片,然後希望您不會錯過太多;但希望在一些脆弱的挑剔之上似乎對任何適當的法律工作都是詛咒,我認爲我們可以認爲這是你嘗試這種做法的原因。更好的方法可能是爲您正在審計的軟件包找到當前的copyright文件,其中包含大致機器可讀的信息,並希望(再次有這個詞)它們適用於您已安裝的舊版本。

(爲便於比較,老版本的,也可在http://metadata.ftp-master.debian.org/changelogs/main/a/at/爲你檢查。)

我不按照Ubuntu的非常密切的任何時間較長,但由於承擔了幾個版本他們拿起這種變化背部。確實,http://packages.ubuntu.com/xenial/at似乎有相同的copyright文件。

+0

通過非正式的審查,我有權訪問的Jessie系統返回248'grep -l'^格式:'/ usr/share/doc/*/copyright | wc -l'和569代表'grep -L'。因此,我們安裝的軟件包中不到1/3已轉換爲新格式。如果您有很多舊版軟件包,該數字可能會較低。 – tripleee

+0

那麼,所要求的數據是用於法律工作的,而且3年後仍然是一個問題,這是非常令人失望的。謝謝你的全面回答。 – Rada

相關問題