Вопрос или проблема
У меня установлен 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
требует, чтобы все зависимости были выполнены для корректной работы.
Решение проблемы с зависимостями
-
Игнорирование зависимостей с помощью
dpkg
:
Временным решением может быть использование опции--force
для командыdpkg
. Это позволяет игнорировать зависимости при установке или обновлении пакетов. Однако, стоит быть осторожным с этим методом, поскольку это может привести к нестабильности системы.sudo dpkg -i --force-depends keybase_*.deb
Используйте только в том случае, если вы понимаете возможные последствия.
-
Частичное восстановление:
Если невозможно установить другие пакеты, возможно, стоит временно удалить Keybase, установить или обновить необходимые пакеты, а затем снова установить Keybase. Это, конечно, не самый удобный вариант, но он работает. -
Избегание установки GUI компонентов:
Если вы проанализируете зависимости, которыеapt
пытается установить, вы можете вручную исключить установку GUI-компонентов. Используйте команду:sudo apt install --no-install-recommends keybase
Эта команда устанавливает Keybase без рекомендованных зависимостей, однако это может привести к тому, что некоторые функции GUI не будут работать.
-
Установка через альтернативные методы:
Если установка черезapt
илиdpkg
вызывает много проблем, обратите внимание на возможность установки программы через Snap или Flatpak, которые могут решить проблемы с зависимостями:Snap:
sudo snap install keybase
Flatpak:
-
Для установки Flatpak выполните:
sudo apt install flatpak
-
Затем выполните установку Keybase с помощью Flatpak.
-
Заключение
Хотя игнорирование зависимостей может показаться быстрым решением, рекомендуется максимально минимизировать использование этого метода, так как это может привести к нестабильной работе вашей системы. Всегда предпочтительно искать стабильные решения, такие как использование сторонних менеджеров пакетов или временное удаление конфликтующих пакетов. Важно понимать, что поддержка системы в актуальном состоянии и отсутствие неподходящих зависимостей — это критический момент для обеспечения безопасности и функциональности в Linux-системах.