Назад | Перейти на главную страницу

Запретить виртуальный пакет в / etc / apt / preferences Debian

Я знаю, что могу запретить определенный пакет в 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 очередной раз.