Jak wyświetlić listę dostępnych aktualizacji backportu

12

Właśnie podążyłem za Ubuntu Backports, aby aktywować ręczne backporty i mam kilka pytań. Jak mogę w wierszu poleceń (np. apt-cacherLub aptitude):

  1. wyświetlić listę zainstalowanych pakietów, które mają dostępne aktualizacje backportu? (Wcześniej korzystałem apt-show-versions -uz pakietów z możliwością aktualizacji)
  2. wyświetlić listę wszystkich dostępnych pakietów backportu (zainstalowanych czy nie)?
ricab
źródło

Odpowiedzi:

14
  1. wyświetla listę zainstalowanych pakietów, które mają dostępne aktualizacje backportu

    aptitude search '?and(~i, ~Araring-backports)'
    
  2. wyświetl wszystkie dostępne pakiety backportu (zainstalowane lub nie)

    aptitude search '~Abackports ?not(~S ~i ~Abackports)'
    
ricab
źródło
6

Informacje te są dostępne w Synaptic, który nie jest instalowany domyślnie, ale można go uzyskać za pomocą,

sudo apt-get install synaptic

Wybranie opcji Origin na lewym pasku bocznym pozwoli na przeglądanie pakietów według miejsca, z którego pochodzą, na przykład Raring-backports / Universe, a także pakietów zainstalowanych lokalnie.

Jeśli zamiast tego interesuje Cię rozwiązanie wiersza poleceń, zhakowałem szybki i brudny skrypt Pythona, aby wyświetlić listę pakietów w backportach, choć niestety jest to dość powolne.

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)

Zawiera listę wszystkich dostępnych pakietów backport oraz zainstalowaną wersję, jeśli jest zainstalowana.

Jason Conti
źródło
Dzięki, podniosłeś moją świadomość do apt w Pythonie, co jest zdecydowanie bardzo przydatne. Za to zagłosowałbym, gdyby mój przedstawiciel na to pozwolił ... Ale ja raczej szukałem czegoś wbudowanego. Kiedy oficjalna linia ma mieć ręczne backporty, myślę, że muszą istnieć bardziej naturalne sposoby na uzyskanie tych informacji
ricab
metoda synaptyczna odpowiedziałaby na to pytanie, ale szukałem raczej rozwiązania opartego na apt-cache / aptitude (linia cmd)
ricab
1
Lub: aptitude search '? And (~ i, ~ Araring-backports)'; aby zainstalować zainstalowane pakiety backportu
Jason Conti
3
dzięki za wszystkie odpowiedzi. Twoje uzdolnień rozwiązuje roztworu 2. Dla 1, musiałam badać nieco więcej, aby dostać się do: aptitude search '~i ~Abackports ?not(~S ~i ~Abackports)'. To rozwiązuje 1 (przy założeniu, że wersje backports są zawsze wyższe). Nie dostałbym go jednak bez twojej pomocy, więc jeśli chcesz dać odpowiedź, a ja ją
wybiorę
1
Może chcesz dodać własną odpowiedź i ją wybrać. Zazwyczaj zwróciłem uwagę na dokumentację umiejętności.
Jason Conti
4

EDYCJA: Po kilku eksperymentach znalazłem rozwiązanie, które działa idealnie dla mnie! Zawiera tylko te pakiety, które mają nowszą wersję w repozytorium -backports i nic więcej (inne rozwiązania wymieniały dodatkowe pakiety.

Aby wyświetlić listę dostępnych aktualizacji backportów, uruchom to polecenie:

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

Jeśli chcesz, aby lista wyświetlała także bieżącą i nowszą wersję, uruchom zamiast tego polecenie:

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

Spowoduje to wyświetlenie czegoś takiego:

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

Jeśli nie chcesz zapamiętać tego polecenia, dodaj to do ~/.bashrc:

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

Teraz musisz tylko pisać apt-list-backports!


Oryginalna odpowiedź

Właśnie znalazłem inny sposób:

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

Spowoduje to symulację aktualizacji i wyświetli listę pakietów, które zostaną zaktualizowane. Ale uwzględniono również aktualizacje backportów (myślę, że pokazano również normalne aktualizacje).

Możesz także dodać opcję -Vpokazującą wersje, do których pakiety zostaną uaktualnione.


Aby wyświetlić dziennik zmian pakietu w backportach, użyj:

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

źródło