Làm thế nào để bạn tìm thấy giấy phép cho mọi thứ được cài đặt trên hệ thống của bạn?


18

Tôi muốn viết một tập lệnh xuất ra giấy phép cho mọi gói phần mềm được cài đặt trên hệ thống của tôi.

Sử dụng dpkg --get-selectionstôi có thể nhận được danh sách tất cả mọi thứ được cài đặt. Tuy nhiên, tôi không thấy cách lấy thông tin giấy phép cho mỗi gói. Ví dụ: tôi có thể sử dụng aptitude showđể lấy các thuộc tính của từng gói, nhưng không bao gồm giấy phép:

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

Có một kho lưu trữ của bên thứ ba có liên quan đến giấy phép cho mỗi gói không?

Nghe có vẻ đau đớn khi tải xuống mọi gói nguồn và kiểm tra thông tin cấp phép, nhưng có lẽ đó là cách tốt nhất.


Điều này xuất hiện không tầm thường ở điểm này. Bản sao có thể có của Askubfox.com/questions/88403/ trên Xem thêm: serverfault.com/questions/334189/ợi
Kevin Bowen


Câu trả lời:


14

Đây là những gì tôi đã làm. (kết quả ~/licenses.txtvới tất cả các giấy phép tồn tại /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
Đây là rất tròn. Đơn giản là grep '^' /usr/share/doc/*/copyrightbạn sẽ có được nhiều thông tin giống nhau hoặc tail -n 10000 /usr/share/doc/*/copyrightnếu bạn không muốn tiền tố tên tệp trên mỗi dòng.
tripleee

12

Vào năm 2012, Debian đã phát hành tài liệu debian / bản quyền có thể đọc bằng máy sẽ giúp giấy phép có thể đọc được trong tương lai. Hiện tại, không phải tất cả các gói sử dụng định dạng này. Lệnh

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

vẫn trả lại rất nhiều rác. Để có đầu ra tốt hơn, có lẽ bạn cần một công cụ phân tích từng tệp tùy thuộc vào Format:giá trị trường.

Một cách hoàn toàn khác là cấu trúc tệp trong /usr/share/common-licenses/(thx đến /programming/1884753/license-info-of-a-deb-package#1884785 ). Nó liệt kê các giấy phép chính được sử dụng trong các bản phân phối dựa trên debian (và chứa các văn bản giấy phép của chúng). Danh sách này được cung cấp bởi gói base-fileskhông được liên kết với danh sách các gói đã cài đặt, nhưng có lẽ nó đủ thông tin cho ông chủ / khách hàng trung bình.

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

Cập nhật Tôi vừa xuất bản một giải pháp dòng lệnh đơn giản trích xuất thông tin giấy phép từ các tệp bản quyền với rất nhiều phương pháp phỏng đoán. https://github.com/daald/dpkg-licenses . Hãy thử nó. Mọi góp ý đều được chào đón.


4

Tôi chỉ vấp ngã trên giấy phép dpkg ( https://github.com/daald/dpkg-licenses ).

Chỉ cần nhân bản repo

git clone https://github.com/daald/dpkg-licenses.git

Sau đó

./dpkg-licenses> License.txt

Và bạn có phần mềm tốt nhất hiện nay được cài đặt, các phiên bản và danh sách bảng giấy phép mà bạn có thể mơ ước ...


@Daniel Alder đã được đề cập đến cùng một liên kết trong một câu trả lời khác là Askubfox.com/a/620069/24203 và anh ta dường như là tác giả của công cụ :)
IsaacS
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.