On an Ubuntu 10.04 LTS server, I want to list installed packages and see what repository they come from.

It’s easy to list installed packages, but it does not include the name of the repository (such as “main” or “universe”). And this information isn’t in /var/lib/dpkg/status, so dpkg-query doesn’t show it either.

I want to get a list of “unsupported” software—that is, software that doesn’t come from the “main” repository, and for which Ubuntu does not guarantee security updates.

Note: This is a server. It does not have X, GNOME or KDE installed.

link|improve this question

feedback

2 Answers

up vote 4 down vote accepted

Okay, I figured out how to do this:

aptitude search ~i -F "%s# %p"

Which of course can easily be grepped to find items from the “universe” repository:

aptitude search ~i -F "%s# %p" | grep universe
link|improve this answer
1  
+1. I was getting there, but I am surprised this isn't better documented either in Ubuntu documentation or Debian's website. It is something I do all the time in Synaptic, but I have never yet needed it from CLI. – Richard Holloway May 4 '10 at 21:11
feedback

You can provide a custom format for the output of the dpkg command (using the -f option). Try something like this, using the Origin variable:

dpkg-query -f='${Package} ${Version}\t${Origin}\n' --get-selections

There's more info on the formatting argument on this page: http://www.tin.org/bin/man.cgi?section=1&topic=dpkg-query

The default format string is "${Package}\t${Version}\n". Actu- ally, all other fields found in the status file (i.e. user defined fields) can be requested, too. They will be printed as- is, though, no conversion nor error checking is done on them. To get the name of the dpkg maintainer and the installed ver- sion, you could run:

dpkg-query -W -f='${Package} ${Version}\t${Maintainer}\n' dpkg

link|improve this answer
Unfortunately neither ${Origin} nor ${Source} give any output. Example query: dpkg-query -W -f='${Package} ${Version}\t${Origin}\n' 'apache2*'. If dpkg-query is getting its data from /var/lib/dpkg/status then it won’t have the information because that file does not identify the origin repository. – Nate May 4 '10 at 20:06
feedback

Your Answer

 
or
required, but never shown

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