Bug 57789

Summary: apt-mark не провайдит виртуальные пакеты
Product: Sisyphus Reporter: Жора Змейкин <katze_942>
Component: aptAssignee: placeholder <placeholder>
Status: NEW --- QA Contact: qa-sisyphus
Severity: normal    
Priority: P5 CC: boyarsh, glebfm, imz, lav, ldv, placeholder, rider, vt
Version: unstable   
Hardware: x86_64   
OS: Linux   
Attachments:
Description Flags
Набросок, который исправляет эту проблему none

Description Жора Змейкин 2026-02-07 01:12:09 MSK
Created attachment 20650 [details]
Набросок, который исправляет эту проблему

apt-mark не умеет работать с виртуальными пакетами. При попытке пометить виртуальный пакет как auto или manual, команда выдаёт ошибку:

> # apt-mark auto LibreOffice
> LibreOffice can not be marked as it is not installed.

> apt-get install LibreOffice   # ок, ставит libreoffice
> rpm -q libreoffice            # libreoffice-25.8.4.2-alt3.x86_64
> apt-mark auto LibreOffice     # "LibreOffice can not be marked as it is not installed."
> apt-mark auto libreoffice     # ок

При этом `apt-get install LibreOffice` корректно резолвит виртуальный пакет в его провайдера (`libreoffice`) и устанавливает его. Это асимметрия поведения внутри одного APT.

Тот же `installer-alterator-pkg` вызывает `apt-mark manual` для пакетов перед установкой, и из-за этого пропускаются виртуальные пакеты.

Плюсом приходится усложнять другие скрипты, где используется `apt-mark`, ибо приходится учитывать, не является ли пакет виртуальным, потом его ещё резолвить. В целом это неочевидное поведение, что `apt-get` резолвит, а другие инструменты — нет.

Можно попробовать взять за основу этот патч, он частично написан AI, но в целом работает (правда там есть и другие изменения, лучше проверить внимательно).
Comment 1 Anton Farygin 2026-02-07 13:47:07 MSK
невозможно пометить виртуальный пакет, т.к. он может предоставляться множеством реальных.
Comment 2 Жора Змейкин 2026-02-07 19:18:48 MSK
(Ответ для Anton Farygin на комментарий #1)
> невозможно пометить виртуальный пакет, т.к. он может предоставляться
> множеством реальных.

Поэтому можно их резолвить в список пакетов, которые установлены в системе и уже помечать их.