Ubuntu ошибка при установке приложений

При установке пакетов из официальных или сторонних репозиториев вы можете столкнуться с проблемой неудовлетворенные зависимости Ubuntu. Чтобы понять причину возникновения этой ошибки сначала надо разобраться как работают пакетные менеджеры в Linux. Здесь всё компоненты системы, библиотеки и сами программы разделены на пакеты. И если какой-либо программе нужна определенная библиотека, она не поставляется вместе с этой библиотекой, а ожидает, что эта библиотека будет уже установлена в системе.

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

По английски наша ошибка ещё может писаться как the following packages have unmet dependencies. Она может возникнуть в нескольких случаях, давайте сначала рассмотрим основные из них:

  • Вы используете dpkg для установки deb пакета. Эта утилита не занимается установкой зависимостей. Вместо неё надо использовать apt install или потом просто установить недостающие зависимости с помощью apt, как это делается описано ниже;
  • Вы используете старую версию дистрибутива — в старых версиях могло что-то изменится в репозитории и часть пакетов была удалена или переименована. С LTS версиями такое случается редко, но с обычными релизами вполне может произойти;
  • Вы пытаетесь установить программу не от своего дистрибутива — несмотря на родство всех дистрибутивов семейства Debian, не желательно использовать программы из других дистрибутивов, так, как они могут требовать пакеты, которые в этом дистрибутиве называются по другому;
  • У вас установлен устаревший пакет, который не позволяет обновить некоторые зависимости — случается, когда в системе уже есть какой-нибудь пакет старый пакет, требующий старую версию библиотеки, а новая программа, которую вы собираетесь установить уже хочет более новую версию и не позволяет её обновить. Эта проблема не очень типична для Ubuntu, так как здесь большинство версий программ в репозиториях заморожено, но часто встречается при использовании дистрибутивов с системой роллинг релизов.

1. Обновление и исправление зависимостей

Самое первое что надо сделать при проблемах с зависимостями, это хоть как-нибудь их исправить, потому что иначе пакетный менеджер работать не будет. В некоторых случаях, если списки репозиториев давно не обновлялись их обновление может помочь:

sudo apt update

Далее выполните:

sudo apt install -f

Эта команда установит зависимости, которые есть во официальных репозиториях (поможет при использовании dpkg) и если это не решит проблему, то удалит пакеты, для которых зависимости удовлетворить не удалось. Также после этого можно выполнить:

sudo dpkg --configure -a

А потом повторить предыдущую команду. Следующим шагом можно попробовать обновить систему до самой последней версии. Это тоже может помочь если вы пытаетесь установить пакет из официальных репозиториев и при этом возникает проблема с зависимостями:

sudo apt upgrade
sudo apt full-upgrade

Если причиной вашей проблемы стал устаревший пакет надо его удалить или придумать для него замену. Например, если у вас установлена старая версия php, могут возникнуть проблемы с установкой новой версии, потому что будут конфликтовать версии библиотек, от которых зависит программа. Однако можно найти PPA со специально подготовленной старой версией php, которая ни с кем конфликтовать не будет.

Также подобная проблема может возникать при использовании PPA. Эти репозитории поддерживаются сторонними разработчиками, и могут содержать проблемы, если это ваш вариант, то, лучше поискать альтернативные способы установки необходимой программы.

2. Установка зависимостей

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

Здесь собрано огромное количество пакетов от различных дистрибутивов, в том числе и от Ubuntu и Debian. Просто выберите нужную версию пакета для вашей архитектуры. Скачать файл можно чуть ниже на странице пакета:

После загрузки пакета с сайта его можно установить через тот же dpkg:

sudo dpkg -i ffmpegthumbs_19.04.3-0ubuntu1~ubuntu19.04~ppa1_amd64.deb

После этого можно снова попробовать установить свой пакет. Но устанавливаемая библиотека может потребовать свои неудовлетворенные зависимости, а та ещё свои, поэтому тянуть программы из других дистрибутивов таким образом не рационально.

3. Удаление зависимостей

Если у вас есть скачанный пакет, и он говорит, что он зависит о версии библиотеки, которой в вашей системе нет, но вы уверены, что ему подойдет и другая версия, то можно просто убрать эту зависимость из пакета. Но для этого надо его перепаковать. Такая ситуация была когда-то с популярным менеджером Viber. Рассмотрим на примере того же вайбера.

Сначала распакуйте пакет в подпапку package командой:

dpkg-deb -x ./viber.deb package

Затем туда же извлеките метаданные пакета:

dpkg-deb --control viber.deb package/DEBIAN

В файле package/DEBIAN есть строчка Depends, где перечислены все библиотеки, от которых зависит пакет и их версии. Просто удалите проблемную библиотеку или измените её версию на ту, которая есть в системе.

vi package/DEBIAN

Затем останется только собрать пакет обратно:

dpkg -b viber package.deb

И можете устанавливать, теперь с зависимостями будет всё верно:

sudo dpkg -i package.deb

Но такое исправление зависимостей Ubuntu следует использовать только для пакетов, которые точно неверно собраны. Важно понимать, что пакетный менеджер вам не враг, а помощник, и то что вы отключите зависимости и установите программу ещё не значит, что она потом будет работать.

4. Распаковать пакет

Следующий способ подойдет, если программа которую вы устанавливаете это библиотека, например, веб-драйвер для Selenium. Пакет можно распаковать и просто разложить исполняемые файлы из него по файловой системе в соответствии с папками внутри архива. Только желательно использовать не корневую файловую систему, а каталог /usr/local/ он как раз создан для этих целей.

5. Использовать snap пакеты

Самый простой способ обойти проблемы с зависимостями — использовать новый формат установщика программ, в котором программа содержит все зависимости в установочном архиве и они устанавливаются аналогично Windows в одну папку. Установка такой программы будет дольше, но зато такие там вы точно не получите проблем с зависимостями Ubuntu. Всё программы, которые поддерживают этот формат есть в центре приложений Ubuntu:

Выводы

В этой статье мы разобрали как исправить проблемы с зависимостями Ubuntu. Некоторые из способов довольно сложные, а другие проще. Но сама эта система, согласно которого пакеты зависят от других, а те ещё от других очень сложная и не удивительно, что время от времени в ней возникают ошибки. А какие способы решения этой проблемы вы знаете? Напишите в комментариях?

Обнаружили ошибку в тексте? Сообщите мне об этом. Выделите текст с ошибкой и нажмите Ctrl+Enter.

Creative Commons License

Статья распространяется под лицензией Creative Commons ShareAlike 4.0 при копировании материала ссылка на источник обязательна .

Содержание

Предисловие

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

Все операции выполняются в терминале.

Убедитесь что ни один пакетный менеджер не запущен. Это может быть: apt-get, aptitude, Synaptic, KPackageKit, Центр Приложений Ubuntu и тд.

Используя APT-GET

Обычно ошибка выглядит так:

E: Неудовлетворённые зависимости. Попытайтесь выполнить 'apt-get -f install', не указывая имени пакета, (или найдите другое решение).

Удалите кеш пакетов:

sudo apt-get clean

Удалите осиротевшие пакеты:

sudo apt-get autoremove

Обновите список пакетов:

sudo apt-get update

Исправьте зависимости:

sudo apt-get -f install

Обычно этого достаточно.

Если вы запутались с зависимостями, поможет интеллектуальное обновление системы:

sudo apt-get dist-upgrade

Если установка была прервана, то следует переустановить пакет

sudo apt-get install --reinstall имя_пакета

Если репозиторий недоступен, исправить:

  • /etc/apt/sources.list — главный список репозиториев

  • /etc/apt/sources.list.d — каталог для сторонних репозиториев

Если невозможно удалить/переустановить пакет, исправить:

  • /var/lib/dpkg/status — список установленных пакетов

  • /var/lib/dpkg/available — список доступных для скачивания пакетов

Установили Ubuntu 16.04 LTS Xenial Xerus и столкнулись с тем, что в Ubuntu Software невозможно установить приложения с помощью скачанных deb файлов, значит вы такой же счастливчик как и сотни тысяч других пользователей.

Вы столкнулись с сложностью установки приложений формата deb в Ubuntu 16.04 LTS, вы не одиноки с этой проблемой, с ней столкнулись все счастливчики которые установили новый релиз Xenial Xerus.

Ubuntu Software в Ubuntu 16.04 LTS

  • Почитав много отзывов в сети от огромного количества пользователей которые жалуются на то, что они столкнулись с ошибкой при установке таких приложений как Steam, Google Chrome, и Nylas N1, используя для этого .deb файлы. Проблема не лишь с этими приложениями, а всеми которые имеют установочный deb формат.

установка пакета deb в Ubuntu Software

  • При двойном щелчке по файлу данного формата и при нажатии на кнопку установить в новом центре приложений под название Ubuntu Software, вы видите сообщение — «Это стороннее программное обеспечение оно может содержать несвободные компоненты».

Ubuntu Software - ошибка при установке deb программы

При нажатии на кнопку установить пишет уже просто — «Это стороннее программное обеспечение«, и происходит отказ от установки.

В общем, с маленькой проблемы выросла огромная, которая всем доставляет лишь неудобство и к всему этому в дополнение, вызывает дополнительные нервы из-за того, что слишком рано перешли на релиз Ubuntu 16.04 LTS, вроде бы все мы понимаем, стабильный релиз, вроде и не должен содержать вот таких мелких, но для удобства установки приложений, серьезных проблем.

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

Баг исправлен, как я писал ниже, требуется обновиться выполнив команды ниже, либо просто перейти в менеджер обновлений Software Update, после установить предлагаемые системные обновления, должны увидеть там упоминание об Ubuntu Software/Gnome Software, установите эти обновления, так же перейдите в сам менеджер обновлений Ubuntu Software, далее перейдите в колонку Обновления и так же установите, что предлагается и обязательно в конце перезагрузиться чтобы изменения вступили в силу.

Деб пакеты менеджер приложений устанавливает, но это несколько деталей о которых бы хотел уточнить:

  • После того как приложение открывается на установку в Ubuntu Software, вам как обычно нужно ввести пароль для подтверждения установки, несколько секунд вы видите визуально под кнопкой установить шкалу как бы идет установка, после она пропадает. Не спешите закрывать Ubuntu Software так как приложение продолжает устанавливаться в фоновом режиме. Да, очень печально что все именно так,  я сам был этому удивлен, хорошо, что хоть добавили уведомления в Unity где сообщается, что такое то приложение успешно установлено, иначе и я бы не догадался, что установка продолжается, но визуально этого не видно. Будем надеяться, что все будет исправлено в ближайших обновлениях.

Разработчики советуют просто выполнить следующие команды чтобы установить обновления по фиксу:

sudo apt-get update
sudo apt-get upgrade
sudo apt-get dist-upgrade
sudo apt-get install gnome-software/xenial-proposed

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

Как временное решение пока данный баг исправляют, установить любое необходимое вам приложение можно с помощью терминала, например вы загрузили файл deb в системную папку «Загрузки», для установки файла выполним следующее:

cd ~/Downloads либо cd ~/Загрузки в зависимости от языка системы
sudo dpkg -i name_app.deb
sudo apt-get -f install

Либо же установить пакет GDebi:

sudo apt-get install gdebi

с помощью которого можно установить приложения в формате deb, нажав правой кнопкой мыши по файлу и выбрав в меню — «Открыть в программе» — «Программа установки пакетов GDebi«.

Обсудить баг с установкой приложений через deb файлы в Ubuntu Software:

  1. https://bugs.launchpad.net/ubuntu/+source/gnome-software/+bug/1573206
  2. https://bugs.launchpad.net/ubuntu/+source/gnome-software/+bug/1573408

Пока ждем исправлений так как видимо еще долго придется ждать, задача заведена еще 21 апреля, в день выхода релиза 16.04 LTS и еще не исправили.

Автор: Юрий Герук

Лицензия: CC BY-SA 4.0

Благодарность автору!

Похожие материалы:

Помогла ли вам статья?

Да
Нет

Статья оказалась полезной для 0 человек

Uno из наиболее распространенных проблем, которые обычно возникают в Ubuntu или любые его производные когда пользователь устанавливает пакеты deb, которые он загружает с какого-то веб-сайта, Это известная проблема с невыполненными зависимостями, она возникает из-за того, что для указанного пакета требуется определенная версия приложения, или он будет выпущен, и его нет в системе, или что менеджер пакетов не может найти правильные зависимые пакеты, необходимые для выполнения программы Ubuntu.

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

Индекс

  • 1 Выявление проблемы
    • 1.1 Применение первого решения
    • 1.2 Второе решение, установка необходимых зависимостей
  • 2 Третий и последний вариант. При распаковке необходимо изменить зависимости и переупаковку.

Выявление проблемы

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

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

Здесь важно проверить, не пытаемся ли мы установить устаревший пакет. Что ж, возможно, есть более свежий пакет или проверьте репозиторий, на какую дату датируются пакеты и до какой версии доступна.

Если конфликтующий пакет уже установлен, при попытке запустить команду:

sudo apt update

o

sudo apt upgrade

Это проинформирует нас о конфликте и попросит нас выполнить команду для решения проблемы.

Применение первого решения

Самый прямой способ исправить ошибки Зависимость в Ubuntu от диспетчера пакетов по умолчанию, чтобы начать исправление, просто откройте терминал и выполните команду:

sudo apt install -f

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

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

Таким же образом вы можете выбрать другое решение:

Descargar paquetes deb localmente

Теме статьи:

Как скачать пакеты DEB с зависимостями локально?

Второе решение, установка необходимых зависимостей

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

Например, в терминале нам показывают что-то вроде этого:

"Error: Dependency is not satisfiable: libgtk-3-0 (>=3.16.2)"

Следует отметить, что Это указывает на то, что выпуск «libgtk 3.0» больше или равен версии «3.16.2». за то, что мы должныs в этом случае загрузите версию указанной библиотеки. Здесь важно учитывать, что для библиотек многие приложения зависят от одной или определенной версии, поэтому лично я не советую вам сюда прикладывать руку.

Чтобы найти конкретную версию, мы можем положиться на страница пакетов ubuntu (packages.ubuntu.com) чтобы проверить, какая это версия Ubuntu и в каком репозитории, поскольку очень часто некоторые из них не включены.

Здесь вы можете скачать и установить нужные вам пакеты.

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

Третий и последний вариант. При распаковке необходимо изменить зависимости и переупаковку.

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

Итак, если они ограничивают работу приложения под определенной версией, Это тот, который вызывает конфликт.

Итак мы собираемся распаковать пакет deb и изменить зависимости к той версии, которая у нас есть в системе (поэтому было важно отметить, какие зависимости конфликтуют с конкретной версией).

Для этого мы наберем команду:

dpkg-deb -R “ruta-de-paquete-deb” “nombre-de-carpeta-que-tendra-los -archivos”

Например:

dpkg-deb -R gimp.deb Gimp

Мы собираемся получить доступ к папке и идем по маршруту «/ ДЕБИАН»

cd Gimp/DEBIAN

И мы собираемся редактировать файл «control» с нашим любимым редактором

sudo gedit control

Здесь мы будем искать строки, указывающие на зависимости с которыми у нас есть конфликты и мы собираемся их редактировать.

Например, мы найдем что-то вроде этого:

Package: XXXX

Version: XXXX

Depends: libgtk3-0 (>= 3.16.xx"

Мы собираемся перейти на ту версию, которая у нас есть. Сохраняем изменения и переупаковываем для переустановки с помощью:

dpkg-deb -b Gimp Gimp-new.deb

И для установки создается новый пакет deb.

Содержание статьи соответствует нашим принципам редакционная этика. Чтобы сообщить об ошибке, нажмите здесь.

Вы можете быть заинтересованы

Содержание

  1. Ubuntu apt-get ошибка при установки программ
  2. Ошибка при установке/удалении любого пакета
  3. «Иногда можно. И тебе даже посдказали как»
  4. Неудовлетворенные зависимости Ubuntu
  5. Неудовлетворенные зависимости в Ubuntu
  6. 1. Обновление и исправление зависимостей
  7. 2. Установка зависимостей
  8. 3. Удаление зависимостей
  9. 4. Распаковать пакет
  10. 5. Использовать snap пакеты
  11. Выводы

Ubuntu apt-get ошибка при установки программ

Здравствуйте, при попытки установить «atop»

И в чём проблема выполнить apt-get -f install ?

Ему папа запретил

Сломал ты свой дистр уже.

Подробности не вспомню, но лично у меня было такое, что apt-get -f install не помогал.

По теме — начинай с

И нафиг так делать? Может человек новичок в линуксе и вообще первый раз в жизни ubuntu тыкает?

Для новичков есть «Центр Приложений Ubuntu»

Как бэ зря новичков на терминальчик направляют.

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

А вам следует научиться гуглить.

Я и щас если получаю такие ошибки переустанавливаю дистр — благо не винда. С пиратсвом мзды не получишь.

Мне например быстрее переустановить, чем пытаться восстановить систему, когда случайно не ту либу прокачал, а при попытке удаления получаю сообщение о потенциальном сносе половины DE.

Убунта — не арч и не гента. Не надо над ней мудохаться. Она для домохозяек.

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

Какой командой? Install -f?

А кто потом будет разгребать зависимости?

Линукс же не сможет за тебя перенастроить зависимости. И одним удалением ломающей либы не управишься. Система запайпила все линки к этой либе.

Один раз я хотел переустановить Atril на самую свежую версию. Пытался скачать все либы с pkgs.org. Скачал. Последовательно поставил. В одной из либ вскочила ошибка. Я нашал install -f. Atril не запустился. Через Synaptic удаляю либу, а она мне в ответ пишет, что половину MATE снесет к сену.

Итог: Сижу теперь на KDE. И больше без надобности apt-get не делаю.

Источник

Ошибка при установке/удалении любого пакета

Вчера хотел поставить Screenlets, инструкцию брал с этого сайта

Сама программа установилась, но после нее линукс вообще ничего не хочет устанавливать, удалять, и вообще как то взаимодействовать с пакетами. Допустим, я хочу установить пакет Conky:

Если я захочу еще что-то сделать, то будет та же ошибка. Можно ли как то исправить?

UPD: Я пробывал исполнять команды по типу «sudo apt-get -f install, sudo apt-get clean etc…». Они не помогли

программа установилась, но после нее линукс вообще ничего не хочет устанавливать, удалять

Вполне ожидаемая реакция, после установки «из левых источников».

Иногда можно. И тебе даже посдказали как:

Неудовлетворённые зависимости. Попытайтесь выполнить «apt –fix-broken install», не указывая имени пакета

Вполне ожидаемая реакция, после установки «из левых источников».

Apt настолько кривой, что полностью ломается от установки не утверждённых партией пакетов? А ещё это свободой называют…

«Опыт — единстенное, что получаешь, когда ничего не получается.»

пробывал исполнять команды по типу «sudo apt-get -f install, sudo apt-get clean etc…». Они не помогли

Не помогли. Быстрый и гарантированный вариант — переустановка системы. Все остальные варианты потребуют больше времени, массу знаний, и не дают никакой гарантии, что получится восстановить.

«Иногда можно. И тебе даже посдказали как»

я уже пытался выполнить apt –fix-broken install. Без результатов

В общем как я понял, лучше не парится, и просто переустановить ось?

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

dpkg -r conky; dpkg –configure -a; apt update;

Забей на коньки. Руководствуйся лозунгом – если в линукс что-то не получается, значит это не нужно.

удаляй Screenlets и все пакеты, которые оно притянуло или которые ты поставил принудительно (типа libpng12-0)

ничто не устоит перед настойчивым пользователем

В Haiku сломать пакетную систему невозможно в принципе потому что всё состояние состоит из списка активных пакетов, монтируемых пакетных архивов и списка исключений. Файл проблемного пакета можно просто удалить. Также есть история изменения активации пакетов и можно откатить изменения.

Тут ещё хвалят NixOS где подобные проблемы также невозможны. В RPM вроде бы есть история изменения активации и можно отменить изменения. Получается что APT — самая кривая система управления пакетами в *NIX.

Apt настолько кривой, что полностью ломается от установки не утверждённых партией пакетов? А ещё это свободой называют…

Свободой это называли 20 — 10 лет назад. Теперь наиболее подходящее определение — цифровой ГУЛАГ.

Капец ты лох и неосилятор.

Нет, просто удовлетвори зависимости. Двигайся по цепочке и найди проблемный.

screenlets ты удалил?

В арче/манжаро таких проблем нет. И rpm-based дистры тоже обладают более устойчивой пакетной системой.

Палишься там libpng16 по стандарту партии хитрых отвергнувших программы на qt4

Короче, ты что-то навертел и у тебя теперь dependency hell. Это исправимо, но займет какое-то время. Переустановка не нужна, apt на самом деле очень устойчив, просто такие вещи требует ручного разбора.

Начнем со сбора и анализа данных, я помогу. Выполни команды

В Haiku сломать пакетную систему невозможно в принципе

как бы и тут нет сломанного apt, он наоборот, противостоит ломающему пользователю. Есть проблема с зависимостями, которую:

Файл проблемного пакета можно просто удалить.

можно решить этим же способом, apt remove . вполне должен сработать. Но ТС этого не сделал и хочет невозможного для apt — иметь пакеты от дважды/трижды предыдущей версии дистрибутива и возможность обновляться или ставить новый софт с пересечениям по зависимостям.

В RPM вроде бы есть история изменения активации и можно отменить изменения.

Получается что APT — самая кривая система управления пакетами в *NIX.

с ситуациями, подобными описанной сталкивался. Это ни разу не проблема apt и поведение вполне корректное — пользователь сотворил противоречивую фигню, останавливаем процесс и предоставляем возможность разобраться.

Источник

Неудовлетворенные зависимости Ubuntu

При установке пакетов из официальных или сторонних репозиториев вы можете столкнуться с проблемой неудовлетворенные зависимости Ubuntu. Чтобы понять причину возникновения этой ошибки сначала надо разобраться как работают пакетные менеджеры в Linux. Здесь всё компоненты системы, библиотеки и сами программы разделены на пакеты. И если какой-либо программе нужна определенная библиотека, она не поставляется вместе с этой библиотекой, а ожидает, что эта библиотека будет уже установлена в системе.

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

Неудовлетворенные зависимости в Ubuntu

По английски наша ошибка ещё может писаться как the following packages have unmet dependencies. Она может возникнуть в нескольких случаях, давайте сначала рассмотрим основные из них:

  • Вы используете dpkg для установки deb пакета. Эта утилита не занимается установкой зависимостей. Вместо неё надо использовать apt install или потом просто установить недостающие зависимости с помощью apt, как это делается описано ниже;
  • Вы используете старую версию дистрибутива — в старых версиях могло что-то изменится в репозитории и часть пакетов была удалена или переименована. С LTS версиями такое случается редко, но с обычными релизами вполне может произойти;
  • Вы пытаетесь установить программу не от своего дистрибутива — несмотря на родство всех дистрибутивов семейства Debian, не желательно использовать программы из других дистрибутивов, так, как они могут требовать пакеты, которые в этом дистрибутиве называются по другому;
  • У вас установлен устаревший пакет, который не позволяет обновить некоторые зависимости — случается, когда в системе уже есть какой-нибудь пакет старый пакет, требующий старую версию библиотеки, а новая программа, которую вы собираетесь установить уже хочет более новую версию и не позволяет её обновить. Эта проблема не очень типична для Ubuntu, так как здесь большинство версий программ в репозиториях заморожено, но часто встречается при использовании дистрибутивов с системой роллинг релизов.

1. Обновление и исправление зависимостей

Самое первое что надо сделать при проблемах с зависимостями, это хоть как-нибудь их исправить, потому что иначе пакетный менеджер работать не будет. В некоторых случаях, если списки репозиториев давно не обновлялись их обновление может помочь:

sudo apt update

sudo apt install -f

Эта команда установит зависимости, которые есть во официальных репозиториях (поможет при использовании dpkg) и если это не решит проблему, то удалит пакеты, для которых зависимости удовлетворить не удалось. Также после этого можно выполнить:

sudo dpkg —configure -a

А потом повторить предыдущую команду. Следующим шагом можно попробовать обновить систему до самой последней версии. Это тоже может помочь если вы пытаетесь установить пакет из официальных репозиториев и при этом возникает проблема с зависимостями:

sudo apt upgrade
sudo apt full-upgrade

Если причиной вашей проблемы стал устаревший пакет надо его удалить или придумать для него замену. Например, если у вас установлена старая версия php, могут возникнуть проблемы с установкой новой версии, потому что будут конфликтовать версии библиотек, от которых зависит программа. Однако можно найти PPA со специально подготовленной старой версией php, которая ни с кем конфликтовать не будет.

Также подобная проблема может возникать при использовании PPA. Эти репозитории поддерживаются сторонними разработчиками, и могут содержать проблемы, если это ваш вариант, то, лучше поискать альтернативные способы установки необходимой программы.

2. Установка зависимостей

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

Здесь собрано огромное количество пакетов от различных дистрибутивов, в том числе и от Ubuntu и Debian. Просто выберите нужную версию пакета для вашей архитектуры. Скачать файл можно чуть ниже на странице пакета:

После загрузки пакета с сайта его можно установить через тот же dpkg:

sudo dpkg -i ffmpegthumbs_19.04.3-0ubuntu1

После этого можно снова попробовать установить свой пакет. Но устанавливаемая библиотека может потребовать свои неудовлетворенные зависимости, а та ещё свои, поэтому тянуть программы из других дистрибутивов таким образом не рационально.

3. Удаление зависимостей

Если у вас есть скачанный пакет, и он говорит, что он зависит о версии библиотеки, которой в вашей системе нет, но вы уверены, что ему подойдет и другая версия, то можно просто убрать эту зависимость из пакета. Но для этого надо его перепаковать. Такая ситуация была когда-то с популярным менеджером Viber. Рассмотрим на примере того же вайбера.

Сначала распакуйте пакет в подпапку package командой:

dpkg-deb -x ./viber.deb package

Затем туда же извлеките метаданные пакета:

dpkg-deb —control viber.deb package/DEBIAN

В файле package/DEBIAN есть строчка Depends, где перечислены все библиотеки, от которых зависит пакет и их версии. Просто удалите проблемную библиотеку или измените её версию на ту, которая есть в системе.

Затем останется только собрать пакет обратно:

dpkg -b viber package.deb

И можете устанавливать, теперь с зависимостями будет всё верно:

sudo dpkg -i package.deb

Но такое исправление зависимостей Ubuntu следует использовать только для пакетов, которые точно неверно собраны. Важно понимать, что пакетный менеджер вам не враг, а помощник, и то что вы отключите зависимости и установите программу ещё не значит, что она потом будет работать.

4. Распаковать пакет

Следующий способ подойдет, если программа которую вы устанавливаете это библиотека, например, веб-драйвер для Selenium. Пакет можно распаковать и просто разложить исполняемые файлы из него по файловой системе в соответствии с папками внутри архива. Только желательно использовать не корневую файловую систему, а каталог /usr/local/ он как раз создан для этих целей.

5. Использовать snap пакеты

Самый простой способ обойти проблемы с зависимостями — использовать новый формат установщика программ, в котором программа содержит все зависимости в установочном архиве и они устанавливаются аналогично Windows в одну папку. Установка такой программы будет дольше, но зато такие там вы точно не получите проблем с зависимостями Ubuntu. Всё программы, которые поддерживают этот формат есть в центре приложений Ubuntu:

Выводы

В этой статье мы разобрали как исправить проблемы с зависимостями Ubuntu. Некоторые из способов довольно сложные, а другие проще. Но сама эта система, согласно которого пакеты зависят от других, а те ещё от других очень сложная и не удивительно, что время от времени в ней возникают ошибки. А какие способы решения этой проблемы вы знаете? Напишите в комментариях?

Источник

Понравилась статья? Поделить с друзьями:
  • Ui 113 netflix ошибка на телевизоре
  • Ubuntu ошибка при установке пакета
  • Uharc dll код ошибки 12
  • Ultraiso пишет устройство занято ошибка 5
  • Ubuntu ошибка при установке phpmyadmin