Я хочу, чтобы мой cron-скрипт создания отчетов уведомлял меня о наличии обновлений для моих пакетов. Можно ли заставить apt-get
меня дать список доступных обновлений, но больше ничего не делать?
209
Для современных версий apt
есть специальный переключатель для этого:
apt list --upgradable
Для старой apt-get
команды -u
коммутатор показывает список пакетов, доступных для обновления:
# apt-get -u upgrade --assume-no
Со apt-get
страницы руководства :
-u
--show-upgradeed Показать обновленные пакеты; Распечатайте список всех пакетов, которые должны быть обновлены. Элемент конфигурации: APT :: Get :: Show-Upgraded.
--assume-no Автоматическое "нет" для всех запросов. <== Чтобы предотвратить запуск установки
-u
это вариант по умолчаниюapt-get
Это не так просто прочитать, ниже приведена строка perl one для анализа вывода apt-get:
Это должно вывести что-то вроде:
Надеюсь, это поможет кому-то еще,
источник
column
apt-get --just-print upgrade 2>&1 | perl -ne 'if (/Inst\s([\w,\-,\d,\.,~,:,\+]+)\s\[([\w,\-,\d,\.,~,:,\+]+)\]\s\(([\w,\-,\d,\.,~,:,\+]+)\)? /i) {print "PROGRAM: $1 INSTALLED: $2 AVAILABLE: $3\n"}' | column -s " " -t
Другой вариант, вдохновленный энзотибом:
Эта команда будет использовать aptitude для вывода новых пакетов, а затем wc просто посчитать строки.
По одному замечанию я обнаружил, что решение энзотиба без одинарных кавычек вокруг ~ U не работает для меня. (Wheezy, ZSH, способность 0.6.8.2)
Обновить :
С новым подходом вы можете сделать сейчас:
источник
Самый простой это:
источник
Вы можете запустить
или без документов
Еще один метод с использованием
apt-get
симуляции:источник
dist-upgrade
но не потерял некоторые пакеты, так что нужно было использоватьaptitude
.aptitude install $(apt-get -s dist-upgrade | awk '/^Inst/ { print $2 }')
сделал трюк!Посмотрите на пакет "apticron":
apticron - простой инструмент для рассылки ожидающих обновлений пакетов
https://packages.debian.org/buster/apticron
источник
отобразит список доступных обновлений без фактической установки.
Первая команда обновляет индексные файлы пакета перед выполнением имитируемого (таким образом, -s) обновления. «-s» выполнит смоделированное обновление, показывая пакеты, которые будут установлены, но фактически ничего не установят.
Напротив "-u" вместо "-s" будет фактически устанавливаться после подтверждения.
источник
-s, --simulate, --just-print, --dry-run, --recon, --no-act
, разведка и пробный прогон являются моими личными фаворитами.Мне нужна была полная информация о версии о возможных обновлениях, поэтому я использовал модификацию ответа jasonwryan:
Это простой и разумно отформатированный вывод IMO.
источник
Просто отфильтруйте вывод
иметь только предпочитаемую информацию в вашем журнале.
Скорее всего, вам понадобится красивая часть после линии
в начале немного пробелов.
источник
Jet другой лайнер, вдохновленный этим ответом :
Вывод выглядит следующим образом (цветной):
Если вы не хотите краткое описание, используйте это:
Выход:
источник
является наиболее простым для электронных писем cron; пользовательская итерация отсутствует, а если обновлений нет, вывод не производится.
источник
После написания предупреждения к ответу @ jasonwryan я хочу предложить собственное решение:
К сожалению, этот не работает с Debian Wheezy, и мне пришлось проверить некоторые контейнеры lxc, которые до сих пор не обновлены. Эта форма всегда будет работать:
Наконец, я также хотел переформатировать вывод. Я решил снова изменить вызов (используя,
--dry-run
но игнорируя все дополнительные выходные данные), потому что он кажется более безопасным:Возвращает:
источник
apt-check
вероятно, самый эффективный метод сценариев.Очень маленькая модификация показывает вам только обновления безопасности.
источник
В качестве варианта я использую следующее:
Вставьте его в скрипт с именем,
apt-updates
и вы можете позвонить,apt-updates
чтобы получить список всех обновлений независимо от пользователя.Вам все еще нужно звонить
apt-get update
с привилегированным доступом.источник
Там
apt-show-versions
инструмент. Чтобы показать доступные обновления, выполните:источник
Мне нравится использовать это:
Вы получаете вывод, как этот:
если есть доступные обновления, и нет, если нет. Таким образом, вы можете просто соединить его с решением для мониторинга.
источник