Sisteminizde yüklü olan her şeyin lisansını nasıl buluyorsunuz?


18

Sistemimde yüklü her yazılım paketi için lisansı veren bir komut dosyası yazmak istiyorum.

Kullanarak dpkg --get-selectionsyüklü her şeyin listesini alabilirim. Ancak, her paket için lisans bilgilerini almanın bir yolunu göremiyorum. Örneğin, aptitude showher paketin özelliklerini almak için kullanabilirsiniz , ancak bu lisans içermez:

$ 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/

Her paketle lisansı ilişkilendiren bir üçüncü taraf deposu var mı?

Her kaynak paketi indirmek ve lisans bilgileri için incelemek acı verici gelebilir, ancak belki de en iyi yol budur.


Bu noktada bu önemsiz görünüyor. Askubuntu.com/questions/88403/… olası kopyası Ayrıca bkz: serverfault.com/questions/334189/…
Kevin Bowen


Yanıtlar:


14

İşte sonunda bunu yaptım. ( ~/licenses.txtmevcut tüm lisanslarla sonuçlanır /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
Bu çok dolambaçlı. Sadece grep '^' /usr/share/doc/*/copyrightaynı bilgileri alırsınız veya tail -n 10000 /usr/share/doc/*/copyrighther satırda dosya adı öneki istemiyorsanız.
üçlü

12

Debian 2012 yılında, gelecekte lisansları okunabilir hale getirecek Makine tarafından okunabilir debian / copyright belgesini yayınladı . Şu anda, tüm paketler bu biçimi kullanmamaktadır. Komuta

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

hala çok fazla çöp veriyor. Daha iyi bir çıktı için muhtemelen Format:alan değerine bağlı olarak her dosyayı ayrıştıran bir araca ihtiyacınız vardır .

Dosya yapısı tamamen farklıdır /usr/share/common-licenses/(thx - /programming/1884753/license-info-of-a-deb-package#1884785 ). Debian tabanlı dağıtımlarda kullanılan ana lisansları listeler (ve lisans metinlerini içerir). Bu liste paket tarafından sağlanır base-filesve kurulu paketler listesine bağlı değildir , ancak ortalama patron / müşteri için muhtemelen yeterli bilgi vardır.

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

Güncelleme Az çok sezgisel tarama ile telif hakkı dosyalarından lisans bilgilerini ayıklayan basit bir komut satırı çözümü yayınladım. https://github.com/daald/dpkg-licenses . Denemek için çekinmeyin. Herhangi bir öneri bekliyoruz.


Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.