O uso de memória pelo apt é uma combinação de o que está fazendo, e como está fazendo esse trabalho.
O apt update
(ou apt-get update
em sistemas mais antigos) faz o download não apenas de uma lista dos pacotes disponíveis, mas de um banco de dados completo de pacotes, versões, descrições e informações variadas. Ele faz o download desse banco de dados de cada repositório.
Você pode ver o tamanho de cada arquivo usando o comando ls -lh /var/lib/apt/lists
Aqui está um exemplo de 17.04. Os arquivos carregados baixados em uma atualização e recarregados toda vez que você executa o apt estão perto de 10 MB:
-rw-r--r-- 1 root root 88K Oct 24 06:41 security.ubuntu.com_ubuntu_dists_zesty-security_InRelease
-rw-r--r-- 1 root root 15K Oct 24 04:56 security.ubuntu.com_ubuntu_dists_zesty-security_main_dep11_Components-amd64.yml.gz
-rw-r--r-- 1 root root 18K Oct 24 04:56 security.ubuntu.com_ubuntu_dists_zesty-security_main_dep11_icons-64x64.tar.gz
-rw-r--r-- 1 root root 156 Oct 24 05:02 security.ubuntu.com_ubuntu_dists_zesty-security_multiverse_dep11_Components-amd64.yml.gz
-rw-r--r-- 1 root root 27K Oct 24 04:59 security.ubuntu.com_ubuntu_dists_zesty-security_universe_dep11_Components-amd64.yml.gz
-rw-r--r-- 1 root root 41K Oct 24 04:59 security.ubuntu.com_ubuntu_dists_zesty-security_universe_dep11_icons-64x64.tar.gz
-rw-r--r-- 1 root root 88K Oct 24 06:37 us.archive.ubuntu.com_ubuntu_dists_zesty-backports_InRelease
-rw-r--r-- 1 root root 4.8K Oct 24 04:42 us.archive.ubuntu.com_ubuntu_dists_zesty-backports_universe_dep11_Components-amd64.yml.gz
-rw-r--r-- 1 root root 88K Oct 24 06:37 us.archive.ubuntu.com_ubuntu_dists_zesty-updates_InRelease
-rw-r--r-- 1 root root 1.4M Oct 24 01:55 us.archive.ubuntu.com_ubuntu_dists_zesty-updates_main_binary-amd64_Packages
-rw-r--r-- 1 root root 1.3M Oct 24 01:55 us.archive.ubuntu.com_ubuntu_dists_zesty-updates_main_binary-i386_Packages
-rw-r--r-- 1 root root 63K Oct 24 05:06 us.archive.ubuntu.com_ubuntu_dists_zesty-updates_main_dep11_Components-amd64.yml.gz
-rw-r--r-- 1 root root 32K Oct 24 05:06 us.archive.ubuntu.com_ubuntu_dists_zesty-updates_main_dep11_icons-64x64.tar.gz
-rw-r--r-- 1 root root 6.2K Oct 24 05:12 us.archive.ubuntu.com_ubuntu_dists_zesty-updates_multiverse_dep11_Components-amd64.yml.gz
-rw-r--r-- 1 root root 879K Oct 24 01:55 us.archive.ubuntu.com_ubuntu_dists_zesty-updates_universe_binary-amd64_Packages
-rw-r--r-- 1 root root 877K Oct 24 01:55 us.archive.ubuntu.com_ubuntu_dists_zesty-updates_universe_binary-i386_Packages
-rw-r--r-- 1 root root 221K Oct 24 05:09 us.archive.ubuntu.com_ubuntu_dists_zesty-updates_universe_dep11_Components-amd64.yml.gz
-rw-r--r-- 1 root root 242K Oct 24 05:09 us.archive.ubuntu.com_ubuntu_dists_zesty-updates_universe_dep11_icons-64x64.tar.gz
O motivo pelo qual o apt leva 200 MB em vez de 10 MB é que o apt deve então mesclar todos esses bancos de dados em um, e então classificar e filtrar esse enorme banco de dados para realmente calcular uma ação do pacote. Cada ação leva mais e mais memória.
A maioria das funções do apt são escritas em Python3, o que as torna fáceis de manter, mas dependem da coleta de lixo e do gerenciamento de memória do Python3. O Python não é um sujeira por qualquer meio, mas também é eficiente em termos de memória quando, digamos, mescla bancos de dados. Experimente: escreva um conjunto de bancos de dados e veja a quantidade de memória necessária para que o Python3 os mescle. Se isso incomoda você, então fique à vontade para contribuir com um algoritmo melhor para o Python3.
Finalmente, o apt (e o Python3) liberam sua memória usada após a conclusão. Se você descobrir um vazamento de memória no apt, por favor, envie um relatório de bug!