Вопрос или проблема
Когда я понижаю пакеты, используя команду sudo apt install <pkg>/<target-release> <pkg>/<target-release> ...
, кажется, что состояние установки пакетов (автоматическое/ручное) сохраняется. Обычно, когда я явно указываю пакеты для установки, они становятся вручную установленными. Какова логика?
Обновления и понижения не меняют флаг автоматической или ручной установки пакета; это включает обновления или понижения, принудительно вызванные явным указанием пакета с помощью apt install
. Насколько я могу судить, это и есть логика.
Состояние устанавливается на “ручное”, если пакет изначально установлен и явно указан, как вы могли бы ожидать. Оно также устанавливается на “ручное”, если запрашивается установка пакета, и пакет уже установлен в запрашиваемой версии, если не запрашивалась переустановка или “только обновления”. Это позволяет использовать apt install
как сокращение для apt-mark manual
, но это может быть неожиданно. apt
по крайней мере говорит вам, что он помечает пакет как вручную установленный.
Ответ или решение
Когда речь заходит об установке и управлении пакетами в системах на базе Debian и Ubuntu, команда apt install
представляет собой основной инструмент. Вопрос о том, когда система устанавливает пакеты вручную, требует более детального анализа поведения apt
, особенно в контексте изменения состояния флагов автоматической и ручной установки.
Логика флагов автоматической и ручной установки
Когда вы выполняете команду sudo apt install <pkg>/<target-release>
, важно понимать следующее:
-
Состояние пакетов: По умолчанию, пакеты получают флаг ручной установки, если они установлены явно пользователем. Это происходит в том числе, когда вы явно указываете название пакета для установки. Однако, если пакет уже установлен в желаемой версии, система не меняет флаг его установки на ручной.
-
Кейс обновления и даунгрейда: При обновлении или даунгрейде пакетов (даунгрейд — это возврат к предыдущей версии) команда
apt install
не изменяет состояние флага автоматической/ручной установки. Это значит, что независимо от того, устанавливаете ли вы более новую или более старую версию пакета, его состояние останется неизменным. -
Контекст первичной установки: Если программа была установлена в автоматическом режиме в рамках установки других пакетов, то после выполнения команды
apt install
с явным указанием этого пакета, она осталась бы автоматической, если не было перезаказа установки или запрещен ‘только обновления’. -
Вероятные пожелания пользователя: При использовании команды
apt install
можно использовать её как краткую форму дляapt-mark manual
, что также влияет на поведение. Однако важно знать, чтоapt
может уведомлять пользователя о том, что пакет будет помечен как установленный вручную, что может вызвать путаницу, если это не является желаемым поведением.
Резюме
Таким образом, apt install
сохраняет текущее состояние флага автоматически при выполнении операций обновления или даунгрейда пакетов. Логика работы apt
подразумевает, что, если вы явно указываете пакет на установку, система не будет автоматически менять его состояние, если он уже был установлен нужной версии. Это упрощает управление зависимостями и позволяет избежать ситуации, когда ненужные пакеты остаются в системе после удаления или изменения состояния других пакетов.
Следовательно, для управления состоянием пакета (ручная или автоматическая установка) важно учитывать факторы, описанные выше, а также использовать соответствующие команды apt-mark
для точной настройки состояния пакетов.