Por que existem arquivos deb em / var / cache / apt / archives /?

11

Por que existem arquivos deb em /var/cache/apt/archives/ ?

Em quais casos os arquivos deb foram baixados para esse diretório?

    
por Tim 04.10.2014 / 00:34

1 resposta

21

Informações básicas

Existem duas coisas no Ubuntu (e no Debian, nas quais o Ubuntu é baseado) que são comumente chamadas de "o gerenciador de pacotes": dpkg e APT.

dpkg é um programa que instala e remove pacotes e mantém um banco de dados de quais pacotes estão instalados, em quais versões. Quando instala pacotes, faz isso de .deb archive files. Esses arquivos são a maneira como os pacotes são distribuídos.

dpkg faz mais do que copiar (ou excluir) arquivos e atualizar seu banco de dados - ele também executará scripts de instalação e scripts de remoção. Pode ser considerado bastante sofisticado. Mas o que não vai fazer é encontrar e baixar pacotes.

O APT encontra e faz o download de pacotes e executa dpkg adequadamente para instalar, atualizar e removê-los. O APT não é realmente um único software, embora exista um apt que fornece suas partes essenciais.

O APT inclui uma biblioteca ( libapt-pkg ) que fornece a funcionalidade principal, acessada por várias ferramentas. Algumas dessas ferramentas, como apt-get , também são fornecidas pelo apt . Outras ferramentas são instaladas separadamente. O APT também fornece vários arquivos de configuração que controlam como a sua biblioteca principal e os programas que a utilizam funcionam.

Mais do que isso, o APT é um sistema para armazenar e recuperar dados sobre quais origens de software fornecem quais pacotes em quais versões e para agir sobre esses dados para executar automaticamente tarefas de gerenciamento de pacotes como instalar e atualizar pacotes. Isso inclui acompanhar quais pacotes são necessários para que os pacotes outros funcionem e escolher e instalar automaticamente os pacotes apropriados para atender a essas dependências.

Por exemplo, quando eu digo ao utilitário apt-get para instalar o destino do chocolate package, descobre que outros pacotes devem ser instalados para que funcionem e também os recuperarão e instalarão automaticamente:

$ sudo apt-get install chocolate-doom
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following extra packages will be installed:
  doom-wad-shareware libmikmod3 libsdl-mixer1.2 libsdl-net1.2 libsdl1.2debian
Recommended packages:
  doom-engine
The following NEW packages will be installed:
  chocolate-doom doom-wad-shareware libmikmod3 libsdl-mixer1.2 libsdl-net1.2
  libsdl1.2debian
0 upgraded, 6 newly installed, 0 to remove and 1 not upgraded.
Need to get 0 B/2,846 kB of archives.
After this operation, 8,626 kB of additional disk space will be used.

Ferramentas gráficas como o Centro de Software, o Atualizador de Software / Gerenciador de Atualizações e o Synaptic executam funções semelhantes a apt-get . Eles também usam o sistema APT - através de uma combinação de observando suas regras e utilizando a funcionalidade fornecida pelas bibliotecas principais - para alterar quais pacotes estão instalados, para dar ao usuário o que ele (geralmente) quer, de tal maneira que as coisas (geralmente) continuem a funcionar.

Como e quando a pasta /var/cache/apt/archives é usada

Quando apt-get , aptitude , Centro de Software , Synaptic , Atualizador de Software / Update Manager , ou qualquer outro utilitário de gerenciamento de pacotes baixa pacotes (e os outros pacotes dos quais eles dependem) do configurado fontes de software e instala-as, os pacotes baixados (ou seja, os arquivos .deb dos quais eles estão instalados) são armazenados em /var/cache/apt/archives .

Se você tiver um arquivo .deb no disco e instalá-lo com dpkg , isso não faz com que uma cópia seja feita em /var/cache/apt/archives . Mas quando um programa que usa ou implementa o sistema APT de resolução automática de dependências e pacotes de downloads de recuperação de pacotes, é onde eles são armazenados .

Embora os arquivos .deb para pacotes baixados automaticamente sejam armazenados e instalados a partir de /var/cache/apt/archives , eles não são realmente baixados diretamente para esse local. Em vez disso, os downloads de arquivos .deb incompletos (ou seja, em andamento) existem em /var/cache/apt/archives/partial e depois são movidos para /var/cache/apt/archives quando terminados.

Os arquivos de pacote .deb permanecem em cache em /var/cache/apt/archives , mesmo após a instalação bem-sucedida, caso sejam necessários para uso futuro. Mas você pode remover com segurança arquivos .deb que tenham idade suficiente para serem novamente necessários com sudo apt-get autoclean ou limpar completamente os arquivos .deb armazenados em cache com sudo apt-get clean . Consulte man apt-get para obter mais informações.

Para ilustrar a função de sudo apt-get autoclean e comandos semelhantes, bem como para determinar se você deseja executá-los, você pode simular suas ações executando com o sinalizador -s . É melhor passar este sinalizador antes do verbo de ação autoclean (ou qualquer outro).Normalmente, não é necessário executar um utilitário como root com sudo ao usar -s , porque nenhuma alteração real está sendo feita.

Por exemplo, no meu sistema:

$ apt-get -s autoclean
NOTE: This is only a simulation!
      apt-get needs root privileges for real execution.
      Keep also in mind that locking is deactivated,
      so don't depend on the relevance to the real current situation!
Reading package lists... Done
Building dependency tree       
Reading state information... Done
Del libubsan0 4.9.1-15ubuntu1 [83.7 kB]
Del cups-server-common 1.7.5-3 [519 kB]
Del python2.7 2.7.8-9 [205 kB]
Del g++-4.9 4.9.1-15ubuntu1 [17.4 MB]
Del libstdc++-4.9-dev 4.9.1-15ubuntu1 [1,121 kB]
    ....

Os pacotes listados não serão desinstalados ; em vez disso, apenas os arquivos .deb armazenados em cache seriam excluídos. (Na verdade, nem aconteceu quando eu corri o comando, pois era apenas uma simulação.)

Outros arquivos baixados

O software instalado via dpkg (via APT ou de outra forma) não é realmente executado a partir do arquivo .deb que o fornece. Conforme observado na seção Informações de Segundo Plano , os arquivos .deb são extraídos. É por isso que eles podem ser removidos e o pacote instalado continua funcionando.

Arquivos em todo o sistema que são instalados a partir de pacotes .deb não são baixados para seus locais atuais - em vez disso, eles são extraídos para eles dos arquivos .deb que os fornecem (ou talvez especialmente criados durante a instalação ou posteriormente, como é o caso de alguns arquivos de configuração).

Mas arquivos .deb não são os únicos arquivos baixados por utilitários de gerenciamento de pacotes. Muitas vezes, são baixados outros arquivos que fornecem informações sobre onde os pacotes existem.

Por exemplo, quando executo sudo apt-get update , a saída inclui linhas como:

Get:13 http://us.archive.ubuntu.com utopic/main i386 Packages [1,341 kB]

Isso significa que um arquivo como link foi baixado e examinado para ajudar a atualizar o banco de dados do APT com informações sobre quais pacotes estão disponíveis (e em que versões) a partir dessa fonte de software específica. Você pode encontrar arquivos Packages e outros arquivos semelhantes no diretório /var/lib/apt/list . As cópias armazenadas ali recebem nomes distintos como us.archive.ubuntu.com_ubuntu_dists_utopic_main_binary-amd64_Packages , pois pode haver muitos desses arquivos.

Você perguntou sobre apt-cache especificamente. Consulta o banco de dados de pacotes, mas não faz alterações no sistema nem faz download de arquivos.

Arquivos baixados específicos para o Centro de Software

Quando o Ubuntu Software Center faz o download de dados para uso próprio, específico para ele e não relacionado à funcionalidade geral do APT (ou dpkg ), ele os armazena em /var/cache/software-center .

Por exemplo, no meu sistema (e na maioria dos sistemas), essa pasta contém uma subpasta xapian :

ek@Ilex:/var/cache/software-center/xapian$ ls
flintlock       postlist.baseB  record.baseB    spelling.baseB  termlist.baseB
iamchert        postlist.DB     record.DB       spelling.DB     termlist.DB
postlist.baseA  record.baseA    spelling.baseA  termlist.baseA

O Centro de Software usa o Xapian para indexar informações para uma pesquisa rápida.

Arquivos baixados para outros utilitários relacionados

Alguns utilitários adicionais que trabalham com o sistema APT baixam e armazenam arquivos como parte de sua operação. apt-file não é instalado por padrão no Ubuntu, mas pode ser instalado a partir do apt-file package.

apt-file armazena informações sobre quais arquivos são fornecidos por quais pacotes (mesmo para pacotes que não são instalados localmente). Ele obtém essas informações sobre o conteúdo dos pacotes baixando arquivos compactados Contents :

$ sudo apt-file update
Downloading complete file http://us.archive.ubuntu.com/ubuntu/dists/utopic/Contents-amd64.gz
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 29.6M  100 29.6M    0     0   856k      0  0:00:35  0:00:35 --:--:--  832k

Quando apt-file update é executado como raiz (como acima), esses arquivos são baixados para o diretório /var/cache/apt/apt-file . Para descobrir isso, eu corri:

$ sudo updatedb
$ locate Contents-amd64
/var/cache/apt/apt-file/us.archive.ubuntu.com_ubuntu_dists_utopic-proposed_Contents-amd64.gz
/var/cache/apt/apt-file/us.archive.ubuntu.com_ubuntu_dists_utopic_Contents-amd64.gz

Observe que as informações fornecidas neste post fornecem alguns exemplos de arquivos de dados baixados e armazenados por utilitários de gerenciamento de pacotes no Ubuntu, mas não devem ser considerados uma lista exaustiva de instâncias onde tais arquivos são usados e armazenados.

    
por Eliah Kagan 04.10.2014 / 00:50