TLDR
Я выпустил dpkg -i PACKAGE
более новой версии PACKAGE из более новой версии дистрибутива. Он зависит от нового пакета libc6, поэтому установка не удалась.
Теперь пакет блокирует всю apt
систему.
Я просто хочу, чтобы система поняла, что она может перестать хотеть установить этот пакет. Как мне это сделать?
Длинная полная версия
Мой сервер находится на Debian 10. Он поставляется с mawk-1.3.3
от 1996 года (согласно mawk -W version
). На моем ноутбуке ubuntu стоит mawk-1.3.4
, скрипт, который я написал на ноутбуке, не совместим с mawk-1.3.3
.
Поэтому я решил найти быстрый способ (да, я знаю...) установить его на свой сервер. Оказалось, что mawk-1.3.4
находится в unstable
и testing
для sid
, следующего debian. Я тайком скачал deb
и хотел попробовать dpkg -i mawk_1.3.4.20200120-2_amd64.deb
. Это не удалось:
mawk depends on libc6 (>= 2.29); however:
Version of libc6:amd64 on system is 2.28-10.
Справедливо, это не путь, как мне вернуться к предыдущему? Все равно ничего не было установлено, это не должно быть слишком сложно, не так ли?
Что я пробовал
apt --fix-broken install
хочу удалить base-files
и bash
, и у меня очень плохое чувство по этому поводу:
The following packages will be REMOVED:
base-files bash mawk rsync
WARNING: The following essential packages will be removed.
This should NOT be done unless you know exactly what you are doing!
base-files mawk (due to base-files) bash
Я вспомнил про dpkg -r
и выпустил dpkg -r mawk
с небольшим опасением за мою настоящую унаследованную версию mawk
:
base-files depends on awk; however:
Package awk is not installed.
Package mawk which provides awk is to be removed.
dpkg: error processing package mawk (--remove):
dependency problems - not removing
Errors were encountered while processing:
mawk
Поэтому я попробовал установить gawk
в тонкой попытке сохранить зависимость awk
и тем самым сохранить base-files
и bash
(mawk
и gawk
оба могут предоставить awk
). Но помните, что система установки блокируется, вот что я получаю от apt-get install gawk
.
The following packages have unmet dependencies:
gawk : PreDepends: libsigsegv2 (>= 2.9) but it is not going to be installed
mawk : Depends: libc6 (>= 2.29) but 2.28-10 is to be installed
E: Unmet dependencies. Try 'apt --fix-broken install' with no packages (or specify a solution).
И, похоже, она не хочет позволять мне делать что-либо до "указания решения". Что иронично: у меня есть довольно четкое и обоснованное решение этой проблемы: перестать хотеть устанавливать этот пакет. Как я могу это сделать?
Подробнее
Поскольку dpkg
говорит мне, что не может ничего установить, я предполагаю, что в системе действительно ничего не трогали, вся проблема, похоже, находится в состоянии dpkg
.
В отчаянии я заглянул в /var/lib/dpkg
и нашел упоминание о пакете-виновнике в status
, вот часть, которая показалась интересной:
...
Package: mawk
Status: install ok unpacked
Priority: required
...
Architecture: amd64
Multi-Arch: foreign
Version: 1.3.4.20200120-2
Config-Version: 1.3.3-17+b3
...
Если у кого-то есть предложение. Я готов взломать свой путь через файлы и папки на /var/lib/dpkg
, но это кажется немного глупой ситуацией (и кажется, что это может быть довольно распространенным сценарием), которая должна иметь хорошую dpkg
команду, чтобы вежливо сказать dpkg
забыть о моем желании установить этот пакет.
PS: в связи с накоплением голосов за закрытие, так как это сообщение некоторые считают не по теме, я разместил вопрос здесь, как было предложено: https://unix.stackexchange.com/questions/643896/how-to-abort-installation-of-an-uninstallable-package-with-debian-packaging
Установить версию, которая есть в дистрибутиве?
apt install mawk=1.3.3