시스템에 설치된 모든 라이센스를 어떻게 찾습니까?


18

시스템에 설치된 모든 소프트웨어 패키지의 라이센스를 출력하는 스크립트를 작성하고 싶습니다.

사용하여 dpkg --get-selections설치된 모든 목록을 얻을 수 있습니다. 그러나 각 패키지의 라이센스 정보를 얻을 수있는 방법이 없습니다. 예를 들어, aptitude show각 패키지의 속성을 얻는 데 사용할 수 있지만 라이센스는 포함되어 있지 않습니다.

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

라이센스를 각 패키지와 상관시키는 타사 저장소가 있습니까?

모든 소스 패키지를 다운로드하여 라이센스 정보를 검사하는 것이 고통 스럽지만 가장 좋은 방법 일 수 있습니다.


이 시점에서 이것은 사소한 것처럼 보입니다. askubuntu.com/questions/88403/의 가능한 복제본 참조 : serverfault.com/questions/334189/…
Kevin Bowen


답변:


14

여기 내가 한 일이 있습니다. (에 ~/licenses.txt존재하는 모든 라이센스로 결과 /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
이것은 매우 원형입니다. 단순히 grep '^' /usr/share/doc/*/copyright동일한 정보를 얻거나 tail -n 10000 /usr/share/doc/*/copyright모든 줄에 파일 이름 접두사를 원하지 않는 경우 간단 합니다.
tripleee

12

2012 년 데비안 은 향후 머신 라이센스를 읽을 수있게 해주는 기계가 읽을 수있는 데비안 / 저작권 문서를 발표했습니다 . 현재 모든 패키지가이 형식을 사용하는 것은 아닙니다. 명령

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

여전히 많은 쓰레기를 반환합니다. 더 나은 출력을 위해서는 Format:필드 값 에 따라 각 파일을 구문 분석하는 도구가 필요할 것입니다 .

완전히 다른 방법은 /usr/share/common-licenses/( /programming/1884753/license-info-of-a-deb-package#1884785 의 파일 구조) 파일 구조입니다 . 데비안 기반 배포판에 사용 된 기본 라이센스 목록과 라이센스 텍스트가 포함되어 있습니다. 이 목록은 패키지에서 제공 base-files되고 있지 설치된 패키지 목록에 연결되어 있지만, 아마도 평균 상사 / 고객에 대한 충분한 정보입니다.

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

업데이트 방금 휴리스틱이 많은 저작권 파일에서 라이센스 정보를 추출하는 간단한 명령 줄 솔루션을 게시했습니다. https://github.com/daald/dpkg-licenses . 자유롭게 사용해보십시오. 어떤 제안이라도 환영합니다.


4

방금 dpkg-licenses ( https://github.com/daald/dpkg-licenses )를 우연히 발견했습니다 .

레포를 복제하십시오.

자식 클론 https://github.com/daald/dpkg-licenses.git

그때

./dpkg 라이센스> licenses.txt

그리고 당신은 당신이 꿈꾸는 최고의 소프트웨어가 설치된 최신 버전, 라이센스 및 표 목록을 가지고 있습니다 ...


@Daniel Alder는 이미 다른 답변 askubuntu.com/a/620069/24203 에서 동일한 링크를 언급 했으며 도구의 저자 인 것 같습니다 :)
IsaacS
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.