É seguro excluir manualmente o conteúdo / var / cache / apt?

21

Em um sistema incorporado com um espaço em disco muito limitado, tenho a pasta /var/cache/aptcheia com cerca de 700 MB srcpkgcache.bin.*e alguns *.binarquivos grandes .

A apresentação sudo apt-get cleannão fez uma diferença visível.

É seguro excluir manualmente esses *.bin*arquivos?

ysap
fonte
6
A partir do Ubuntu 14.04, é perfeitamente seguro remover os *.binarquivos dessa pasta - assumindo que nenhum processo relacionado ao apt esteja em execução no momento. O próximo apt-get updateirá gerar novamente os *.binarquivos. Esta questão não é decididamente sobre os arquivos /var/cache/apt/archives, mas os arquivos /var/cache/apt/*.bin. Grande diferença. O primeiro pode ser limpo com a emissão apt-get clean, o último deve ser removido manualmente. Claramente, os que votaram para encerrar a questão não a leram corretamente. Infelizmente, não posso votar para reabrir depois de conceder parte do meu representante em recompensas.
0xC0000022L
3
Isto não é uma duplicata. A resposta vinculada é sobre o subdiretório archivesdentro /var/cache/apt/, este é sobre os *.bin*arquivos.
Olaf Dietsche

Respostas:

11

Na verdade não. Esses arquivos ajudam seu sistema a determinar o que está disponível e o que não está. Esvaziar esse diretório resultará em um sistema apt-get quebrado. Aqui estão algumas dicas.

Primeiro, limpeza automática

adicione um

DPkg::Post-Invoke { "apt-get clean"; };

até o final de /etc/apt/apt.conf. Isso fará com que os processos apt e dpkg demorem mais, mas fará com que seu diretório de cache esteja sempre limpo.

Em seguida, remova arquivos

Comece removendo e desativando todos os arquivos de origem (que você não está usando). Em um sistema incorporado, você provavelmente não precisa deles. Em seguida, remova todos os arquivos que não estão em uso. Você pode executar apt-cache policypara descobrir de que repositório está vindo um pacote, se não tiver certeza.

Mais Remoção de arquivos

Alguns PPAs ficam horrorizados por ter um grande número de pacotes quando você precisa apenas de 1 ou 2. Tente desabilitar esses PPAs e apenas instalar os arquivos deb manualmente. Você economiza espaço nesses casos, mas perde a atualização automática. Lembre-se de que o dpkg manipulará dependências; portanto, você ainda pode instalar o item com toneladas de deps.deb e executar apt-get -f installpara buscar as dependências.

Resposta totalmente extrema 1

Como se tratava de um sistema embarcado, 90% dos principais repositórios não são bons para você. Para lidar com isso, você pode executar seu próprio servidor de repositório apt-get Veja este link . Não é fácil, e é um PIA para apenas uma máquina. Mas se você tiver várias dessas máquinas, vale totalmente a pena. (O seu servidor de repositório pode hospedar apenas um subconjunto de pacotes que você realmente usa. Você não precisa espelhar a coisa toda)

Resposta totalmente extrema 2

Se o espaço é realmente grande demais, é possível desativar o apt todos juntos e reverter para a instalação manual via dpkg. Eu tive que fazer isso em vários sistemas embarcados. Funciona, mas é um pesadelo para administradores.

coteyr
fonte
Esta é uma ótima resposta (especialmente as totalmente extremas), mas o /etc/apt/apt.conf não existe mais no Ubuntu 14.04. Qual é a melhor prática atual?
Zachaysan
1
Basta criar o arquivo se ele não existir. Ainda será lido.
Coteyr 25/05
5
Por favor, por que você escreve que não é seguro remover os *.binarquivos? Qualquer execução apt-get updateregenera esses arquivos do zero (testado). Por exemplo, meu caso de uso é que quero criar modelos de contêiner LXC e reduzir o máximo possível o arquivo morto. Não vejo razão para não ser seguro. E sua resposta não indica um motivo, apenas afirma que não é seguro. Testou que é perfeitamente seguro no Ubuntu 14.04.
0xC0000022L
1
Você está dizendo que incluir apt-cache cleanuma chamada no dpkg resultará em um cache mais limpo, mas o usuário diz apt-cache cleanque não limpou nada para eles. Além disso, sua resposta está totalmente errada, pois o dpkg não usa /var/cache/apt/*conteúdo para se informar sobre as estatísticas do pacote.
Anwar
1
A página de manual do apt-get descreve claramente a função de cleancomo * clean limpa o repositório local de arquivos de pacotes recuperados. Ele remove tudo, exceto o arquivo de bloqueio de / var / cache / apt / archives / e /var/cache/apt/archives/partial/.* Se for perigoso, não haverá essa função para limpar.
Anwar
3

É claro que você pode excluir pkgcache.bine srcpkgcache.binnada acontece. Basta correr apt-get updatepara recriá-los.

Tomas M
fonte
... e isso é verdade independentemente da exclusão dos .debarquivos?
einpoklum - reinstala Monica
1

Mantenha o pkgcache.bine srcpkgcache.bin, você pode excluir com segurança os outros. Não toque nos diretórios!

Frantique
fonte
OK obrigado. Mudei temporariamente os *bin.*arquivos para uma pasta de backup. No entanto, por que o apt-get gerencia o cache dentro dele ? Um diretório de cache deve ser um armazenamento temporário por natureza.
ysap
Este problema já foi reportado. :) Veja aqui
Frantique 28/11/2012
Obviamente, você pode excluir o pkgcache.bin e o srcpkgcache.bin, nada acontece. A atualização apt-get os recria.
Tomas M
0

É claro que você pode criar um compartilhamento NFS (sistema de arquivos de rede) para isso. Deixe esses arquivos em um servidor e monte o compartilhamento somente quando desejar atualizar / instalar pacotes. Em ambientes incorporados, a instalação geralmente será relativamente estática de qualquer maneira.

O sshfs é outra boa opção, é muito mais fácil de configurar (basicamente requer apenas SSH, que é padrão), mas possui mais sobrecarga (mais lenta).

jippie
fonte
Tecnicamente, isso deve funcionar, exceto que você não tem controle total de quando o apt é executado. Se você usar algo parecido com isto, precisará desabilitar as tarefas "automatizadas", como tarefas cron que executam o apt-get update.
coteyr