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はさまざまな検索方法を提供しますすべての Debiancopyright
ファイル;これはラインですそのパッケージがコンピュータで読み取り可能な形式を使用している場合は、個々のファイルのライセンスを検索してください。 (該当する行のライセンスは文書化されていません。ここにコピーするのではなく、リンクだけを歩きます。)
これらの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
現在、機械が読み取り可能な情報をファイルとして提供するための努力が行われていますが、それに対するサポートは不十分です。