Comment répertorier les mises à niveau de backport disponibles

12

Je viens de suivre Ubuntu Backports pour activer les backports manuels et j'ai quelques questions. Comment puis-je, en ligne de commande (par exemple apt-cacherou aptitude):

  1. liste les packages installés qui ont des mises à niveau de backport disponibles? (Avant, j'utilisais apt-show-versions -udes packages évolutifs)
  2. lister tous les packages de backport disponibles (installés ou non)?
ricab
la source

Réponses:

14
  1. répertorier les packages installés qui ont des mises à niveau de backport disponibles

    aptitude search '?and(~i, ~Araring-backports)'
    
  2. lister tous les packages de backport disponibles (installés ou non)

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

Ces informations sont disponibles dans Synaptic, qui n'est pas installé par défaut mais peut être obtenu avec,

sudo apt-get install synaptic

La sélection de l' origine dans la barre latérale gauche permettra de parcourir les packages par leur origine, tels que raring-backports / univers, ainsi que les packages installés localement.

Si vous êtes plutôt intéressé par une solution en ligne de commande, j'ai piraté un script python rapide et sale pour répertorier les packages dans les rétroportages, mais malheureusement, il est plutôt lent.

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)

Il répertorie tous les packages de rétroportage disponibles et la version installée si elle est installée.

Jason Conti
la source
Merci, vous avez sensibilisé à apt en python, ce qui est certainement très utile. Pour cela, je voterais pour vous si mon représentant le permettait ... Mais je cherchais plutôt quelque chose d'intégré. Lorsque la ligne officielle doit avoir des rétroportages manuels, je suppose qu'il doit y avoir des moyens plus naturels d'obtenir ces informations
ricab
la méthode synaptique répondrait à la question, mais je cherchais plutôt une solution basée sur apt-cache / aptitude (ligne cmd)
ricab
1
Ou: recherche d'aptitudes '? Et (~ i, ~ Araring-backports)'; obtenir les packages de backport installés
Jason Conti
3
Merci pour toutes vos réponses. Votre solution permet de résoudre aptitude 2. Pour 1, je devais faire des recherches un peu plus pour se rendre à: aptitude search '~i ~Abackports ?not(~S ~i ~Abackports)'. Cela résout 1 (en supposant que les versions de backports sont toujours supérieures). Je ne l'aurais pas obtenu sans votre aide cependant, donc si vous voulez en faire une réponse et je la sélectionnerai
ricab
1
Pourrait vouloir ajouter votre propre réponse et la sélectionner. Je viens surtout de souligner la documentation d'aptitude.
Jason Conti
4

EDIT: Après quelques expérimentations, j'ai trouvé une solution qui fonctionne parfaitement pour moi! Il répertorie uniquement les packages qui ont une version plus récente dans le référentiel -backports, et rien de plus (les autres solutions ont répertorié des packages supplémentaires.

Pour répertorier les mises à jour de rétroportages disponibles, exécutez cette commande:

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

Si vous souhaitez que la liste affiche également la version actuelle et la version la plus récente, exécutez cette commande à la place:

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

Cela affichera quelque chose comme ceci:

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 vous ne souhaitez pas mémoriser cette commande, ajoutez-la à votre ~/.bashrc:

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

Il ne vous reste plus qu'à écrire apt-list-backports!


Réponse originale

Je viens de trouver un autre moyen:

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

Cela simulera une mise à niveau et répertoriera les packages qui seront mis à niveau. Mais les mises à niveau des backports sont également incluses (je pense que les mises à niveau normales sont également affichées).

Vous pouvez également ajouter l'option -Vpour afficher les versions vers lesquelles les packages seraient mis à niveau.


Pour afficher le journal des modifications d'un package dans les rétroportages, utilisez:

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

la source