Quantos arquivos existem em todos os pacotes no Ubuntu +/- 1000%?

1

Estou trabalhando em um sucessor de auto-apt , que indexa as informações de pacote usadas por apt e rastreia solicitações de E / S de arquivos contidos nesses pacotes como um wrapper de programa e as instala automaticamente.

Portanto, eu gostaria de saber quantos pacotes existem no Ubuntu (a potência de 10 é suficiente), para que eu possa realizar algumas estimativas sobre a complexidade algorítmica.

O código original parece não ser mantido por décadas e o autor não está acessível sob o último endereço conhecido (eu o escrevi há um ano, mas ele não respondeu). O programa parece ter sido expulso do Ubuntu em 17.10. Além disso, o código está completo sem comentários e testes (não faça isso, por favor!) E preciso adivinhar qual era o propósito de uma estrutura de dados semelhante a uma árvore (poderia ter sido um desafio de programação) e se posso basta substituí-lo por uma implementação rápida de valor-chave de terceiros.

    
por Karl Richter 08.01.2018 / 15:45

2 respostas

2

O comando apt-file pode ser usado para procurar qual pacote fornece um determinado arquivo. Você precisa executar apt-file update para que possa fazer o download da listagem de arquivos e:

$ 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

Portanto, Contents-amd64.gz é um arquivo de 31 MB após a compactação. Abrindo no Vim, vejo que tem 5400831 linhas, com cerca de 30 linhas neste cabeçalho:

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

Então, temos:

5,4 milhões de arquivos, mais ou menos alguns.

    
por muru 09.01.2018 / 10:53
2

No meu sistema 17.10, tenho 181.367 arquivos e diretórios instalados (esse número é exibido, por exemplo, sempre que você apt install something) em 1.360 pacotes ( apt list --installed | wc -l ). Isso é uma média de cerca de 133 arquivos / diretórios por pacote.

Existem 58.108 pacotes em 17.10 ( apt list | grep -c artful ), portanto, supondo que meus pacotes instalados sejam representativos, isso gera aproximadamente 7.749.038 arquivos e diretórios.

    
por fkraiem 08.01.2018 / 17:18