No Ubuntu Linux, como faço para listar pacotes instalados a partir do repositório “universe”?

7

Em um servidor Ubuntu 10.04 LTS, quero listar os pacotes instalados e ver de que repositório eles vêm.

É fácil listar os pacotes instalados, mas não inclui o nome do repositório (como "principal" ou "universo"). E essa informação não está em /var/lib/dpkg/status , então dpkg-query também não mostra.

Eu quero obter uma lista de softwares "não suportados", ou seja, software que não vem do repositório "principal" e para o qual o Ubuntu não garante atualizações de segurança.

Nota: este é um servidor. Não tem o X, o GNOME ou o KDE instalado.

    
por Nate 04.05.2010 / 21:48

4 respostas

12

Ok, descobri como fazer isso:

aptitude search "~i" -F "%s# %p"

O que, claro, pode ser facilmente encontrado para encontrar itens do repositório "universo":

aptitude search "~i" -F "%s# %p" | grep universe
    
por 04.05.2010 / 22:51
1

Você pode fornecer um formato personalizado para a saída do comando dpkg (usando a opção -f). Tente algo assim, usando a variável de origem:

dpkg-query -f='${Package} ${Version}\t${Origin}\n' --get-selections

Há mais informações sobre o argumento de formatação nesta página: link

The default format string is "${Package}\t${Version}\n". Actu- ally, all other fields found in the status file (i.e. user defined fields) can be requested, too. They will be printed as- is, though, no conversion nor error checking is done on them. To get the name of the dpkg maintainer and the installed ver- sion, you could run:

dpkg-query -W -f='${Package} ${Version}\t${Maintainer}\n' dpkg

    
por 04.05.2010 / 21:55
1

eu tentei     pesquisa do aptitude ~ i -F "% s #% p"

no Ubuntu 12.04 e 14.04, mas ele não mostra repositórios.

Então eu escrevi este pequeno script:

# more origins.sh
#!/bin/bash
for i in $(dpkg -l |grep ^ii |awk -F' ' '{print $2}'); do
  apt-cache showpkg "$i"|head -3|grep -v '^Versions'|cut -d'(' -f2|cut -d')' -f1|sed -e 's/^Package: //;' | paste -d '\t' - -
done

Então

bash origins.sh|grep universe
    
por 25.09.2014 / 05:42
0

Esta não é exatamente uma resposta, mas pode ser usada para ajudar. Um colega me mostrou isso no outro dia. Você pode descobrir de onde um pacote é usando este comando:

apt-cache policy <package-name>

Por exemplo:

 apt-cache policy xterm  
 xterm:  
 Installed: 271-1ubuntu2.1    
 Candidate: 271-1ubuntu2.1  
 Version table:    *** 271-1ubuntu2.1 0  
         500 http://mirror.internode.on.net/pub/ubuntu/ubuntu/ precise-updates/main amd64 Packages  
         100 /var/lib/dpkg/status  
      271-1ubuntu2 0  
         500 http://mirror.internode.on.net/pub/ubuntu/ubuntu/ precise/main amd64 Packages
    
por 30.04.2016 / 04:17