Ask Ubuntu is a question and answer site for Ubuntu users and developers. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I want to write a script that outputs the license for every software package installed on my system.

Using dpkg --get-selections I am able to get list of everything installed. However, I don't see a way to get the license information for each package. For example, I can use aptitude show to get the properties of each package, but that does not include the license:

$ aptitude show apache2
Package: apache2
State: installed
Automatically installed: no
Version: 2.2.14-5ubuntu8.6
Priority: optional
Section: httpd
Maintainer: Ubuntu Developers <>
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

Is there a third-party repository that correlates the license to each package?

It sounds painful to download every source package and inspect it for licensing information, but maybe that's the best way.

share|improve this question
This appears non-trivial at this point. Possible duplicate of… See also:… – Kevin Bowen Jan 26 '13 at 6:56
See also now… – tripleee Jan 28 at 4:08
up vote 10 down vote accepted

Here's what I ended up doing. (results in ~/licenses.txt with all the licenses that exist in /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
share|improve this answer
This is very roundabount. Simply grep '^' /usr/share/doc/*/copyright will get you much the same information, or tail -n 10000 /usr/share/doc/*/copyright if you don't want the file name prefix on every line. – tripleee Jan 28 at 4:07

In 2012, Debian released the document Machine-readable debian/copyright which will make licenses readable in the future. Currently, not all packages use this format. The command

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

still returns a lot of garbage. For a better output you probably need a tool which parses each file depending on the Format: field value.

A completely different way is the file structure in /usr/share/common-licenses/ (thx to It lists the main licenses used in debian-based distributions (and contains their license texts). This list is provided by the package base-files and is not linked to the list of installed packages, but it's probably enough information for the average boss/customer.

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

Update I just published a simple command-line solution which extracts the license information from the copyright files with a lot of heuristics. Feel free to try it. Any suggestions are welcome.

share|improve this answer

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.