설치하는 모든 애플리케이션/패키지의 라이센스를 어떻게 찾나요?

설치하는 모든 애플리케이션/패키지의 라이센스를 어떻게 찾나요?

우분투-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현재, 기계가 읽을 수 있는 정보를 파일로 제공하기 위한 노력이 이루어지고 있지만 이에 대한 지원은 미흡합니다 .

관련 정보