システムにインストールされているすべてのライセンスをどのようにして見つけますか?


18

システムにインストールされているすべてのソフトウェアパッケージのライセンスを出力するスクリプトを作成したい。

を使用しdpkg --get-selectionsて、インストールされているすべてのリストを取得できます。ただし、各パッケージのライセンス情報を取得する方法がわかりません。たとえばaptitude show、各パッケージのプロパティを取得するために使用できますが、ライセンスは含まれていません。

$ aptitude show apache2
Package: apache2
State: installed
Automatically installed: no
Version: 2.2.14-5ubuntu8.6
Priority: optional
Section: httpd
Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
Uncompressed Size: 36.9k
Depends: apache2-mpm-worker (= 2.2.14-5ubuntu8.6) | apache2-mpm-prefork (= 2.2.14-5ubuntu8.6) | apache2-mpm-event (= 2.2.14-5ubuntu8.6) | apache2-mpm-itk (= 2.2.14-5ubuntu8.6),
         apache2.2-common (= 2.2.14-5ubuntu8.6)
Provided by: apache2-mpm-event, apache2-mpm-itk, apache2-mpm-prefork, apache2-mpm-worker
Description: Apache HTTP Server metapackage
 The Apache Software Foundation's goal is to build a secure, efficient and extensible HTTP server as standards-compliant open source software. The result has long been the
 number one web server on the Internet. 

 It features support for HTTPS, virtual hosting, CGI, SSI, IPv6, easy scripting and database integration, request/response filtering, many flexible authentication schemes, and
 more.
Homepage: http://httpd.apache.org/

ライセンスを各パッケージに関連付けるサードパーティのリポジトリはありますか?

すべてのソースパッケージをダウンロードしてライセンス情報を調べるのは苦痛に思えますが、おそらくそれが最善の方法です。


これは、この時点では重要ではないようです。可能性のある重複askubuntu.com/questions/88403/... 参照:serverfault.com/questions/334189/...
ケビン・ボーエン


回答:


14

これが私がやったことです。(結果はに~/licenses.txt存在するすべてのライセンスになります/usr/share/doc

$ 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

3
これは非常に困難です。単にgrep '^' /usr/share/doc/*/copyright同じ情報を取得するか、tail -n 10000 /usr/share/doc/*/copyrightすべての行にファイル名の接頭辞が必要ない場合。
トリプリー

12

2012年に、Debianは文書を機械可読debian / copyrightとしてリリースしました。これにより、将来ライセンスが読みやすくなります。現在、すべてのパッケージがこの形式を使用しているわけではありません。コマンド

grep -h '^License:' /usr/share/doc/*/copyright | sort -i | uniq -ic | sort -n

まだ多くのゴミを返します。より良い出力を得るには、おそらくFormat:フィールド値に応じて各ファイルを解析するツールが必要です。

まったく異なる方法は、/usr/share/common-licenses//programming/1884753/license-info-of-a-deb-package#1884785へのthx )のファイル構造です。debianベースのディストリビューションで使用される主なライセンスをリストします(そしてそれらのライセンステキストを含みます)。このリストは、パッケージで提供さbase-filesていないインストールされたパッケージのリストにリンクされているが、それはおそらく平均的な上司/顧客のための十分な情報です。

ls /usr/share/common-licenses/
Apache-2.0  BSD   GFDL-1.2  GPL    GPL-2  LGPL    LGPL-2.1
Artistic    GFDL  GFDL-1.3  GPL-1  GPL-3  LGPL-2  LGPL-3

更新 私は、多くの発見的手法で著作権ファイルからライセンス情報を抽出する簡単なコマンドラインソリューションを公開しました。https://github.com/daald/dpkg-licenses。試してみてください。どんな提案でも大歓迎です。


4

私はdpkg-licenses(https://github.com/daald/dpkg-licenses)を見つけました。

レポジトリを複製するだけ

git clone https://github.com/daald/dpkg-licenses.git

それから

./dpkg-licenses> licenses.txt

そして、あなたはあなたが夢見ることができる今日の最高のソフトウェア、バージョンとライセンスの表形式リストをインストールしています...


@Daniel Alderはすでに別の回答askubuntu.com/a/620069/24203で同じリンクを参照しており、ツールの作成者のようです:)
IsaacS
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.