Quiero escribir un script que genere la licencia para cada paquete de software instalado en mi sistema.
Utilizando dpkg --get-selections
puedo obtener una lista de todo lo instalado. Sin embargo, no veo una manera de obtener la información de licencia para cada paquete. Por ejemplo, puedo usar aptitude show
para obtener las propiedades de cada paquete, pero eso no incluye la licencia:
$ aptitude show apache2
Package: apache2
State: installed
Automatically installed: no
Version: 2.2.14-5ubuntu8.6
Priority: optional
Section: httpd
Maintainer: Ubuntu Developers <[email protected]>
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/
¿Existe un repositorio externo que correlacione la licencia con cada paquete?
Parece doloroso descargar cada paquete fuente e inspeccionarlo para obtener información sobre licencias, pero tal vez esa sea la mejor manera.
Respuestas:
Esto es lo que terminé haciendo. (da como resultado
~/licenses.txt
todas las licencias que existen/usr/share/doc
)fuente
grep '^' /usr/share/doc/*/copyright
obtendrá la misma información, otail -n 10000 /usr/share/doc/*/copyright
si no desea el prefijo del nombre del archivo en cada línea.En 2012, Debian lanzó el documento debian / copyright legible por máquina que hará que las licencias sean legibles en el futuro. Actualmente, no todos los paquetes usan este formato. El comando
Todavía devuelve mucha basura. Para una mejor salida, probablemente necesite una herramienta que analice cada archivo según el
Format:
valor del campo.Una forma completamente diferente es la estructura del archivo en
/usr/share/common-licenses/
(thx a /programming/1884753/license-info-of-a-deb-package#1884785 ). Enumera las principales licencias utilizadas en distribuciones basadas en Debian (y contiene sus textos de licencia). El paquete proporciona esta listabase-files
y no está vinculada a la lista de paquetes instalados, pero probablemente sea información suficiente para el jefe / cliente promedio.Actualización Acabo de publicar una solución simple de línea de comandos que extrae la información de la licencia de los archivos de copyright con mucha heurística. https://github.com/daald/dpkg-licenses . Siéntase libre de probarlo. Cualquier sugerencia es bienvenida.
fuente
Acabo de tropezar con las licencias dpkg ( https://github.com/daald/dpkg-licenses ).
Solo clona el repositorio
Luego
Y tiene lo mejor de los softwares de hoy instalados, lista tabular de versiones y licencias que puede soñar ...
fuente