Como listar as atualizações de backport disponíveis

12

Acabei de seguir o Ubuntu Backports para ativar o backports manual e tenho algumas perguntas. Como posso, na linha de comando (por exemplo, apt-cacherou aptitude):

  1. listar pacotes instalados que possuem atualizações de backport disponíveis? (Antes, eu costumava usar apt-show-versions -upacotes atualizáveis)
  2. listar todos os pacotes de backport disponíveis (instalados ou não)?
ricab
fonte

Respostas:

14
  1. lista os pacotes instalados que possuem atualizações de backport disponíveis

    aptitude search '?and(~i, ~Araring-backports)'
    
  2. listar todos os pacotes de backport disponíveis (instalados ou não)

    aptitude search '~Abackports ?not(~S ~i ~Abackports)'
    
ricab
fonte
6

Esta informação está disponível no Synaptic, que não é instalado por padrão, mas pode ser obtido com,

sudo apt-get install synaptic

Selecionar Origem na barra lateral esquerda permitirá que os pacotes sejam navegados por onde eles vêm, como raring-backports / universe, bem como pacotes instalados localmente.

Se você estiver interessado em uma solução de linha de comando, eu hackeei um script python rápido e sujo para listar pacotes em backports, embora, infelizmente, seja bastante lento.

from __future__ import print_function

import apt

def backport_version(package):
  if package.versions is None:
    return False
  for version in package.versions:
    for origin in version.origins:
      if origin.archive.endswith("backports"):
        return version.version
  return None

with apt.Cache() as cache:
  for package in cache:
    version = backport_version(package)
    if version is not None:
      print(package.fullname, version)
      if package.is_installed:
        print("    Installed:", package.installed.version)

Ele lista todos os pacotes de backport disponíveis e a versão instalada, se estiver instalada.

Jason Conti
fonte
Obrigado, você aumentou minha consciência para o apt em python, o que é definitivamente muito útil. Por isso, eu votaria em você se meu representante permitisse ... Mas eu estava procurando algo embutido. Quando a linha oficial é ter backports manuais, eu acho que deve haver algumas maneiras mais naturais de obter esta informação
ricab
solução o método sináptica iria responder à pergunta, mas eu estava olhando mais para apt-cache / aptidão base (linha cmd)
ricab
1
Ou: aptitude search '? E (~ i, ~ Araring-backports)'; obter pacotes de backport instalados
Jason Conti '
3
Obrigado por todas as respostas. Sua aptidão resolve solução 2. Para 1, eu tive que pesquisar um pouco mais para chegar a: aptitude search '~i ~Abackports ?not(~S ~i ~Abackports)'. Isso resolve 1 (assumindo que as versões de backports sejam sempre maiores). Eu não teria conseguido isso sem a sua ajuda, por isso se você quiser torná-lo uma resposta e eu vou selecioná-lo
ricab
1
Pode querer adicionar sua própria resposta e selecioná-la. Eu principalmente apontei a documentação do aptitude.
Jason Conti
4

EDIT: Após algumas experiências, encontrei uma solução que funciona perfeitamente para mim! Ele lista apenas os pacotes que possuem uma versão mais recente no repositório -backports e nada mais (as outras soluções listaram pacotes adicionais.

Para listar as atualizações de backports disponíveis, execute este comando:

aptitude search -t $(lsb_release -sc)-backports '~U ~Abackports'

Se você deseja que a lista também exiba a versão atual e a mais recente, execute este comando:

aptitude search -t $(lsb_release -sc)-backports -F '%p %v -> %V' '~U ~Abackports'

Isso exibirá algo como isto:

nvidia-settings               331.20-0ubuntu -> 346.59-0ubuntu
screen                        4.1.0~20120320 -> 4.2.1-2~ubuntu
yelp-xsl                      3.10.1-1       -> 3.12.0-1~ubunt

Se você não deseja memorizar este comando, adicione-o ao seu ~/.bashrc:

alias apt-list-backports="aptitude search -t $(lsb_release -sc)-backports -F '%p %v -> %V' '~U ~Abackports'"

Agora você só precisa escrever apt-list-backports!


Resposta original

Acabei de encontrar outra maneira:

apt-get upgrade -s -t $(lsb_release -sc)-backports

Isso simulará uma atualização e listará quais pacotes seriam atualizados. Mas as atualizações para backports também estão incluídas (acho que as atualizações normais também são mostradas).

Você também pode adicionar a opção -Vpara mostrar as versões para as quais os pacotes seriam atualizados.


Para visualizar o registro de alterações de um pacote nos backports, use:

apt-get changelog -t $(lsb_release -sc)-backports PACKAGE_NAME

fonte