Как использовать apt без исправления неудовлетворенных зависимостей в несвязанных пакетах?

Вопрос или проблема

У меня установлен CLI keybase, но пакет keybase также содержит клиент с графическим интерфейсом, который требует libadwaita, GTK и множество других крупных компонент GUI – что значительно увеличивало бы количество установленных пакетов и объем дискового пространства, используемого WSL. Из-за этого я вручную установил keybase с помощью dpkg -i, чтобы избежать установки всех зависимостей GUI, что позволило мне использовать CLI без лишнего бремени.

Однако это привело к тому, что apt перестал работать. Когда я пытаюсь установить любой другой пакет, даже что-то совершенно не связанное с keybase, я получаю такое сообщение об ошибке:

Чтение списков пакетов... Готово
Формирование дерева зависимостей
Чтение информации о состоянии... Готово
Вам может потребоваться выполнить 'apt --fix-broken install' для исправления этих проблем.
Следующие пакеты имеют неудовлетворенные зависимости:
 keybase : Зависит: libappindicator1, но он не будет установлен или
                    libayatana-appindicator1, но он не будет установлен
           Зависит: libgconf-2-4, но он не будет установлен
           Зависит: libgtk-3-0, но он не будет установлен
E: Неудовлетворенные зависимости. Попробуйте 'apt --fix-broken install' без пакетов (или укажите решение).

Единственное решение, которое я нашел, это временно удалить keybase с помощью dpkg, выполнить свою команду apt, а затем снова установить keybase. Но мне не нравится это решение – я хочу сохранить keybase в своей системе. Есть ли способ заставить apt игнорировать эти неудовлетворенные зависимости? Или есть ли способ иметь любые неудовлетворенные зависимости на системе, не разрушая apt?

Apt не может быть использован для обновления или установки программного обеспечения, когда в системе есть неудовлетворенные зависимости.

  • «Не может быть использован для обновления» включает обновления безопасности пакетов. Системы с неудовлетворенными зависимостями не получают обновлений безопасности. Поэтому неразумно оставлять систему в этом состоянии для большинства пользователей.

Для большинства пользователей Ubuntu, неудовлетворенные зависимости возникают, когда они устанавливают программное обеспечение, не относящееся к Ubuntu, или программное обеспечение неправильной версии. Проблема решается, когда они удаляют эти пакеты, не относящиеся к Ubuntu, или неправильной версии.

Для смелых продвинутых пользователей, Apt и dpkg имеют опции --force (см. man dpkg), которые позволяют делать ограниченные перезаписи. Это наследие доэтапа Ubuntu и редко используется сегодня… но может быть тем, что вам нужно. Например, --force-depends-version:

depends-version: Не беспокойтесь о версиях при проверке зависимостей. Это влияет на поля Pre-Depends и Depends.

Предупреждение: Форсированные действия следует использовать с большой осторожностью и только временно, пока релиз на стороне сервера не исправит проблему зависимости. Apt и dpkg могут продолжать сильно (и правильно!) жаловаться на пакеты неправильной версии. Могут возникнуть другие побочные эффекты.

  • НЕ используйте форсированные пакеты как постоянное решение. Это закончится слезами и сломанной системой. Если вам нужно постоянное решение, не основанное на deb-пакетах, подумайте о сборке из исходников, альтернативных приложениях и/или альтернативных методах упаковки. НЕ обновляйте систему до новой версии с установленными форсированными пакетами, так как эти пакеты могут вызвать фиаско при обновлении.

Ответ или решение

Управление пакетами в среде Linux, особенно в дистрибутивах на базе Debian, таких как Ubuntu, может иногда вызывать сложности, особенно когда дело касается зависимостей. В вашем случае вы установили CLI-версию Keybase с помощью команды dpkg -i, что привело к возникновению неподходящих зависимостей, которые теперь блокируют использование apt. Рассмотрим, как решить эту проблему, не удаляя Keybase и не устанавливая нежелательные зависимости.

Проблема

После установки Keybase через dpkg, вы столкнулись с ошибкой, которая возникает при попытке использовать apt для установки или обновления других пакетов. Это связано с тем, что apt требует, чтобы все зависимости были выполнены для корректной работы.

Решение проблемы с зависимостями

  1. Игнорирование зависимостей с помощью dpkg:
    Временным решением может быть использование опции --force для команды dpkg. Это позволяет игнорировать зависимости при установке или обновлении пакетов. Однако, стоит быть осторожным с этим методом, поскольку это может привести к нестабильности системы.

    sudo dpkg -i --force-depends keybase_*.deb

    Используйте только в том случае, если вы понимаете возможные последствия.

  2. Частичное восстановление:
    Если невозможно установить другие пакеты, возможно, стоит временно удалить Keybase, установить или обновить необходимые пакеты, а затем снова установить Keybase. Это, конечно, не самый удобный вариант, но он работает.

  3. Избегание установки GUI компонентов:
    Если вы проанализируете зависимости, которые apt пытается установить, вы можете вручную исключить установку GUI-компонентов. Используйте команду:

    sudo apt install --no-install-recommends keybase

    Эта команда устанавливает Keybase без рекомендованных зависимостей, однако это может привести к тому, что некоторые функции GUI не будут работать.

  4. Установка через альтернативные методы:
    Если установка через apt или dpkg вызывает много проблем, обратите внимание на возможность установки программы через Snap или Flatpak, которые могут решить проблемы с зависимостями:

    Snap:

    sudo snap install keybase

    Flatpak:

    • Для установки Flatpak выполните:

      sudo apt install flatpak
    • Затем выполните установку Keybase с помощью Flatpak.

Заключение

Хотя игнорирование зависимостей может показаться быстрым решением, рекомендуется максимально минимизировать использование этого метода, так как это может привести к нестабильной работе вашей системы. Всегда предпочтительно искать стабильные решения, такие как использование сторонних менеджеров пакетов или временное удаление конфликтующих пакетов. Важно понимать, что поддержка системы в актуальном состоянии и отсутствие неподходящих зависимостей — это критический момент для обеспечения безопасности и функциональности в Linux-системах.

Оцените материал
Добавить комментарий

Капча загружается...