Como encontrar a lista de todos os pacotes disponíveis junto com o último número de versão disponível nos repositórios?

1

Eu quero listar todos os pacotes ( instalados ou não instalados ) junto com o número da versão mais recente disponível nos repositórios.

Por exemplo:

A saída de apt-cache policy chromium-browser mostra como abaixo

$ apt-cache policy chromium-browser
chromium-browser:
  Installed: (none)
  Candidate: 34.0.1847.116-0ubuntu2
  Version table:
     34.0.1847.116-0ubuntu2 0
        500 http://ftp.cuhk.edu.hk/pub/Linux/ubuntu/ trusty/universe amd64 Packages

Portanto, a versão mais recente do pacote chromium-browser disponível no repositório é 34.0.1847.116-0ubuntu2 . Assim, eu quero listar o número da versão junto com os nomes dos pacotes que estão disponíveis nos repositórios. E tudo que eu quero fazer isso através da linha de comando.

Eu quero que a saída seja assim,

chromium-browser 34.0.1847.116-0ubuntu2
xxxxxxxxxxxxxx   yyyyyyyyyyy
............     ............
    
por Avinash Raj 29.05.2014 / 16:42

4 respostas

2

apt-cache policy '.*' exibe informações detalhadas sobre a versão de todos os pacotes.

Se você deseja uma saída mais compacta com uma linha por pacote, você pode usar o aptitude. O comando a seguir lista as versões disponíveis (consulte o manual para especificações de formato de saída ) para todos os pacotes, exceto cross -arquitetura (por exemplo, pacotes de 32 bits em um sistema de 64 bits) (consulte o manual para os padrões de pesquisa ):

aptitude search -F '%54p %24V' '~rnative'
    
por Gilles 29.05.2014 / 17:55
0

apt-cache dump

N.B .: Esta é uma saída muito grande. Você desejará usar um pager como less ou redirecionar essa saída para um arquivo.

    
por James S. 29.05.2014 / 16:50
0

O comando abaixo listará todos os pacotes disponíveis junto com os números de versão mais recentes disponíveis nos repositórios.

for i in $(apt-cache search all | awk -F' - ' '{print }'); do apt-cache policy $i | sed -n '1,3p' | sed ':a;N;s/\n//g;ba'; done | awk '{print ,}'

Exemplo:

$ for i in $(apt-cache search all | awk -F' - ' '{print }'); do apt-cache policy $i | sed -n '1,3p' | sed ':a;N;s/\n//g;ba'; done | awk '{print ,}'
acpica-tools: 20140214-1ubuntu1
acpid: 1:2.0.21-1ubuntu2
activity-log-manager: 0.9.7-0ubuntu14
adduser: 3.113+nmu3ubuntu3
advancecomp: 1.18-1
aide: 0.16~a2.git20130520-2
aide-common: 0.16~a2.git20130520-2
alembic: 0.6.2+ds-1
alien: 8.90
alsa-base: 1.0.25+dfsg-0ubuntu4
amavisd-new: 1:2.7.1-2ubuntu3
anacron: 2.3-20ubuntu1
android-headers: 4.2.2-2-0ubuntu1
android-tools-fsutils: 4.2.2+git20130218-3ubuntu23
antlr: 2.7.7+dfsg-5
apache2: 2.4.7-1ubuntu4
apache2-bin: 2.4.7-1ubuntu4
apache2-dev: 2.4.7-1ubuntu4
apache2-mpm-event: 2.4.7-1ubuntu4
apache2-mpm-prefork: 2.4.7-1ubuntu4
apache2-mpm-worker: 2.4.7-1ubuntu4
apache2-utils: 2.4.7-1ubuntu4
apache2.2-bin: 2.4.7-1ubuntu4
apg: 2.2.3.dfsg.1-2ubuntu1
^C

Eu pego o primeiro pacote e, em seguida, faço apt-cache policy , ele exibe o mesmo número de versão exibido pelo comando for acima,

$ apt-cache policy acpica-tools
acpica-tools:
  Installed: (none)
  Candidate: 20140214-1ubuntu1
  Version table:
     20140214-1ubuntu1 0
        500 http://ftp.cuhk.edu.hk/pub/Linux/ubuntu/ trusty/main amd64 Packages
    
por Avinash Raj 29.05.2014 / 16:49
0

Isso parece conseguir o que você está pedindo.

gawk '/^Package:/{printf  "\t"} /^Version:/{print }' /var/lib/dpkg/available

Deve ser um pouco mais rápido do que analisar a saída de outro comando também. Se você quiser mexer com a formatação (para package: version - note que não é o que sua pergunta pede), você pode alterar o primeiro printf para:

printf  ": "
    
por Oli 29.05.2014 / 17:18