Linux Mint имеет удобный графический менеджер обновлений с возможностью выбора уровней обновлений. По умолчанию установлены уровни с 1 по 3 из возможных 5. Однако я часто выполняю административные задачи для ряда настольных систем Linux Mint с помощью SSH, а не посещая физические машины. Как мне добиться той же функциональности из командной строки?
Я уже знаю о командах apt-get update
и apt-get upgrade
, но насколько я знаю, эти команды все еще работаютнетиметь любую функциональность, эквивалентную пятиуровневому поведению Менеджера обновлений ( /usr/lib/linuxmint/mintUpdate/mintUpdate.py
).
Обновление: Когда я изначально задавал этот вопрос, я искал решение для Linux Mint 17. Сейчас я использую 18.3 на некоторых из наших систем и смог дать ответ для них.
решение1
Альтернативы не было, так как mintUpdate.py был только GUI (gtk), пока я не решил написать его. Я описал его в своем блоге -Интерфейс командной строки для обновления Linux MintТам же вы найдете ссылку на gitHub. Я также опубликую несколько скриншотов.
решение2
На Mint 19 есть mintupdate-cli
инструмент, который имеет те же функции, что и версия с графическим интерфейсом mintupdate
. Получите использование с его -h
опцией.
Однако я не нашел его manpage (с man mintupdate-cli
). Поэтому я не могу найти его исходные коды и авторов из самого приложения. Хотя после некоторых поисков, похоже, что это частьmintupdateпроект:
https://github.com/linuxmint/mintupdate/blob/master/usr/lib/linuxmint/mintUpdate/mintupdate-cli.py
решение3
Этот ответ применим к Linux Mint 18.2 и более поздним версиям, хотя я тестировал его только для 18.3.
В дистрибутив теперь включен инструмент командной строки под названием mintupdate-tool
. В примечаниях к выпуску 18.2 он рекламируется как «Этот инструмент поддерживает все функции, доступные в пользовательском интерфейсе, включая выбор уровня, обновления безопасности, обновления ядра и черный список». Под «пользовательским интерфейсом» подразумевается менеджер обновлений, и это утверждение далеко от истины, но это большой шаг вперед.
man
Страницы для этого инструмента нет , поэтому:
$ mintupdate-tool --help
usage: mintupdate-tool [-h] [-k | -nk] [-s] [-r] [-d] [-y]
[--install-recommends] [-l LEVELS]
command
positional arguments:
command command to run (possible commands are: list, upgrade)
optional arguments:
-h, --help show this help message and exit
-k, --kernel ignore settings and include all kernel updates
-nk, --no-kernel ignore settings and exclude all kernel updates
-s, --security ignore settings and include all security updates
-r, --refresh-cache refresh the APT cache
-d, --dry-run simulation mode, don't upgrade anything
-y, --yes automatically answer yes to all questions
--install-recommends install recommended packages (use with caution)
-l LEVELS, --levels LEVELS
ignore settings and restrict to this list of levels
Настройки из Update Manager определяют поведение по умолчанию. Эти настройки находятся в хранилище данных активного пользователя dconf
(схемаcom.linuxmint.обновления), поэтому добавление к команде plain sudo
не меняет этого. Это важно, поскольку обновления невозможны без привилегий root.
Предупреждение: Невозможно исключить обновления безопасности, если их включение включено в настройках диспетчера обновлений.
Синтаксический анализ опции «--levels» немного небрежен и неочевиден. LEVELS — это строка, в которой ищутся цифры от 1 до 5. Это не пороговое значение или диапазон. Он также не проверяет наличие недопустимых символов, поэтому «14», «1-4», «1,4», «4..1» и «two4u14me» означают только уровни 1 и 4.
Чтобы просто вывести список доступных обновлений, которые будут установлены по умолчанию в соответствии с предпочтениями пользователя в диспетчере обновлений, вам, вероятно, понадобится следующее:
$ mintupdate-tool -r list
Вероятно, вам не понадобится опция «-r» в следующих командах, чтобы избежать сюрпризов.
Чтобы выполнить пробный прогон того, что будет делать реальное обновление с помощью этого инструмента:
$ mintupdate-tool --dry-run upgrade
Чтобы фактически выполнить то же самое обновление, которое мы получили бы, если бы использовали Менеджер обновлений, не изменяя отображаемые параметры:
$ sudo mintupdate-tool upgrade
По моему мнению, это существенная оплошность — не включать столбец типа обновления для команды «list», как она отображается в Update Manager, и не предоставлять никаких средств для запроса описания обновления или журнала изменений. Мой текущий пример:
$ sudo mintupdate-tool -l 12345 list
4 package mesa 17.2.4-0ubuntu1~16.04.4
Это обновление уровня 4 под названием "mesa", которое не является именем пакета, поэтому я не могу запросить его с помощью других известных мне инструментов командной строки. Я знаю из Update Manager, что это конкретное обновление на самом деле включает 9 различных пакетов, но это обман.
Theисходный код.