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