Como apagar versões antigas dos mesmos pacotes de um Repositório Local?

4

No meu repositório local veja abaixo , eu tenho muitas versões dos mesmos pacotes baixados e armazenados no diretório do pacote deb. Como o Ubuntu sempre prefere usar a versão mais alta, eu não preciso das versões anteriores baixadas e usadas. (Todos estão em uma mesma pasta).

Como posso excluir as versões anteriores dos pacotes da pasta do meu deb local? Não é uma solução viável excluí-los manualmente. (Você não pode examinar as versões em milhares de arquivos)

Alguma idéia? !!

Talvez um script que verifique a versão de cada pacote mantendo a versão mais recente e exclua os mais antigos possa resolver esse problema.

Estou procurando por tal script ou se algum software for fundado seria ótimo

Eu fiz meu repositório local seguindo como tutorial .

*** Um repositório local é um armazenamento offline de pacotes já baixados, para que você não precise fazer o download novamente

Nota : não estou me referindo a limpar o cache de pacotes baixados, o que pode ser feito com o comando apt-get clean .

    
por Community 10.10.2012 / 10:38

5 respostas

5

Eu deletei as versões antigas dos mesmos pacotes depois disso. Eu usei a inversão do recurso do recurso de varredura de múltiplas versões de dpkg-scanpackages .

  1. Primeiro, instale dpkg-dev package

    sudo apt-get install dpkg-dev
    
  2. Em seguida, gere um arquivo com o nome de pacotes (somente os mais recentes serão listados) dpkg-scanpackages sem a opção -m . O padrão é sem a opção -m .

    Se você tiver arquivos .deb em uma pasta chamada deb , execute o comando abaixo do pai desta pasta

    dpkg-scanpackages deb /dev/null 2>/dev/null | grep Filename: > filenames
    

    Isto criará um arquivo com nome nomes de arquivos que tenham todos os nomes dos arquivos .deb listados em um formato Filename: deb/packagename_version.deb .

    Agora temos todos os nomes dos arquivos com as versões mais recentes em um arquivo chamado nomes de arquivos

  3. A tarefa agora é simples, modifique o script para mover todos esses arquivos em outra pasta.

    1. Primeiro substitua o Filename: por mv

      sed -i 's/Filename:/mv/' filenames
      
    2. Agora crie uma pasta no diretório pai da pasta deb . Eu chamei de mais recente (livre de lixo poderia ser um bom; P).

    3. Novamente, altere o arquivo nomes de arquivos para mover os arquivos .deb na nova pasta mais recente .

      sed -i 's/\.deb/.deb newest/' filenames
      

      Isso fará com que nossos nomes de arquivos registrem uma lista de mv , movendo arquivos .deb do diretório deb para o diretório mais recente

    4. Agora adivinhe. Execute o arquivo nomes de arquivos

      sh filenames
      
    5. O último passo é excluir a pasta com arquivos .deb obsoletos mais antigos. Verifique a pasta mais recente também como pré-aviso.

Atualizar com um liner

Depois de instalar dpkg-dev packages, gere o script de movimento com um único comando, use este indo para o pai da pasta dos arquivos .deb.

 dpkg-scanpackages deb /dev/null 2>/dev/null | grep Filename: | sed 's/Filename:/mv/;s/\.deb/.deb newest/' > filenames

Em seguida, crie uma pasta chamada mais recente e execute o arquivo nomes de arquivos com o comando 'sh filenames *.

    
por Anwar 11.10.2012 / 07:23
2

Atualizar com um liner Para excluir (não mover)

este forro só irá deletar versões antigas dos mesmos pacotes

execute como root

sudo dpkg-scanpackages /var/cache/apt/archives 2>&1 >/dev/null | grep -Po '((\/.*?deb)(?=.*?repeat;))|used that.*?\K(\/.*deb)' | xargs rm

"/ var / cache / apt / archives" substitua pelo seu diretório .deb

funciona muito bem no Ubuntu 12.10

    
por Gurjinder Singh 01.02.2013 / 10:38
2

Eu tive o mesmo problema: eu criei um repositório local usando o apt-mirror e esta ferramenta faz o download de novos pacotes, mas deixa todos os pacotes antigos no lugar. Eu fiz o seguinte para limpar meu espelho local:

  1. Vá para o local da sua parte superior do seu espelho (o diretório em que o dists e o diretório do pool estão localizados, na minha configuração /var/spool/apt-mirror/mirror/ftp.nl.debian.org/ debian)

  2. Crie uma lista de todos os pacotes no seu pool:

    find pool -type f | sort -u > files
    
  3. Crie uma lista de todos os pacotes na sua distribuição espelhada:

    grep "^Filename:" 'find dists/ -name Packages'|sed "s/^.*Filename: //"|sort -u > packages
    
  4. Agora crie um diff entre os dois arquivos e converta-o em um script de limpeza:

    diff files packages | sed "/^[1-9]/d;s/^< /rm /" > cleanup.sh
    
  5. Execute o script gerado

Verifique se você tem permissões de gravação no repositório (ou execute usando o sudo). Em vez de remover, você também pode mover os arquivos para um local temporário.

A ideia por trás disso é que você pode remover os arquivos que não são mencionados em um dos arquivos Packages, pois eles são substituídos por versões mais recentes ou estão obsoletos. Se os arquivos não forem mencionados nos arquivos Packages, eles não poderão ser encontrados pelos clientes conectados ao seu repositório.

    
por Borkhuis 21.01.2016 / 10:11
0

Nice solução alternativa de "Anwar" (na primeira resposta)! Só essa linha eu mudaria:

sed -i 's/\.deb/.deb newest/' filenames

porque se você tiver um pacote chamado: packagename.debian_123.deb, sua linha substituirá apenas o primeiro ".deb" nesta linha e ficará assim no final:

packagename.deb newest_123.deb

Pegue esta linha, e somente o último .deb em cada linha será substituído:

sed -i 's/\(.*\).deb/.deb newest/' filenames
    
por feuerkogel 15.07.2013 / 22:34
0

No Thunar:

  1. Abrir /var/cache/apt/archives
  2. Selecione arquivos com base no tempo de acesso:
    • clique em Visualizar > > Visualizar como lista detalhada
    • clique em Visualizar > > Configurar colunas > > permitir a data acessada
    • clique no cabeçalho da tabela Data de acesso, para classificar os arquivos
    • pressione Ctrl e clique para selecionar vários arquivos, clique com a tecla Shift pressionada para selecionar um intervalo de arquivos
  3. Exclua os arquivos clicando com o botão direito em > > Excluir (se o Thunar foi aberto com privilégios suficientes) ou:
    • Clique com o botão direito em > > escolha Renomear
    • escolha Inserir / Substituir, defina um prefixo personalizado
    • abre um terminal, sudo rm /var/cache/apt/archives/customprefix*.deb
por ignis 18.05.2014 / 12:30