4

Is it possible to list all installed packages from a specific official repository component (Main, Restricted, Universe or Multiverse) using utilities like apt, apt-cache, aptitude?

I wrote a simple script for this purpose:

dpkg -l | grep ^ii | cut -f3 -d ' ' | while read -r pkg;
do
 status=`apt-cache show $pkg | grep -m1 "Section: multiverse"`
 if [ ! -z "$status" ] 
 then
  echo $pkg
 fi
done;

It works, but it's really slow cause it's checking all packages one by one. Running the time command for this script will produce:

real    1m16.797s
user    0m57.008s
sys     0m8.260s

I already tried aptitude search patterns, and dpkg-query formating, but it seems they don't have the proper column/schema to create a query for this purpose.

I also had a look at vrms script to find out how it's works, because it's really fast in finding contrib/non-free packages, it's seems that vrms script scans the whole /var/lib/dpkg/status file, looking for things like 'Section: (contrib | non-free | restricted | multiverse | partner )', so it wasn't helpful either, because not all packages have this section.

1

Okay, I didn't found any solution to do this with standard utilities, however after having a look at vrms I came-up with a pretty better script to search for packages installed from a specific component.

The other script which I mentioned in my question was really time consuming.
However, the new script is available here: pkgs-from.sh

The usage is:

./pkgs-from.sh universe # or main, multiverse, backports

And the time command result for this one is:

real    0m4.367s
user    0m0.980s
sys     0m0.408s

Which is pretty good.

How it works?
The script will create a list of all packages related to the requested component from related files within the /var/lib/apt/lists/ directory, then starts to search throughout them instead of using apt-cache.

Your Answer

By clicking "Post Your Answer", you acknowledge that you have read our updated terms of service, privacy policy and cookie policy, and that your continued use of the website is subject to these policies.

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