Wednesday, May 8, 2024
 Popular · Latest · Hot · Upcoming
2
rated 0 times [  2] [ 0]  / answers: 1 / hits: 387  / 3 Years ago, fri, june 25, 2021, 3:08:27

I'm working on a successor of auto-apt which indexes package information used by apt and traces I/O requests of files contained in those packages as a program wrapper and installes them automatically.



Therefore I'd like to know how many packages there're roughly in Ubuntu (the potency of 10 is sufficient), so that I can conduct some estimates on algorithmic complexity.



The original code seems unmaintained for decades and the author isn't reachable under the last know address (I wrote him ~ a year ago, but he didn't reply). The program seems to have been kicked out of Ubuntu in 17.10. Furthermore the code is complete comment- and test-free (don't ever do that, please!) and I need to guess what the purpose of a tree-like data structure was (could have been a programming challenge) and whether I can just replace it with a fast third-party key-value implementation.


More From » apt

 Answers
6

The apt-file command can be used to look up which package provides a given file. You need to run apt-file update so that it can download the file listing, and:



$ apt-file update
apt-file is now using the user's cache directory.
If you want to switch back to the system-wide cache directory,
run 'apt-file purge'
Downloading complete file http://jp.archive.ubuntu.com/ubuntu/dists/xenial/Contents-amd64.gz
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
9 31.7M 9 2927k 0 0 282k 0 0:01:54 0:00:10 0:01:44 481k


So Contents-amd64.gz is a 31 MB file after compression. Opening it in Vim, I see it has 5400831 lines, with about 30 lines in this header:



This file maps each file available in the Ubuntu
system to the package from which it originates. It includes packages
from the DIST distribution for the ARCH architecture.

You can use this list to determine which package contains a specific
file, or whether or not a specific file is available. The list is
updated weekly, each architecture on a different day.

When a file is contained in more than one package, all packages are
listed. When a directory is contained in more than one package, only
the first is listed.

The best way to search quickly for a file is with the Unix `grep'
utility, as in `grep <regular expression> CONTENTS':

$ grep nose Contents
etc/nosendfile net/sendfile
usr/X11R6/bin/noseguy x11/xscreensaver
usr/X11R6/man/man1/noseguy.1x.gz x11/xscreensaver
usr/doc/examples/ucbmpeg/mpeg_encode/nosearch.param graphics/ucbmpeg
usr/lib/cfengine/bin/noseyparker admin/cfengine

This list contains files in all packages, even though not all of the
packages are installed on an actual system at once. If you want to
find out which packages on an installed Debian system provide a
particular file, you can use `dpkg --search <filename>':

$ dpkg --search /usr/bin/dselect
dpkg: /usr/bin/dselect


FILE LOCATION


So, we have:



5.4 million files, give or take a few.


[#9325] Friday, June 25, 2021, 3 Years  [reply] [flag answer]
Only authorized users can answer the question. Please sign in first, or register a free account.
adedes

Total Points: 454
Total Questions: 114
Total Answers: 111

Location: Turks and Caicos Islands
Member since Fri, May 8, 2020
4 Years ago
;