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 при копировании материала ссылка на источник обязательна .

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

Установите соответствующий пакет linux-headers и пакет модуля ядра

Возникает определенный затык:

root@debian:/home/keddad# apt install linux-headers-$(uname -r|sed 's/[^-]*-[^-]*-//') nvidia-driver
Чтение списков пакетов… Готово
Построение дерева зависимостей       
Чтение информации о состоянии… Готово
Некоторые пакеты невозможно установить. Возможно, вы просите невозможного,
или же используете нестабильную версию дистрибутива, где запрошенные вами
пакеты ещё не созданы или были удалены из Incoming.
Следующая информация, возможно, поможет вам:

Пакеты, имеющие неудовлетворённые зависимости:
 nvidia-driver : Зависит: nvidia-driver-libs (= 375.82-1~deb9u1) но он не будет установлен
                 Зависит: nvidia-driver-bin (= 375.82-1~deb9u1) но он не будет установлен
                 Зависит: xserver-xorg-video-nvidia (= 375.82-1~deb9u1) но он не будет установлен
                 Зависит: nvidia-vdpau-driver (= 375.82-1~deb9u1) но он не будет установлен
                 Зависит: nvidia-alternative (= 375.82-1~deb9u1)
                 Зависит: nvidia-kernel-dkms (= 375.82-1~deb9u1) или
                                 nvidia-kernel-375.82
                 Рекомендует: nvidia-settings (>= 375) но он не будет установлен
                 Рекомендует: nvidia-persistenced
E: Невозможно исправить ошибки, у вас отложены (held) битые пакеты.

Как это можно решить? Гугл не помог :(

задан 29 янв 2018 в 16:33

keddad's user avatar

keddadkeddad

2703 серебряных знака13 бронзовых знаков

7

Добавь через пробел то от чего оно там зависит. Возможно надо еще указать откуда взять правильную версию через -t ( -t stretch-backports)

aptitude иногда лучше решает зависимости и предлагает варианты. Попробуйте через этот пакетный менеджер.

ответ дан 24 апр 2019 в 14:42

eri's user avatar

erieri

31.7k3 золотых знака26 серебряных знаков56 бронзовых знаков

Я бы сделал apt install -f

Если не сработало, то искал бы эти пакеты в репозиториях Debian, как nvidia-driver-libs deb.
Вот, к примеру ваш nvidia-driver-libs

Если скачать версию для х64, то название файла будет nvidia-driver-libs_375.82-1_deb9u1_bpo8+1_amd64.deb.

А потом просто устанавливаем его:

dpkg -i nvidia-driver-libs_375.82-1_deb9u1_bpo8+1_amd64.deb

ответ дан 29 янв 2018 в 16:59

LEQADA's user avatar

LEQADALEQADA

5,1853 золотых знака23 серебряных знака48 бронзовых знаков

8

First of all try this

sudo apt-get update
sudo apt-get clean
sudo apt-get autoremove

If error still persists then do this

sudo apt --fix-broken install
sudo apt-get update && sudo apt-get upgrade
sudo dpkg --configure -a
sudo apt-get install -f

Afterwards try this again:

sudo apt-get install npm

But if it still couldn’t resolve issues check for the dependencies using sudo dpkg --configure -a and remove them one-by-one . Let’s say dependencies are on npm then go for this ,

sudo apt-get remove nodejs
sudo apt-get remove npm

Then go to /etc/apt/sources.list.d and remove any node list if you have. Then do a

sudo apt-get update

Then check for the dependencies problem again using sudo dpkg --configure -a and if it’s all clear then you are done .
Later on install npm again using this

v=8   # set to 4, 5, 6, ... as needed
curl -sL https://deb.nodesource.com/setup_$v.x | sudo -E bash -

Then install the Node.js package.

sudo apt-get install -y nodejs

The answer above will work for general cases also(for dependencies on other packages like django ,etc) just after first two processes use the same process for the package you are facing dependency with.

  • Печать

Страницы: [1]   Вниз

Тема: Починить apt: E: Невозможно исправить ошибки, у вас отложены (held) битые пакеты  (Прочитано 72343 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн
dfr

Приветствую, зачем-то решил поставить какой-то суперсвежий gnome 3 и там по инструкции требовалось сделать dist-upgrade, после чего теперь apt работает странно, иногда все номрально, некоторые пакеты теперь не ставятся: выдает странные ошибки, например:

$ sudo apt-get install libmagickwand-dev
Чтение списков пакетов… Готово
Построение дерева зависимостей       
Чтение информации о состоянии… Готово
Некоторые пакеты невозможно установить. Возможно, вы просите невозможного,
или же используете нестабильную версию дистрибутива, где запрошенные вами
пакеты ещё не созданы или были удалены из Incoming.
Следующая информация, возможно, поможет вам:

Пакеты, имеющие неудовлетворённые зависимости:
 libmagickwand-dev : Зависит: libmagickcore-dev (= 8:6.6.9.7-5ubuntu3.2) но он не будет установлен
E: Невозможно исправить ошибки, у вас отложены (held) битые пакеты.


Мне кажется возможно слетела версия системы, можно знать где она указывается ?

aptitude выдает что-то такое:

$ sudo aptitude install libmagickwand-dev
Следующие НОВЫЕ пакеты будут установлены:       
  autotools-dev{a} libbz2-dev{a} libcgraph5{a} libdjvulibre-dev{a} libexif-dev{a} libexpat1-dev{a}
  libfreetype6-dev{a} libgraphviz-dev{a} libgvpr1{a} libice-dev{a} libilmbase-dev{a} libjasper-dev{a}
  libjpeg-dev{a} libjpeg-turbo8-dev{a} libjpeg8-dev{a} liblcms1-dev{a} liblqr-1-0-dev{a} libltdl-dev{a}
  libmagickcore-dev{a} libmagickwand-dev libopenexr-dev{a} libpng12-dev{a} librsvg2-dev{ab} libsm-dev{a}
  libtiff4-dev{a} libtiffxx0c2{a} libtool{a} libwmf-dev{a} libxdot4{a} libxt-dev{a}
Следующие пакеты будут УДАЛЕНЫ:
  libpopt0:i386{u}
0 пакетов обновлено, 30 установлено новых, 1 пакетов отмечено для удаления, и 0 пакетов не обновлено.
Необходимо получить 9 263 kБ архивов. После распаковки 34,5 MБ будет занято.
Следующие пакеты имеют неудовлетворённые зависимости:
 librsvg2-dev : Зависит: librsvg2-2 (= 2.36.1-0ubuntu1) но установлен 2.36.2-0ubuntu1~precise1.
                Зависит: librsvg2-bin (>= 2.36.1-0ubuntu1) но его установка не запланирована.
                Зависит: libglib2.0-dev (>= 2.12.0) но его установка не запланирована.
                Зависит: libgdk-pixbuf2.0-dev (>= 2.21.6) но его установка не запланирована.
                Зависит: libcairo2-dev (>= 1.2.0) но его установка не запланирована.
                Зависит: libgtk2.0-dev (>= 2.21.5) но его установка не запланирована.
                Зависит: gir1.2-rsvg-2.0 но его установка не запланирована.
Internal error: the solver Install(espeak:i386 1.46.02-0ubuntu1 <espeak-data:amd64 1.46.02-0ubuntu1 -S> {espeak:amd64 1.46.02-0ubuntu1 espeak:i386 1.46.02-0ubuntu1}>) of a supposedly unresolved dependency is already installed in step 46
...


Оффлайн
rumit


Оффлайн
dfr

Не этим его не возьмешь, не хочет савить и с -f


Пользователь решил продолжить мысль 18 Сентября 2012, 18:45:54:


Может из счастливых пользователей precise запостить сюда вывод это команды ? Заранее спасибо :)

apt-cache policy libmagickwand-dev

Вот что у меня пишет

$ apt-cache policy libmagickwand-dev
libmagickwand-dev:
  Установлен: (отсутствует)
  Кандидат:   8:6.6.9.7-5ubuntu3.2
  Таблица версий:
     8:6.6.9.7-5ubuntu3.2 0
        500 http://ru.archive.ubuntu.com/ubuntu/ precise-updates/main amd64 Packages
        500 http://security.ubuntu.com/ubuntu/ precise-security/main amd64 Packages
     8:6.6.9.7-5ubuntu3 0
        500 http://ru.archive.ubuntu.com/ubuntu/ precise/main amd64 Packages

« Последнее редактирование: 18 Сентября 2012, 18:45:54 от dfr »


Оффлайн
dfr

В итоге решилось следующим образом:

Я как-то ставил гном 3 из некоего тестовго репозитория, потом гном и репозиторий убрал и забыл об этом.
Сейчас пришлось заново добавить репо и удалить его уже через утилиту ppa-purge, которая все поправила, дело
было в этом репо.

sudo apt-add-repository ppa:ricotz/testing
sudo apt-get update
sudo apt-get install ppa-purge
sudo ppa-purge ppa:ricotz/testing


Оффлайн
kmk

Возникла похожая проблема на 64-х битной Xubuntu 12.04. При попытке установить ‘sudo apt-get install pixbros’ выдает:

Некоторые пакеты невозможно установить. Возможно, вы просите невозможного,
или же используете нестабильную версию дистрибутива, где запрошенные вами
пакеты ещё не созданы или были удалены из Incoming.
Следующая информация, возможно, поможет вам:

Пакеты, имеющие неудовлетворённые зависимости:
 pixbros : Зависит: fenix но он не может быть установлен
           Зависит: fenix-plugins-system но он не может быть установлен
E: Невозможно исправить ошибки, у вас отложены (held) битые пакеты.


Сначала был устнаовлен fenix (успешно):

sudo apt-get install fenix
Потом fenix-plugins-system (безуспешно):

sudo apt-get install fenix-plugins-system
По всей видимости 64-х битного пакета fenix-plugins-system нет, т.к. почему-то в мою 64-х битную систему пытается установиться 32-х битный пакет:

~$ sudo apt-get install fenix-plugins-system
Чтение списков пакетов… Готово
Построение дерева зависимостей       
Чтение информации о состоянии… Готово
НОВЫЕ пакеты, которые будут установлены:
  fenix-plugins-system:i386
обновлено 0, установлено 1 новых пакетов, для удаления отмечено 0 пакетов, и 0 пакетов не обновлено.
Необходимо скачать 19,5 kБ архивов.
После данной операции, объём занятого дискового пространства возрастёт на 115 kB.
Получено:1 http://ru.archive.ubuntu.com/ubuntu/ precise/universe fenix-plugins-system i386 0.0.20070803-5 [19,5 kB]
Получено 19,5 kБ за 0с (58,6 kБ/c)               
Selecting previously unselected package fenix-plugins-system:i386.
(Чтение базы данных ... на данный момент установлено 171448 файлов и каталогов.)
Распаковывается пакет fenix-plugins-system:i386 (из файла .../fenix-plugins-system_0.0.20070803-5_i386.deb)...
Настраивается пакет fenix-plugins-system:i386 (0.0.20070803-5) ...


Оффлайн
ArcFi

kmk,

sudo apt-get -f install?


adawdp

— Здр.Все!
— Аналогично :«Невозможно исправить ошибки, у вас отложены (held) битые пакеты»,- при попытке установить программу online-translator (https://forum.ubuntu.ru/index.php?topic=220066.90)

— Не знаю, могло ли повлиять, скажем, обновление ядра, до этого вроде программа устанавливалась, потом я её удалил,при попытке установить „с чистого листа“ возникла такая ошибка.
— Synaptic проблему не решил, пакеты с его помощью исправить не получилось.
— Различные рекомендации (это частая ошибка публикаций много) выполнял…
— С автором программы общался, его рекомендации выполнял, положительных результатов не дало.
Кто что ещё может предложить?


Пользователь решил продолжить мысль 17 Июня 2013, 10:05:13:


— Частично решилась проблема путём установки gir1.2-keybinder-3.0  через synaptic вот отсюда http://packages.ubuntu.com/ru/quantal/i386/gir1.2-keybinder-3.0/download
— Не знаю так ли всё но программа online-translator которая не устанавливалась по этой причине, установилась, однако не запускается, но тут , вероятно что-то другое…

« Последнее редактирование: 17 Июня 2013, 10:05:13 от adawdp »


Оффлайн
Leagnus

та же ошибка возвращается при попытке установить либу zlib1g-dev для xneur из-под deb.7.5:
sudo apt-get install zlib1g-dev


Оффлайн
veles-stalker

На Ubuntu 14.04 решил поставить вместо стандартного Unity заинтересовавший Gnome3 (apt-get install gnome-shell).
ОСь свежепоставленная и на неё только успел поставить все необходимости — Bumblebee с primus’ом, PulseAudio, редакторы всякие и плееры.
Так вот, за всё это время успел и репозиториев каких-то добавить дабы установить нужное (например, репозиторий bumblebee) только bumblebee и запомнил, остальные репы забыл (ну опыта маловато ещё :-).
Начал ставить Gnome3 с таких вот команд

sudo add-apt-repository ppa:gnome3-team/gnome3-staging
sudo add-apt-repository ppa:gnome3-team/gnome3
sudo apt-get update
sudo apt-get dist-upgrade

всё прошло нормально, а вот когда ввёл на исполнение команду

sudo apt-get install gnome-shell

то мне как раз выдалась ошибка

Чтение списков пакетов… Готово
Построение дерева зависимостей       
Чтение информации о состоянии… Готово
Некоторые пакеты невозможно установить. Возможно, вы просите невозможного,
или же используете нестабильную версию дистрибутива, где запрошенные вами
пакеты ещё не созданы или были удалены из Incoming.
Следующая информация, возможно, поможет вам:

Пакеты, имеющие неудовлетворённые зависимости:
 gnome-shell : Зависит: gnome-settings-daemon (>= 3.4.0) но он не будет установлен
               Рекомендует: gnome-control-center но он не будет установлен
E: Невозможно исправить ошибки, у вас отложены (held) битые пакеты.

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

sudo atp-get autoremove
sudo apt-get autoclean
sudo dpkg-reconfigure -a
sudo apt-get upgrade

в результате выполнения upgrade предложила установить gnome-settings-daemon-schemas, что я и сделал

sudo apt-get install gnome-settings-daemon-schemas

после чего нормально выполнилась команда установки gnome3

sudo apt-get install gnome-shell


  • Печать

Страницы: [1]   Вверх

Содержание

  1. Неудовлетворенные зависимости Ubuntu
  2. Неудовлетворенные зависимости в Ubuntu
  3. 1. Обновление и исправление зависимостей
  4. 2. Установка зависимостей
  5. 3. Удаление зависимостей
  6. 4. Распаковать пакет
  7. 5. Использовать snap пакеты
  8. Выводы
  9. Ошибка у вас зафиксированы сломанные пакеты
  10. Как исправить у вас зафиксированы сломанные пакеты?
  11. 1. Обновите списки пакетов
  12. 2. Установите битые пакеты
  13. 3. Очистите лишние пакеты
  14. 4. Используйте dpkg
  15. 5. Разрешите зависимости
  16. Выводы
  17. Оцените статью:
  18. Об авторе
  19. 8 комментариев
  20. Комментарии (20)
  21. gosjava неудовлетворенные зависимости
  22. 4 ответа

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

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

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

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

Snimok ekrana ot 2019 09 04 22 40 10

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

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

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

Snimok ekrana ot 2019 09 04 22 34 48

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

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

sudo apt upgrade
sudo apt full-upgrade

Snimok ekrana ot 2019 09 04 22 34 48

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

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

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

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

Snimok ekrana ot 2019 09 04 22 12 06

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

Snimok ekrana ot 2019 09 04 22 39 09

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

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

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

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

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

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

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

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

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

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

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

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

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

Snimok ekrana ot 2019 09 04 22 38 26

Выводы

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

Источник

Ошибка у вас зафиксированы сломанные пакеты

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

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

Как исправить у вас зафиксированы сломанные пакеты?

Snimok ekrana ot 2020 08 11 15 55 00

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

Возможно вам не удалось установить нужные пакеты потому что списки репозиториев устарели, и там ещё не было нужных пакетов. Для обновления списка пакетов выполните:

Snimok ekrana ot 2020 08 11 15 55 32

2. Установите битые пакеты

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

Snimok ekrana ot 2020 08 11 15 55 44

3. Очистите лишние пакеты

Установке могут мешать лишние пакеты, которые больше не нужны в системе. Для их удаления выполните:

sudo apt autoremove

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

4. Используйте dpkg

Вместо apt вы можете использовать команду dpkg чтобы посмотреть какие пакеты вызывают проблему. Просто выполните:

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

5. Разрешите зависимости

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

Выводы

В этой небольшой статье мы рассмотрели что делать если в вашей системе появились битые пакеты и как их исправить. Здесь решение проблемы очень сильно зависит от вашей ситуации, но здесь приведены основные варианты решения, которые должны помочь вернуть пакетный менеджер к работе. Иногда рекомендуют удалить пакет вручную из базы данных dpkg /var/lib/dpkg/status, однако лучше этого не делать и найти путь решить проблему по другому, ручное редактирование подобных файлов может создать ещё больше проблем.

Нет похожих записей

Оцените статью:

Об авторе

Основатель и администратор сайта losst.ru, увлекаюсь открытым программным обеспечением и операционной системой Linux. В качестве основной ОС сейчас использую Ubuntu. Кроме Linux, интересуюсь всем, что связано с информационными технологиями и современной наукой.

8 комментариев

Вот почему я использую Fedora с DNF, за 5 лет использования даже не припомню случаев некорректной работы DNF. APT в Дебиан подобных дистрибутивах это сплошное разочарование.

Если бы все так было просто с зависимостями, что их через форсе принудительно установить, то это был бы не Линукс. Ниче, что система после таких манипуляций не работает? После ваших советов, новичек «уложит» систему точно.

Согласен. С Fedora бубен уже покрылся пылью. Чего все с этой Ubunto’й носятся.

Ничего не помогло. Постоянно пишет, что сломаны пакеты. к примеру хочу установить: apt-get install mariadb-server. Делаю как вы пишите.
Следующие пакеты имеют неудовлетворённые зависимости:
mariadb-server : Зависит: mariadb-server-10.1 (>= 1:10.1.29-6) но он не будет установлен
E: Невозможно исправить ошибки: у вас зафиксированы сломанные пакеты.
root@user-All-Series:

# sudo apt clean
root@user-All-Series:

# sudo apt autoremove
Чтение списков пакетов… Готово
Построение дерева зависимостей
Чтение информации о состоянии… Готово
Обновлено 0 пакетов, установлено 0 новых пакетов, для удаления отмечено 0 пакетов, и 0 пакетов не обновлено.
root@user-All-Series:

Источник

picture 66

Комментарии (20)

picture 4778

picture 66

picture 4778

picture 1

Я тоже сталкивался с описанной ситуацией, выяснял какой пакет вызывает конфликт и понижал его версию через muon

large ust

picture 66

picture 8486

picture 14831

В ответ на такую команду аптитюд всё равно пукнет, слишком много пакетов. Если уж переустанавливать всё, то aptitude reinstall должен получать имена пакетов по одному в цикле, а файл должен содержать версии пакетов. Я генерирую файл с именами-версиями так:
alias aptfixver=»sudo aptitude search

А я пользуюсь связкой из своего скрипта и пары программ. Перед тем как применить изменения аптитюд спрашивает.

$ sudo aptitude search

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

picture 14831

Обновил первый скрипт, тут новая версия, если что пишите на мыло.

$ sudo aptitude search

picture 14831

Пару слов, что он делает, если это не совсем очевидно:

picture 7641

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

У меня некоторые пакеты установлены не из репозиториев, например, драйвера для принтера или SOFA Statistics Open For All.

picture 14831

Исключения легко дописать в грип, например так:

И как я уже писал, перед тем как применить, можно почитать что аптитюд спрашивает и подкорректировать действия (например если написать +deadbeef он удален не будет)

picture 66

picture 14831

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

picture 13526

Скорее, не по теме, но не могу разобраться, что значит «виртуальный пакет»
Программа не устанавливается в 12.10:
torrentstream-player-data : Зависит: libupnp3 (>= 1.4.3) который является виртуальным пакетом.
Зависит: libx264-116 который является виртуальным пакетом. или
libx264-120 который является виртуальным пакетом.

picture 7641

Виртуальный пакет предоставляет на выбор несколько различных программ/библиотек различных версий.
К примеру:
aptitude show djvu-viewer
No current or candidate version found for djvu-viewer
Package: djvu-viewer
State: not a real package
Provided by: atril, djview3, djview4, evince, evince-gtk, okular-extra-backends, zathura-djvu
Посмотреть список виртуальных пакетов можно aptitude search «


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

picture 14595

«aptitude не может разрулить зависимости и предлагает снести пол системы»- чуток не понял, удаляються пакеты/програмы которые связаны с неугодным нам пакетом, вызывающим конфликт, устанавливаем нажный нам пакет, потом доустанавливаем то что пришлось удалить и теперь основной вопрос- но ведь тогда потянеться тот пакет который нужный этим приложениям и вызывал конфликт, как быть? и проканает ли вообще??

Тема создана два года назад. Сколько воды утекло с тех пор? Правильно. А как известно, даже в одну воду нельзя войти дважды.
Чтобы понять и проканает ли вообще?? нужно пробовать самому, а потом отписаться для всех. Или сидеть у воды и ждать невесть чего.

picture 14595

хорошо, но я имел ввиду что решение немного противоречивое, и больше напоминает легендарные танцы с бубном нежели альтернативу, но хорошо я вас понял)

picture 66

Источник

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

Пытаюсь установить gosjava-jre, получаю неудовлетворенные зависимости. Перерыл интернет, пока ничего не помогает, спасибо за помощь зараннее

# sudo apt-get install gosjava-jre
Чтение списков пакетов… Готово
Построение дерева зависимостей
Чтение информации о состоянии… Готово
Некоторые пакеты невозможно установить. Возможно, вы просите невозможного,
или же используете нестабильную версию дистрибутива, где запрошенные вами
пакеты ещё не созданы или были удалены из Incoming.
Следующая информация, возможно, поможет вам:

Пакеты, имеющие неудовлетворённые зависимости:
gosjava-jre: Зависит: gosjava-jre-headless (= 2:1.8−58labft2) но он не будет установлен
Зависит: gosjava-8-jre, но он не будет установлен
E: Невозможно исправить ошибки, у вас отложены (held) битые пакеты.

4 ответа

Поставили, у нас работает)

6773 21a6bb577b40206139cc44c17740e0f4

Уточню, я использую Virtual Box 5.2.6, через образ соответсвенно на виртуалке установил Astra SE 1.5

Проводил настройку по инструкции

Сделал (за все время, а использую 2 дня, и разумеется сейчас повторил)

#deb cdrom:[OS Astra Linux 1.5 smolensk — amd64 DVD ]/ smolensk contrib main non-free

# sudo aptitude update
Игнор cdrom://OS Astra Linux 1.5 smolensk — amd64 DVD smolensk InRelease
Игнор cdrom://OS Astra Linux 1.5 smolensk — amd64 DVD smolensk Release. gpg
Игнор cdrom://OS Astra Linux 1.5 smolensk — amd64 DVD smolensk Release
Ошибка cdrom://OS Astra Linux 1.5 smolensk — amd64 DVD smolensk/contrib amd64 Packages
Пожалуйста, используйте apt-cdrom, чтобы APT смог распознать данный CD. apt-get update не используется для добавления нового CD
Ошибка cdrom://OS Astra Linux 1.5 smolensk — amd64 DVD smolensk/main amd64 Packages
Пожалуйста, используйте apt-cdrom, чтобы APT смог распознать данный CD. apt-get update не используется для добавления нового CD
Ошибка cdrom://OS Astra Linux 1.5 smolensk — amd64 DVD smolensk/non-free amd64 Packages
Пожалуйста, используйте apt-cdrom, чтобы APT смог распознать данный CD. apt-get update не используется для добавления нового CD
Игнор cdrom://OS Astra Linux 1.5 smolensk — amd64 DVD smolensk/contrib Translation-ru_RU
Игнор cdrom://OS Astra Linux 1.5 smolensk — amd64 DVD smolensk/contrib Translation-ru
Игнор cdrom://OS Astra Linux 1.5 smolensk — amd64 DVD smolensk/contrib Translation-en
Игнор cdrom://OS Astra Linux 1.5 smolensk — amd64 DVD smolensk/main Translation-ru_RU
Игнор cdrom://OS Astra Linux 1.5 smolensk — amd64 DVD smolensk/main Translation-ru
Игнор cdrom://OS Astra Linux 1.5 smolensk — amd64 DVD smolensk/main Translation-en
Игнор cdrom://OS Astra Linux 1.5 smolensk — amd64 DVD smolensk/non-free Translation-ru_RU
Игнор cdrom://OS Astra Linux 1.5 smolensk — amd64 DVD smolensk/non-free Translation-ru
Игнор cdrom://OS Astra Linux 1.5 smolensk — amd64 DVD smolensk/non-free Translation-en
Из кэша packages.lab50.net smolensk InRelease
Из кэша packages.lab50.net se15 InRelease
Из кэша packages.lab50.net smolensk/main Sources
Из кэша packages.lab50.net smolensk/main amd64 Packages
Из кэша packages.lab50.net se15/main amd64 Packages
Игнор packages.lab50.net smolensk/main Translation-ru_RU
Игнор packages.lab50.net smolensk/main Translation-ru
Игнор packages.lab50.net smolensk/main Translation-en
Игнор packages.lab50.net se15/main Translation-ru_RU
Игнор packages.lab50.net se15/main Translation-ru
Игнор packages.lab50.net se15/main Translation-en
87% [Обработка]W: Не удалось получить cdrom://OS Astra Linux 1.5 smolensk — amd64 DVD /dists/smolensk/contrib/binary-amd64/Packages: Пожалуйста, используйте apt-cdrom, чтобы APT смог распознать данный CD. apt-get update не используется для добавления нового CD
W: Не удалось получить cdrom://OS Astra Linux 1.5 smolensk — amd64 DVD /dists/smolensk/main/binary-amd64/Packages: Пожалуйста, используйте apt-cdrom, чтобы APT смог распознать данный CD. apt-get update не используется для добавления нового CD
W: Не удалось получить cdrom://OS Astra Linux 1.5 smolensk — amd64 DVD /dists/smolensk/non-free/binary-amd64/Packages: Пожалуйста, используйте apt-cdrom, чтобы APT смог распознать данный CD. apt-get update не используется для добавления нового CD
E: Не удалось скачать некоторые индексные файлы. Они были проигнорированы, или вместо них использовались старые.
E: Не удалось перестроить кэш пакетовroot@scam :

sudo aptitude update

# sudo aptitude update
Из кэша packages.lab50.net smolensk InRelease
Из кэша packages.lab50.net se15 InRelease
Из кэша packages.lab50.net smolensk/main Sources
Из кэша packages.lab50.net smolensk/main amd64 Packages
Из кэша packages.lab50.net se15/main amd64 Packages
Игнор packages.lab50.net smolensk/main Translation-ru_RU
Игнор packages.lab50.net smolensk/main Translation-ru
Игнор packages.lab50.net smolensk/main Translation-en
Игнор packages.lab50.net se15/main Translation-ru_RU
Игнор packages.lab50.net se15/main Translation-ru
Игнор packages.lab50.net se15/main Translation-en

sudo apt-install gosjava-jre

# sudo apt-install gosjava-jre
sudo: apt-install: command not found
root@scam :

# sudo apt-get install gosjava-jre
Чтение списков пакетов… Готово
Построение дерева зависимостей
Чтение информации о состоянии… Готово
Некоторые пакеты невозможно установить. Возможно, вы просите невозможного,
или же используете нестабильную версию дистрибутива, где запрошенные вами
пакеты ещё не созданы или были удалены из Incoming.
Следующая информация, возможно, поможет вам:

Пакеты, имеющие неудовлетворённые зависимости:
gosjava-jre: Зависит: gosjava-jre-headless (= 2:1.8−58labft2) но он не будет установлен
Зависит: gosjava-8-jre, но он не будет установлен
E: Невозможно исправить ошибки, у вас отложены (held) битые пакеты.

Возможно проблема в пункте 2, но точно сказать не могу, если в файле

deb cdrom:[OS Astra Linux 1.5 smolensk — amd64 DVD ]/ smolensk contrib main non-free

# sudo aptitude update
Игнор cdrom://OS Astra Linux 1.5 smolensk — amd64 DVD smolensk InRelease
Игнор cdrom://OS Astra Linux 1.5 smolensk — amd64 DVD smolensk Release. gpg
Игнор cdrom://OS Astra Linux 1.5 smolensk — amd64 DVD smolensk Release
Ошибка cdrom://OS Astra Linux 1.5 smolensk — amd64 DVD smolensk/contrib amd64 Packages
Пожалуйста, используйте apt-cdrom, чтобы APT смог распознать данный CD. apt-get update не используется для добавления нового CD
Ошибка cdrom://OS Astra Linux 1.5 smolensk — amd64 DVD smolensk/main amd64 Packages
Пожалуйста, используйте apt-cdrom, чтобы APT смог распознать данный CD. apt-get update не используется для добавления нового CD
Ошибка cdrom://OS Astra Linux 1.5 smolensk — amd64 DVD smolensk/non-free amd64 Packages
Пожалуйста, используйте apt-cdrom, чтобы APT смог распознать данный CD. apt-get update не используется для добавления нового CD
Игнор cdrom://OS Astra Linux 1.5 smolensk — amd64 DVD smolensk/contrib Translation-ru_RU
Игнор cdrom://OS Astra Linux 1.5 smolensk — amd64 DVD smolensk/contrib Translation-ru
Игнор cdrom://OS Astra Linux 1.5 smolensk — amd64 DVD smolensk/contrib Translation-en
Игнор cdrom://OS Astra Linux 1.5 smolensk — amd64 DVD smolensk/main Translation-ru_RU
Игнор cdrom://OS Astra Linux 1.5 smolensk — amd64 DVD smolensk/main Translation-ru
Игнор cdrom://OS Astra Linux 1.5 smolensk — amd64 DVD smolensk/main Translation-en
Игнор cdrom://OS Astra Linux 1.5 smolensk — amd64 DVD smolensk/non-free Translation-ru_RU
Игнор cdrom://OS Astra Linux 1.5 smolensk — amd64 DVD smolensk/non-free Translation-ru
Игнор cdrom://OS Astra Linux 1.5 smolensk — amd64 DVD smolensk/non-free Translation-en
Из кэша packages.lab50.net smolensk InRelease
Из кэша packages.lab50.net se15 InRelease
Из кэша packages.lab50.net smolensk/main Sources
Из кэша packages.lab50.net smolensk/main amd64 Packages
Из кэша packages.lab50.net se15/main amd64 Packages
Игнор packages.lab50.net smolensk/main Translation-ru_RU
Игнор packages.lab50.net smolensk/main Translation-ru
Игнор packages.lab50.net smolensk/main Translation-en
Игнор packages.lab50.net se15/main Translation-ru_RU
Игнор packages.lab50.net se15/main Translation-ru
Игнор packages.lab50.net se15/main Translation-en
87% [Обработка]W: Не удалось получить cdrom://OS Astra Linux 1.5 smolensk — amd64 DVD /dists/smolensk/contrib/binary-amd64/Packages: Пожалуйста, используйте apt-cdrom, чтобы APT смог распознать данный CD. apt-get update не используется для добавления нового CD
W: Не удалось получить cdrom://OS Astra Linux 1.5 smolensk — amd64 DVD /dists/smolensk/main/binary-amd64/Packages: Пожалуйста, используйте apt-cdrom, чтобы APT смог распознать данный CD. apt-get update не используется для добавления нового CD
W: Не удалось получить cdrom://OS Astra Linux 1.5 smolensk — amd64 DVD /dists/smolensk/non-free/binary-amd64/Packages: Пожалуйста, используйте apt-cdrom, чтобы APT смог распознать данный CD. apt-get update не используется для добавления нового CD
E: Не удалось скачать некоторые индексные файлы. Они были проигнорированы, или вместо них использовались старые.
E: Не удалось перестроить кэш пакетов

Прошу помочь чем сможете, многое уже перепробывал, пока без результатов.

Вывод apt-cache policy gosjava-jre

# apt-cache policy gosjava-jre
gosjava-jre:
Установлен: (отсутствует)
Кандидат: 2:1.8−58labft2
Таблица версий:
2:1.8−58labft2 0
500 packages.lab50.net/gosjava/ se15/main amd64 Packages

Также пытался сделать

# sudo apt-get clean
root@scam :

# sudo apt-get autoremove
Чтение списков пакетов… Готово
Построение дерева зависимостей
Чтение информации о состоянии… Готово
обновлено 0, установлено 0 новых пакетов, для удаления отмечено 0 пакетов, и 0 пакетов не обновлено.
root@scam :

# sudo apt-get update
В кэше packages.lab50.net smolensk InRelease
В кэше packages.lab50.net se15 InRelease
В кэше packages.lab50.net smolensk/main Sources
В кэше packages.lab50.net smolensk/main amd64 Packages
В кэше packages.lab50.net se15/main amd64 Packages
Игн packages.lab50.net smolensk/main Translation-ru_RU
Игн packages.lab50.net smolensk/main Translation-ru
Игн packages.lab50.net smolensk/main Translation-en
Игн packages.lab50.net se15/main Translation-ru_RU
Игн packages.lab50.net se15/main Translation-ru
Игн packages.lab50.net se15/main Translation-en
Чтение списков пакетов… Готово
root@scam :

# sudo apt-get install gosjava-jre
Чтение списков пакетов… Готово
Построение дерева зависимостей
Чтение информации о состоянии… Готово
Некоторые пакеты невозможно установить. Возможно, вы просите невозможного,
или же используете нестабильную версию дистрибутива, где запрошенные вами
пакеты ещё не созданы или были удалены из Incoming.
Следующая информация, возможно, поможет вам:

Пакеты, имеющие неудовлетворённые зависимости:
gosjava-jre: Зависит: gosjava-jre-headless (= 2:1.8−58labft2) но он не будет установлен
Зависит: gosjava-8-jre, но он не будет установлен
E: Невозможно исправить ошибки, у вас отложены (held) битые пакеты.

Источник

При установке пакетов из официальных или сторонних репозиториев вы можете столкнуться с проблемой неудовлетворенные зависимости 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. Некоторые из способов довольно сложные, а другие проще. Но сама эта система, согласно которого пакеты зависят от других, а те ещё от других очень сложная и не удивительно, что время от времени в ней возникают ошибки. А какие способы решения этой проблемы вы знаете? Напишите в комментариях?

Creative Commons License

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

Понравилась статья? Поделить с друзьями:
  • Ubuntu обнаружена ошибка в системной программе как исправить
  • Ubuntu не устанавливается пакет ошибка
  • Ubuntu не удалось получить временная ошибка при разрешении
  • Ubuntu как проверить флешку на ошибки
  • Ubuntu как проверить файловую систему на ошибки