Назад | Перейти на главную страницу

Проверить наличие обновлений определенного списка пакетов Debian

Установка

Я запускаю хост Debian Squeeze, который использую для создания многоязычного проекта (python, java, php ...) и автоматически генерирую пользовательские пакеты (debian и RPM) (через jenkins)

Эта проблема

Целевыми дистрибутивами этих пакетов Debian являются Etch, Lenny и Squeeze. Но у нашего проекта есть некоторые собственные зависимости, которые доступны только через DebianRelease + 1 репозиторий (т.е. Lenny + 1 == Squeeze, Squeeze + 1 == Wheezy). Нам, например, нужен jetty пакеты от Squeeze in Lenny, и cyrus-imapd-2.4 пакеты от Wheezy в Squeeze. Дополнительная информация:

Вопрос

Мне нужен простой способ узнать, есть ли какие-либо обновления для этих дополнительных пакетов (как «обычные», так и «обновления безопасности»). Я мог бы написать простой скрипт, который запускается еженедельно, получает некоторые параметры из файла и генерирует отчет об обновлениях. Допустим, файл выглядит так:

jetty:squeeze
cyrus-imapd-2.4:wheezy

Сценарий должен запускаться как обычный пользователь, чтобы не испортить правильную конфигурацию системы и выдавать соответствующие команды для создания этого отчета.

Есть ли в Debian какие-то встроенные apt-* Команды / параметры, посвященные этой проблеме, я мог бы использовать для написания этого скрипта? Если нет, может ли кто-нибудь придумать другое чистое решение для достижения того, что мне нужно?

Да. Для этого я использую apt-show-versions. Установка так же проста, как:

# apt-get install apt-show-versions

В моем /etc/apt/apt.conf у меня есть:

APT::Default-Release "unstable";

В /e/a/sources.list у меня есть записи для нестабильных, экспериментальных и иногда других временных репозиториев, таких как старый архив снимков emacs.

Вот пример a-s-v с обновленным пакетом из экспериментального:

# apt-show-versions -a xmonad
xmonad 0.10.1~darcs20120707-1 install ok installed
xmonad 0.10-4+b2              unstable     192.168.10.1:3142
xmonad 0.10.1~darcs20120707-1 experimental 192.168.10.1:3142
xmonad/experimental uptodate 0.10.1~darcs20120707-1

Вот пример нестабильного и экспериментального пакета, но у меня только нестабильная версия:

# apt-show-versions -a zsh
zsh 4.3.17-1 install ok installed
zsh 4.3.17-1 unstable     192.168.10.1:3142
zsh 5.0.0-2  experimental 192.168.10.1:3142
zsh/unstable uptodate 4.3.17-1

Я могу использовать apt-show-versions, чтобы узнать, есть ли обновления в экспериментальной версии:

# apt-show-versions |grep manually| head
autogen/experimental *manually* upgradeable from 1:5.16-2 to 1:5.16.2-2
iproute/experimental *manually* upgradeable from 20121001-1 to 20121001-2
iproute-doc/experimental *manually* upgradeable from 20121001-1 to 20121001-2

Это также приятно, потому что он покажет вам пакеты, которые больше не доступны ни в одном репо:

#apt-show-versions |grep -v uptodate |grep "No available"
brscan2 0.2.5-1 installed: No available version in archive
dfc-depends 1.0 installed: No available version in archive
google-chrome-unstable 24.0.1297.0-r162078 installed: No available version in archive