
Estoy usando Ubuntu-15.10. He instalado muchas aplicaciones además de las instalaciones básicas.
Ahora, me gustaría saber cuántos paquetes instalados tienen licencia GPL o licencias de terceros (por ejemplo, Fluendo).
¿Hay alguna manera de saber esto? ¿O necesito verificar manualmente todas y cada una de las licencias de cada aplicación instalada?
EDITAR:
El siguiente fragmento que utilicé para enumerar el nombre de varios archivos de licencia instalados.
find /usr/share/doc -type f -name copyright -exec grep "License\:" {} + | cut -f3 -d: | sort -u
Respuesta1
Las licencias de los paquetes se describen en /usr/share/doc/${package}/copyright
. Este archivo es necesario para especificar la licencia principal del paquete; muchos paquetes usan uncopyright
archivo legible por máquinaque enumera las licencias de cada archivo en el paquete fuente.
Para archivos legibles por máquina, puede utilizar la License:
línea que introduce las licencias:
awk '/^License:/ { print $2 }' /usr/share/doc/*/copyright | sort -u
Si está buscando una licencia documentada en /usr/share/common-licenses
, puede buscar menciones de ésta en los copyright
archivos;p.ejpara contar el número de paquetes con licencia GPL o LGPL:
grep -l GPL /usr/share/doc/*/copyright | wc -l
Para contar solo la cantidad de paquetes fuente, cuente la cantidad de archivos únicos (los paquetes binarios enviados desde un único paquete fuente tienen exactamente el mismo copyright
archivo o enlace al mismo archivo):
md5sum $(grep -l GPL /usr/share/doc/*/copyright) | sort -k1,1 -u | wc -l
Debsources proporciona varias formas de buscarcopyright
todos los archivos de Debian;aquí hay una sola líneapara recuperar la licencia de un solo archivo (si su paquete utiliza un formato legible por máquina). (La licencia de esa frase no está documentada, por lo que solo la vinculo, no la copio aquí).
Tenga en cuenta que dado que los copyright
archivos documentan las licencias de los paquetes fuente, es posible que documenten archivos que no se envían en paquetes binarios y no afectan la licencia del paquete binario; Este puede ser el caso, por ejemplo, de archivos con licencia GPL que sólo se utilizan durante la compilación de un paquete sin licencia GPL.
Respuesta2
La mayor parte de la información sobre licencias de software está disponible en/usr/share/doc/pkg-name/copyright
Aproximadamente se puede estimar el número de programas utilizados GPL
mediante:
grep -l GPL /usr/share/doc/*/copyright
Pero
grep
también incluirá archivos que sean enlaces en lugar de archivos normales. Entonces, recomiendo usarfind
de la siguiente manera:sudo find /usr/share/doc -name copyright -type f -exec grep -l "GPL" '{}' \; | wc -l
También incluirá archivos como
/usr/share/doc/ca-certificates/examples/ca-certificates-local/debian/copyright
. Si no desea que se cuenten, puede especificarlosmaxdepth
con buscar.
Ejemplo (en mi sistema):
$ 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
Tenga en cuenta que un software puede incluir más de una licencia por archivo en formato copyright
.
Respuesta3
El siguiente código me ayudará a enumerar las licencias instaladas de varias aplicaciones en Ubuntu 15.04.
find /usr/share/doc -type f -name copyright -exec grep "License\:" {} + | cut -f3 -d: | sort -u
Respuesta4
Solo tengo sistemas CentOS a mano, puedes mostrar el nombre del paquete y la información de la licencia con lo siguiente:
$ 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+
...
Debería poder hacer algo similar dpkg-query --license
en los sistemas Ubuntu.
Comoaquí, donde suele $ dpkg-query -f='${PackageSpec;-30}\t${Homepage}\n' -W "*"
mostrar solo un subconjunto de información por paquete. Verifique las dpkg-query
opciones para ver si puede obtener el formulario de licencia allí.
Otropublicación interesanteal respecto, habla exactamente de esta problemática y que:
Por el momento, esto no tiene suficiente soporte, aunque se está realizando un esfuerzo para proporcionar información legible por máquina en los
/usr/share/doc/*/copyright
archivos.