설치된 각 애플리케이션/패키지의 라이센스를 어떻게 알 수 있나요?

설치된 각 애플리케이션/패키지의 라이센스를 어떻게 알 수 있나요?

우분투-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는 다양한 검색 방법을 제공합니다.데비안의 모든 copyright파일;여기 한 줄짜리가 있습니다단일 파일의 라이센스를 검색합니다(해당 패키지가 기계 판독 가능 형식을 사용하는 경우). (해당 한 줄의 라이센스는 문서화되어 있지 않으므로 여기에 복사하는 것이 아니라 링크만 겁니다.)

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. 계산에 포함하지 않으려면 maxdepthfind로 지정할 수 있습니다.

예(내 시스템):

$ 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 --licenseUbuntu 시스템 에서도 비슷한 작업을 수행할 수 있어야 합니다 .

좋다여기, 그는 $ dpkg-query -f='${PackageSpec;-30}\t${Homepage}\n' -W "*"패키지당 정보의 하위 집합만 표시하는 데 사용합니다. dpkg-query거기에서 라이센스 양식을 얻을 수 있는지 확인하려면 옵션을 확인하십시오 .

또 다른흥미로운 게시물이것에 대해 정확히 이 문제에 대해 이야기합니다.

현재로서는 이 기능이 제대로 지원되지 않지만 /usr/share/doc/*/copyright파일에 기계가 읽을 수 있는 정보를 제공하려는 노력이 진행 중입니다.

관련 정보