Cómo enumerar las actualizaciones de backport disponibles

12

Acabo de seguir Ubuntu Backports para activar los backports manuales y tengo un par de preguntas. ¿Cómo puedo, en la línea de comando (por ejemplo, apt-cachero aptitude):

  1. enumerar los paquetes instalados que tienen actualizaciones de backport disponibles? (Antes, solía usar apt-show-versions -upaquetes actualizables)
  2. enumerar todos los paquetes de backport disponibles (instalados o no)?
ricab
fuente

Respuestas:

14
  1. enumerar los paquetes instalados que tienen actualizaciones de backport disponibles

    aptitude search '?and(~i, ~Araring-backports)'
    
  2. enumerar todos los paquetes de backport disponibles (instalados o no)

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

Esta información está disponible en Synaptic, que no se instala de manera predeterminada pero se puede obtener con,

sudo apt-get install synaptic

Seleccionar Origen en la barra lateral izquierda permitirá que los paquetes se naveguen de dónde provienen, como raring-backports / universe, así como los paquetes instalados localmente.

Si, en cambio, está interesado en una solución de línea de comandos, pirateé un script de Python rápido y sucio para enumerar paquetes en backports, aunque desafortunadamente es 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)

Enumera todos los paquetes de backport disponibles y la versión instalada si está instalada.

Jason Conti
fuente
Gracias, despertaste mi conciencia sobre apt en python, lo que definitivamente es muy útil. Por eso, te votaría si mi representante lo permitiera ... Pero estaba buscando algo integrado. Cuando la línea oficial debe tener backports manuales, supongo que debe haber algunas formas más naturales de obtener esta información
ricab
el método de solución sináptica podría responder a la pregunta, pero yo estaba buscando más a apt-cache / aptitude basa (línea cmd)
ricab
1
O: aptitude search '? Y (~ i, ~ Araring-backports)'; instalar paquetes de backport
Jason Conti
3
Gracias por todas las respuestas. Sus resuelve solución de aptitud 2. Para 1, tuve que investigar un poco más para llegar a: aptitude search '~i ~Abackports ?not(~S ~i ~Abackports)'. Esto resuelve 1 (asumiendo que las versiones de backports son siempre más altas). Yo no habría conseguido sin su ayuda, así que si usted quiere que sea una respuesta y lo seleccionaré
ricab
1
Es posible que desee agregar su propia respuesta y seleccionarla. Principalmente solo señalé la documentación de aptitud.
Jason Conti
4

EDITAR: ¡ Después de experimentar un poco, encontré una solución que funciona perfectamente para mí! Enumera solo los paquetes que tienen una versión más nueva en el repositorio -backports, y nada más (las otras soluciones enumeran paquetes adicionales.

Para enumerar las actualizaciones de backports disponibles, ejecute este comando:

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

Si desea que la lista también muestre la versión actual y la más reciente, ejecute este comando en su lugar:

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

Esto mostrará algo como esto:

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

Si no desea memorizar este comando, agréguelo a su ~/.bashrc:

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

¡Ahora solo tienes que escribir apt-list-backports!


Respuesta original

Acabo de encontrar otra forma:

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

Esto simulará una actualización y enumerará qué paquetes se actualizarán. Pero las actualizaciones de backports también están incluidas (creo que también se muestran las actualizaciones normales).

También puede agregar la opción -Vpara mostrar las versiones a las que se actualizarían los paquetes.


Para ver el registro de cambios de un paquete en los backports, use:

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

fuente