4

Ubuntu サーバーにインストールされているすべてのパッケージのライセンスを取得したいのですが、次を使用してすべてをダンプできます (この 2013 年の投稿):

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

しかし、出力は、各パッケージのすべての著作権データを含む、役に立たない巨大なファイルです。次のようなものが必要です:

package: package_name        licence: licence_name

このようなデータを取得するためのパーサーまたはその他のツールはありますか?

4

1 に答える 1

4

あなたが試みていることは、現時点では十分にサポートされていませんが、ファイル/usr/share/doc/*/copyrightファイルで機械可読情報を提供するための努力が進行中です。たとえば、次の抜粋を参照してください。

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
 <ig25@rz.uni-karlsruhe.de>, taken over and re-packaged first by Martin
 Schulze <joey@debian.org> and then by Siggy Brentrup <bsb@winnegan.de>,
 and then taken over by Ryan Murray <rmurray@debian.org>.
 .
 In August 2009 the upstream development and Debian packaging were taken over
 by Ansgar Burchardt <ansgar@debian.org> and Cyril Brulebois <kibi@debian.org>.
 .
 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 <ig25@rz.uni-karlsruhe.de>
           1993,       David Parsons
           2002, 2005, Ryan Murray <rmurray@debian.org>
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 <ansgar@debian.org>
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/の仕様 (上記のリンク) を参照してください。

ご覧のとおり、パッケージごとに 1 つのライセンスが必ず存在するという基本的な仮定は誤りです。ファイルごとに複数のライセンスが存在する場合があります。解決しようとしている問題によっては、それらの多くを無視することももちろん可能です (たとえば、Apache ライセンスの下にあるものがあるかどうかを調査したい場合は、この新しい形式に移行したパッケージの場合、これは簡単に実行できるはずです)。

これは、2015 年にリリースされた Debian Jessie の新機能です。古いバージョンの Debian には、このようなものはありません。古いパッケージを含むシステムを監査する必要がある場合にできる最善の方法は、copyrightGPL、BSD、MIT などのように見えるフラグメントのファイルを grep して、あまり不足していないことを願うことです。しかし、いくつかの薄っぺらなgreppingに加えて、適切な法的作業にとって嫌悪感があるように見えることを願っています。これが、あなたがこれを試みている理由であると推測できます。より良いアプローチはcopyright、監査しているパッケージの現在のファイルを見つけて、大まかに機械で読み取り可能な情報を見つけて、インストールした古いバージョンにも適していることを期待することです (その言葉が再びあります)。

(比較のために、古いバージョンもhttp://metadata.ftp-master.debian.org/changelogs/main/a/at/で入手できます。)

私はもう Ubuntu を厳密にはフォローしていませんが、数バージョン前からこの変更を取り入れていると思います。確かに、http://packages.ubuntu.com/xenial/atには同じcopyrightファイルがあるようです。

于 2016-01-28T03:54:48.543 に答える