インストールされている各アプリケーション/パッケージのライセンスを確認するにはどうすればよいですか?

インストールされている各アプリケーション/パッケージのライセンスを確認するにはどうすればよいですか?

私は 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はさまざまな検索方法を提供していますcopyrightDebianのファイルすべて;ここにワンライナーがあります単一ファイルのライセンスを取得します (パッケージが機械可読形式を使用している場合)。 (そのワンライナーのライセンスは文書化されていないため、ここにコピーするのではなく、リンクするだけです。)

これらのファイルはソース パッケージのライセンスを文書化しているためcopyright、バイナリ パッケージに同梱されておらず、バイナリ パッケージのライセンスに影響を与えないファイルも文書化される可能性があることに注意してください。たとえば、GPL ライセンスのないパッケージのビルド時にのみ使用される GPL ライセンスのファイルなどがこれに該当します。

答え2

ソフトウェアのライセンス情報のほとんどは、/usr/share/doc/pkg-name/copyright

使用しているプログラムの数は、おおよそGPL次の方法で見積もることができます。

  • grep -l GPL /usr/share/doc/*/copyright

    ただし、grep通常のファイルではなくリンクされているファイルも含まれます。そのため、find次のように usinf を使用することをお勧めします。

  • 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。カウントに含めたくない場合は、maxdepthfind で指定できます。

例 (私のシステムの場合):

$ 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 --licenseUbuntu システムでも同様のことができるはずです。

のようにここ、ここでは$ dpkg-query -f='${PackageSpec;-30}\t${Homepage}\n' -W "*"パッケージごとに情報のサブセットのみを表示するために使用されています。dpkg-queryオプションをチェックして、そこでライセンス フォームを取得できるかどうかを確認します。

別の興味深い投稿これについては、まさにこの問題とそのことについて語っています。

現時点では、この機能のサポートは不十分ですが、/usr/share/doc/*/copyrightファイル内に機械可読な情報を提供するための取り組みが進行中です。

関連情報