Как пакет Debian может быть сломан?

Как пакет Debian может быть сломан?

Я видел много ответов о том, как исправить сломанный пакет в нескольких дистрибутивах, что, кажется, очень помогает и решает проблемы. Но мне интересно, как пакет вообще может сломаться.

Я занимался устранением неполадок конвейера, который использовал apt-get installкоманду, и некоторые зависимости не удалось установить. После нескольких попыток мне удалось заставить конвейер работать. Но, просматривая решения, я обнаружил, что у apt-get есть очень полезный --fix-brokenфлаг, который решил мою проблему. Но вопрос остается,в чем была проблема? Мне не ясно, как найти точную проблему, которую --fix-brokenя решил.

Просматривая страницу руководства, можно найти некоторую общую информацию о:

Fix; attempt to correct a system with broken dependencies in place. This option, when
           used with install/remove, can omit any packages to permit APT to deduce a likely
           solution. If packages are specified, these have to completely correct the problem. The
           option is sometimes necessary when running APT for the first time; APT itself does not
           allow broken package dependencies to exist on a system. It is possible that a system's
           dependency structure can be so corrupt as to require manual intervention.

В случае конвейера, который в данный момент инстанцирует свою систему, что могло случиться с пакетом, из-за которого он сломался? Кто-нибудь может глубже разобраться в том, как работают эти флаги? И, в частности, как ломается пакет?

решение1

Типичная поломка, которая apt install --fix-brokenустраняется, — это отсутствие зависимостей. Обычный способчтопроисходит, используется dpkgдля непосредственной установки пакета: dpkgбудет знать, отсутствуют ли зависимости, но не сможет извлечь отсутствующие зависимости, поэтому пакет будет установлен частично (установлен, но не настроен). apt install --fix-brokenустраняет неисправные зависимости и устанавливает все необходимые пакеты — или удаляет полностью неисправные пакеты, если их зависимости не могут быть устранены.

Если выявляютсяпри использовании dpkgнапрямую, как правило, лучше использовать apt install— вы можете указать ему на локальный пакет, и он разрешит свои зависимости во время установки.

решение2

Пакет — это просто часть программного обеспечения со списком зависимостей. Если в вашей системе есть некоторые нестандартные установки (например, собранные из исходников) или если вы привязали определенную версию пакета (используя "dpkg hold" или "dnf --exclude"), чтобы не сломать какую-то другую установку, то попытка установить пакет, требующий другого состояния всех этих зависимых пакетов, потерпит неудачу, что приведет к "сломанному" пакету.

Важно отметить, что с пакетом или состоянием вашей системы может быть все в порядке. Исходный пакет может быть в порядке с вашим скомпилированным вручную (каким угодно), но поскольку это не то, что естьожидалего считают сломанным.

Связанный контент