When you run apt-get update, it keeps a list of everything in /var/lib/apt/lists/ inside the files that end with “_Packages”. So you can parse the files for lines that begin with the word “Package:” and “Version:” which will list the package/program name and its version. Then you can combine the two lines Package and Version with “paste” command, so that the package and its version are on the same line (which make it so its 1 line per package).
So after running apt-get update you get this output:
cat /var/lib/apt/lists/mirrors.kernel.org_debian_dists_wheezy_main_binary-amd64_Packages | egrep "^Package: |^Version: "| paste -s -d " \n"
Then you have sed to make it easier on the eyes, and sort to sort by package name:
cat /var/lib/apt/lists/mirrors.kernel.org_debian_dists_wheezy_main_binary-amd64_Packages | egrep "^Package: |^Version: "| paste -s -d " \n" | sed 's/Version:/-/;s/Package: //' | sort -k1
Now If you want good output about all of your repos check this out:
# first edit /etc/apt/sources.list apt-get update (cd /var/lib/apt/lists; rm -rf /tmp/pkglistcounts/; mkdir /tmp/pkglistcounts/ 2> /dev/null; for i in *_Packages;do cat $i | egrep "^Package: |^Version: "| paste -s -d " \n" | sed 's/Version:/-/;s/Package: //' | sort -k1 > /tmp/pkglistcounts/$i; done; cd /tmp/pkglistcounts/; wc -l *_Packages | sort -nk1; rm -rf /tmp/pkglistcounts/)
Output will be like this:
3 apt.readynas.com_packages_readynasos_dists_6.2.2_updates_binary-amd64_Packages 3 www.readynas.com_packages_readynasos_dists_6.2.2_updates_binary-amd64_Packages 155 apt.readynas.com_packages_readynasos_dists_6.2.2_apps_binary-amd64_Packages 155 www.readynas.com_packages_readynasos_dists_6.2.2_apps_binary-amd64_Packages 673 apt.readynas.com_packages_readynasos_dists_6.2.2_main_binary-amd64_Packages 673 www.readynas.com_packages_readynasos_dists_6.2.2_main_binary-amd64_Packages 1560 security.debian.org_dists_wheezy_updates_main_binary-amd64_Packages 35925 mirrors.kernel.org_debian_dists_wheezy_main_binary-amd64_Packages 39147 total