Como obtenho uma lista de pacotes obsoletos?

14

Estou tentando descobrir uma maneira de obter uma lista dos pacotes que não estão mais disponíveis nos repositórios que eu habilitei. Esta estação de trabalho passou por algumas versões do Ubuntu e teve muitos repositórios de terceiros adicionados e removidos. Eu gostaria de obter uma lista de softwares que eu tenho desses repositórios removidos, para que eu possa limpá-lo ou adicionar os repositórios apropriados.

    
por Sean 24.01.2012 / 20:19

5 respostas

17
aptitude search '~o'

O Aptitude tem alguma pesquisa muito poderosa disponível. Infelizmente a sintaxe é um pouco complicada e você tem que ir além da página do manual para encontrar a documentação, mas vale a pena.

apt-show-versions também pode ser útil:

apt-show-versions | grep 'No available version'
    
por stew 24.01.2012 / 20:38
5

Para obter uma lista de aplicativos que não estão em um repositório registrado ou em um PPA, faça o seguinte:

sudo apt-get install apt-show-versions
apt-show-versions | grep 'No available version'

Isso deve produzir um texto como este:

app1 1.0.0.14 installed: No available version in archive
app23 0.3.6 installed: No available version in archive
app332 7.0.9377 installed: No available version in archive

Para mim, isso funcionou e mostrou três aplicativos que instalei usando pacotes DEB e não estavam disponíveis em um Repo ou PPA.

Lembre-se de que é impossível verificar todos os programas, apenas os que passaram por dpkg . Por exemplo, alguns aplicativos são instalados simplesmente extraindo-os nas pastas corretas, ou outros usam um bin ou script autônomo de instalação. Portanto, a melhor maneira é você mesmo manter uma lista de aplicativos instalados por qualquer método diferente do APT.

    
por japzone 02.12.2012 / 05:24
4

Se você tiver o aptitude instalado,

aptitude search '?obsolete'

ou sua forma curta

aptitude search '~o'

Aqui está um exemplo de saída

i A gcc-4.7-base - GCC, the GNU Compiler Collection (base package)
id  libdb4.7     - Berkeley v4.7 Database Libraries [runtime]
i   libudev0     - libudev shared library

O primeiro caractere de cada linha indica o estado atual do pacote. Os estados mais comuns são:

  • p, o que significa que nenhum vestígio do pacote existe no sistema,
  • c, o que significa que o pacote foi excluído, mas seus arquivos de configuração permanecem no sistema,
  • i, o que significa que o pacote está instalado e
  • v, o que significa que o pacote é virtual.

O segundo caractere indica a ação armazenada a ser executada no pacote, se houver, caso contrário, um espaço em branco será exibido. As ações mais comuns são:

  • i, o que significa que o pacote será instalado,
  • d, o que significa que o pacote será excluído e
  • p, o que significa que o pacote e seus arquivos de configuração serão removidos.

Se o terceiro caractere for A, o pacote foi instalado automaticamente.

Para obter uma lista completa dos possíveis sinalizadores de estado e ação, consulte a seção Acessando informações do pacote no guia de referência do aptitude.

    
por Demis Palma ツ 01.07.2015 / 19:44
1

Pode haver uma maneira mais limpa, mas fora do topo da minha cabeça você pode fazer

dpkg -l | cut -f 3 -d ' ' > installed
xargs -n 1 --replace=X apt-cache search ^X$ < installed | cut -f 1 -d ' ' > available
diff installed available

Limpe as primeiras linhas do arquivo installed : ele terá cabeçalhos.

Bônus se alguém puder corrigir meu destaque de sintaxe ...

    
por Jeff Ferland 24.01.2012 / 20:30
1

Como mencionado, o apt-get search não é um bom método para verificar se um pacote ainda está disponível. Adicionais adicionei tudo a apenas uma linha:

for i in 'dpkg -l | grep '^i' | awk '{ print  }''; do apt-cache show $i > /dev/null || echo $i; done
    
por wof 22.09.2015 / 12:25