Я знаю, что могу запретить определенный пакет в Debian, добавив /etc/apt/preferences
с участием:
Package: *x11*
Pin: release
Pin-Priority: -1
Но как я могу это сделать виртуальный пакет как httpd
? Я бы хотел запретить установку все пакеты, которые обеспечивают это виртуальный httpd
но выбранный мной. Есть ли (простой) способ сделать это?
Причина: недавно автомат apt-get dist-upgrade
удалено nginx
и установлен lighttpd
вместо этого, потому что какой-то другой пакет (phppgadmin
ЯРМАРКА) зависел от httpd
и что-то nginx
началось в зависимости от того, что обновление не было установлено. Мне бы очень хотелось, чтобы в этом случае все обновление завершилось неудачей, а не прекращало работу службы http. Также: можно ли сделать пакет «деинсталлируемым»? Это тоже было бы хорошим решением.
Я бы предпочел создать крошечный мета-пакет с эквиваленты с согласно Conflicts
и возможно Depends
. Это позволяет более точно контролировать, какой пакет нужно установить, а какой нет.
Закрепление больше предназначено для выбора правильной версии пакета (а до недавнего времени у виртуального пакета не могло быть версии), а не для установки того или иного пакета - хотя теоретически это должно быть возможно.
Другая возможность - использовать инструмент, который сохраняет все пакеты в списке установленных или удаленных, например талант-робот. (Могут быть и другие, но для этого я использую aptitude-robot.) Хотя aptitude-robot применяет только ваши настроенные списки пакетов, когда он используется для обновления пакетов, это не относится к обычным aptitude
или apt-get
бежит.
Если вы используете только aptitude
, третьей возможностью может быть использование Aptitude's forbid-version
(Shift-F) в ситуации, как в вашем примере. Однако это не применимо, если вы позже используете apt-get
очередной раз.