Как составить список доступных обновлений backport

12

Я только что последовал за Ubuntu Backports, чтобы активировать ручные backports, и у меня есть пара вопросов. Как я могу в командной строке (например, apt-cacherили aptitude):

  1. список установленных пакетов с доступными обновлениями бэкпорта? (Раньше я использовал apt-show-versions -uдля обновляемых пакетов)
  2. перечислить все доступные пакеты бэкпорта (установлены или нет)?
ricab
источник

Ответы:

14
  1. список установленных пакетов с доступными обновлениями backport

    aptitude search '?and(~i, ~Araring-backports)'
    
  2. список всех доступных пакетов бэкпорта (установлено или нет)

    aptitude search '~Abackports ?not(~S ~i ~Abackports)'
    
ricab
источник
6

Эта информация доступна в Synaptic, который не установлен по умолчанию, но может быть получен с помощью,

sudo apt-get install synaptic

Выбор Origin на левой боковой панели позволит просматривать пакеты в зависимости от их происхождения , например raring-backports / universe, а также локально установленные пакеты.

Если вас интересует решение для командной строки, я собрал быстрый и грязный скрипт на python для вывода списка пакетов в бэкпорте, хотя, к сожалению, он довольно медленный.

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)

В нем перечислены все доступные пакеты backport и установленная версия, если она установлена.

Джейсон Конти
источник
Спасибо, вы повысили мою осведомленность в apt на python, что, безусловно, очень полезно. За это я бы проголосовал, если бы мой представитель позволил это ... Но я скорее искал что-то встроенное. Когда официальная линия должна иметь ручные бэкпорты, я думаю, что должны быть более естественные способы получения этой информации
ricab
синаптический метод ответил бы на вопрос, но я больше искал решение на основе apt-cache / aptitude (строка cmd)
ricab
1
Или: поиск aptitude '? And (~ i, ~ Araring-backports)'; получить установленные пакеты backport
Джейсон Конти
3
Спасибо за все отклики. Ваши склонности решает решение 2. Для 1, я должен был исследовать немного больше , чтобы добраться до: aptitude search '~i ~Abackports ?not(~S ~i ~Abackports)'. Это решает 1 (при условии, что версии backports всегда выше). Я бы не получил это без вашей помощи, поэтому, если вы хотите, чтобы это было ответом, и я
выберу
1
Возможно, вы захотите добавить свой ответ и выбрать его. Я просто указал на документацию по способностям.
Джейсон Конти
4

РЕДАКТИРОВАТЬ: После некоторых экспериментов, я нашел решение, которое идеально подходит для меня! В нем перечислены только те пакеты, которые имеют более новую версию в репозитории -backports, и ничего более (в других решениях перечислены дополнительные пакеты).

Для просмотра списка доступных обновлений backports выполните следующую команду:

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

Если вы хотите, чтобы в списке также отображалась текущая и более новая версия, выполните следующую команду:

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

Это покажет что-то вроде этого:

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

Если вы не хотите запоминать эту команду, добавьте ее в свой ~/.bashrc:

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

Теперь вам нужно только написать apt-list-backports!


Оригинальный ответ

Просто нашел другой способ:

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

Это смоделирует обновление и перечислит, какие пакеты будут обновлены. Но обновления для бэкпортов также включены (я думаю, что нормальные обновления также показаны).

Вы также можете добавить опцию, -Vчтобы показать версии, до которых будут обновлены пакеты.


Чтобы просмотреть список изменений пакета в бэкпортах, используйте:

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

источник