Ошибки зависимости могут иногда возникать в Debian Linux, когда пользователь загружает пакет из Интернета, а операционная система не может найти нужные зависимые файлы и библиотеки, необходимые для успешного запуска программы. Итак, если вы столкнулись с ошибками зависимости в Debian при установке приложений, следуйте инструкциям и узнайте, как их исправить.
Обычно большинство пользователей Debian не сталкиваются с такими ошибками при установке пакетов, поскольку они, как правило, устанавливают только программное обеспечение, официально включенное в официальные источники программного обеспечения Apt. Если вы имеете дело со сломанными пакетами в Debian, у нас есть отдельная статья о том, как их исправить.
Примечание: в этом руководстве мы сосредоточимся на Debian Linux. При этом информация, которую мы рассмотрим в этом посте, не является эксклюзивной для Debian. Если вы используете операционную систему на основе Linux, производную от Debian, не стесняйтесь следовать своим указаниям!
Что такое программная зависимость?
Зависимость программного обеспечения — это зависимая библиотека, набор программ или набор инструментов, которые необходимы установленной программе для успешного выполнения. Без зависимостей любое приложение Linux, которое вы загружаете из Интернета для использования на своем ПК с Debian Linux, не будет работать правильно.
В наши дни проблемы с зависимостями встречаются в Debian редко из-за того, что в репозитории программного обеспечения поступает все больше и больше пакетов, а также из-за появления универсальных упаковочных решений, таких как AppImage, Flatpak и Snaps, которые берут на себя заботу о сборе отдельных зависимостей, объединяя все пользователю необходимо запустить приложение прямо из коробки.
Исправление ошибок зависимостей с помощью Apt-get в терминале
Вы можете не знать об этом, но менеджер пакетов Apt-get имеет встроенный механизм для решения этих типов проблем с зависимостями в Debian. Чтобы использовать команду Apt-get в Debian для устранения любых проблем с зависимостями, начните с открытия окна терминала на рабочем столе. Вы можете сделать это, нажав Ctrl + Alt + T или Ctrl + Shift + T на клавиатуре. В открытом окне терминала используйте команду Apt-get ниже.
sudo apt-get install -f
В качестве альтернативы, если вы используете версию Debian Linux, которая включает команду Apt, или, может быть, вы предпочитаете ее Apt-get, вы можете исправить проблемы с зависимостями, используя команду ниже.
sudo apt install -f
Исправление ошибок зависимости с помощью Synaptic Package Manager
Решение проблем с зависимостями в Debian через окно терминала очень полезно, особенно для тех, кто использует Debian Linux в серверной системе или что-то подобное. Однако, если вы предпочитаете использовать графический интерфейс, вам подойдет менеджер пакетов Synaptic.
Большинство систем Debian Linux поставляются с предустановленным и готовым к использованию менеджером пакетов Synaptic. Тем не менее, если у вас еще не установлено приложение, откройте окно терминала, нажав Ctrl + Alt + T или Ctrl + Shift + T на клавиатуре, и введите команду установки ниже.
sudo apt-get install synaptic -y
Когда в системе установлено приложение Synaptic, самое время начать его использовать. Откройте его, выполнив поиск «Synaptic Package Manager» в меню приложения и щелкните, чтобы запустить его.
При запуске приложения Synaptic вас попросят ввести пароль. Введите свой пароль пользователя. Если пароль будет принят, Synaptic будет готов к использованию.
Чтобы исправить проблему зависимости в Synaptic, найдите кнопку «Редактировать» в окне приложения и щелкните ее мышью. В меню «Правка» есть несколько опций. Просмотрите различные варианты «Исправить сломанный» и выберите его.
Выбрав опцию «Исправить сломанный», Synaptic автоматически назначит исправления зависимостей всем пакетам в системе. После выбора опции «Исправить поломку» нажмите кнопку «Применить», чтобы начать процесс исправления.
После нажатия кнопки «Применить» в Synaptic появится окно. В этом окне вы увидите, что идет загрузка. Дайте процессу завершиться. Когда все будет сделано, ваши проблемы с зависимостями исчезнут!
Если вы устали сталкиваться с проблемами программной зависимости в Debian Linux, сделайте себе одолжение и начните чаще использовать пакеты Flatpak и Snap, когда вам нужны приложения, которых нет в официальных репозиториях программного обеспечения.
Flatpak и Snap — отличные новые технологии, которые упрощают работу программного обеспечения в Linux. Они не требуют зависимостей. Все упаковано в аккуратную безопасную песочницу. Лучше всего то, что Debian Linux имеет тенденцию обновлять программное обеспечение не так быстро, как другие дистрибутивы Linux, вы сможете сверхзарядить свою систему, установив последние приложения.
Для получения информации о том, как настроить пакеты Snap в Debian, ознакомьтесь с нашим руководством по этому вопросу. Кроме того, вы можете создать официальный магазин Snap. Наконец, если вы хотите попробовать Flatpaks, следуйте нашему подробному руководству по нему здесь.
Во время установки программ с помощью пакетного менеджера apt в любом из дистрибутивов, использующих этот пакетный менеджер, вы можете столкнуться с ошибкой, что у вас зафиксированы сломанные пакеты. Это пакеты, которые не установились полностью потому что им не хватает зависимостей или процесс установки был по какой-либо причине прерван.
В этой статье мы рассмотрим что делать с такой ошибкой, как её исправить, а также я дам ссылки на другие материалы на сайте, которые помогут справится с проблемой.
Как исправить у вас зафиксированы сломанные пакеты?
1. Обновите списки пакетов
Возможно вам не удалось установить нужные пакеты потому что списки репозиториев устарели, и там ещё не было нужных пакетов. Для обновления списка пакетов выполните:
sudo apt update --fix-missing
2. Установите битые пакеты
После обновления списка пакетов из репозиториев может помочь установка битых пакетов. Этот шаг поможет особенно если вы устанавливали пакет с помощью dpkg и теперь нужно доустановить его зависимости с помощью пакетного менеджера. Для этого есть специальная команда:
sudo apt install -f
3. Очистите лишние пакеты
Установке могут мешать лишние пакеты, которые больше не нужны в системе. Для их удаления выполните:
sudo apt clean
Затем:
sudo apt autoremove
Утилита отобразит список всех битых пакетов, которые не установлены, вы можете попытаться их удалить с помощью команды:
sudo dpkg --remove -force --force-remove-reinstreq имя_пакета
4. Используйте dpkg
Вместо apt вы можете использовать команду dpkg чтобы посмотреть какие пакеты вызывают проблему. Просто выполните:
sudo dpkg --configure -a
Команда покажет проблемные пакеты, а потом вы сможете их удалить той же командой:
sudo dpkg --remove -force --force-remove-reinstreq имя_пакета
5. Разрешите зависимости
Битые пакеты чаще всего появляются из-за того, что пакетный менеджер не может найти для них нужные зависимости. Если вам всё же очень нужно установить такой пакет, просто разрешите эти зависимости. Для этого можно скачать и установить их вручную или если вы уверенны, что зависимости в пакете указаны неверно, можно скачать его распаковать и удалить мешающие зависимости. Подробнее об этом читайте в этой статье.
Выводы
В этой небольшой статье мы рассмотрели что делать если в вашей системе появились битые пакеты и как их исправить. Здесь решение проблемы очень сильно зависит от вашей ситуации, но здесь приведены основные варианты решения, которые должны помочь вернуть пакетный менеджер к работе. Иногда рекомендуют удалить пакет вручную из базы данных dpkg /var/lib/dpkg/status, однако лучше этого не делать и найти путь решить проблему по другому, ручное редактирование подобных файлов может создать ещё больше проблем.
Обнаружили ошибку в тексте? Сообщите мне об этом. Выделите текст с ошибкой и нажмите Ctrl+Enter.
Статья распространяется под лицензией Creative Commons ShareAlike 4.0 при копировании материала ссылка на источник обязательна .
Об авторе
Основатель и администратор сайта losst.ru, увлекаюсь открытым программным обеспечением и операционной системой Linux. В качестве основной ОС сейчас использую Ubuntu. Кроме Linux, интересуюсь всем, что связано с информационными технологиями и современной наукой.
In this article, I will take you through the steps to fix broken packages in Debian 10/11. Sometimes you might have noticed that whenever you try to run any update or try to install a new package then you always encountering broken package error. While this error could occur due to various number of reasons depending on server to server but here we will cover all the possible solutions that can help you solve this error with the current set of utilities you will have in your Debian based systems. So without any further delay, Let’s dive in !!
Also Read: How to Install curl on Debian 10/11 in 6 Easy Steps
In a typical Debian System, you will always find package managers like apt, apt-get and dpkg. So it is important that we try to use these tools only to solve our error. It is because even if you want to use any other utility to find and fix the broken package issue then you cannot do it as this error stops you to install any new package.
Method 1: Using apt or apt-get command
In this method first you can use apt utility to install any missing update using apt --fix-missing update
command and ensure that there are no further update remains to be installed.
root@debian:~# apt --fix-missing update
Hit:1 http://deb.debian.org/debian bullseye InRelease
Get:2 http://security.debian.org/debian-security bullseye-security InRelease [44.1 kB]
Get:3 http://deb.debian.org/debian bullseye-updates InRelease [39.4 kB]
Get:4 http://security.debian.org/debian-security bullseye-security/main Sources [38.9 kB]
Get:5 http://security.debian.org/debian-security bullseye-security/main amd64 Packages [48.0 kB]
Fetched 170 kB in 2s (90.5 kB/s)
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
Now you can simply run apt update
command to see if it works.
root@debian:~# apt update
Hit:1 http://security.debian.org/debian-security bullseye-security InRelease
Hit:2 http://deb.debian.org/debian bullseye InRelease
Hit:3 http://deb.debian.org/debian bullseye-updates InRelease
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
If it does not work then you can attempt fixing all broken packages by using apt install -f
command as shown below.
root@debian:~# apt install -f
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
The following packages were automatically installed and are no longer required:
libjq1 libonig5
Use 'apt autoremove' to remove them.
0 upgraded, 0 newly installed, 0 to remove and 1 not upgraded.
As you can see from above output, there are few packages installed which are no longer required in the System. So to remove those packages you need to run apt autoremove -y
command as shown below.
root@debian:~# apt autoremove -y
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
The following packages will be REMOVED:
libjq1 libonig5
0 upgraded, 0 newly installed, 2 to remove and 1 not upgraded.
After this operation, 1,035 kB disk space will be freed.
(Reading database ... 141510 files and directories currently installed.)
Removing libjq1:amd64 (1.6-2.1) ...
Removing libonig5:amd64 (6.9.6-1.1) ...
Processing triggers for libc-bin (2.31-13) ...
If you find any packages that needs to be upgraded then you can upgrade it by using apt upgrade -y
command as shown below.
root@debian:~# apt upgrade -y
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
Calculating upgrade... Done
The following NEW packages will be installed:
linux-image-5.10.0-9-amd64
The following packages will be upgraded:
base-files gir1.2-mutter-7 gnome-maps gnome-shell gnome-shell-common gnome-shell-extension-prefs krb5-locales libapr1 libatk-wrapper-java
libatk-wrapper-java-jni libbluray2 libc-bin libc-dev-bin libc-devtools libc-l10n libc6 libc6-dev libflatpak0 libgssapi-krb5-2 libk5crypto3 libkrb5-3
libkrb5support0 libmutter-7-0 libnautilus-extension1a libpam-modules libpam-modules-bin libpam-runtime libpam0g libperl5.32 libspeechd2 linux-image-amd64
linux-libc-dev locales mutter-common nautilus nautilus-data perl perl-base perl-modules-5.32 python3-reportbug python3-speechd reportbug
speech-dispatcher speech-dispatcher-audio-plugins speech-dispatcher-espeak-ng
45 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
If you are still facing the same error then you can try doing some cleanups using below mentioned commands.
root@debian:~# rm -rf /var/lib/apt/lists/* root@debian:~# rm /var/cache/apt/*.bin root@debian:~# apt clean
Method 2: Using dpkg command
Another method that you can use is through dpkg command. In this method first you need reconfigure all the partially installed packages by using dpkg --configure -a
command as shown in the below output.
root@debian:~# dpkg --configure -a
If the above command does not solve your problem then in the next step first you need to find all the broken packages using dpkg -l | grep ^..r
command as shown below.
root@debian:~# dpkg -l | grep ^..r
If you see any broken packages then you can remove it by using dpkg --force-all --remove package-name
command.
root@debian:~# dpkg --force-all --remove package-name
You can also remove all the files from /var/lib/dpkg/updates
directory using rm -rf /var/lib/dpkg/updates/*
command as shown below. More about dpkg command.
root@debian:~# rm -rf /var/lib/dpkg/updates/*
You can also use both apt and dpkg command together to fix broken package issues. Hopefully all the above shown steps are enough to solve your error.
Проблема
Программа не устанавливается из-за проблем с зависимостями, или команда
apt-get dist-upgrade оставляет пакеты, которые нужно удалить.
Решение
Существует несколько команд, которые могут пригодиться для решения этой зада-
чи; в этом разделе они перечисляются в том порядке, в котором их стоит попробо-
вать.
Допустим, проблемы возникли с пакетом tibpam-modules, который не желает
обновляться:
# apt-get install libpam-modules
The following packages have unmet dependencies:
libpam-modules: Depends: Iibdb3 (>=3.2.9-19.1) but 3.2.9-19 is to be installed
E: Broken packages
Если вы работаете в смешанной системе, для начала попробуйте указать
версию:
# apt-get install -t stable libpam-modules
Если это не помогает или система не является смешанной, попробуйте восполь-
зоваться системой разрешения конфликтов Debian:
# apt-get -f install
Затем выполните команду:
# dpkg –configure -a
И снова повторите команду:
# apt-get -f install
Если будет получен следующий ответ, значит, попытка завершилась неудачей:
Reading Package Lists… Done
Building Dependency Tree… Done
0 upgraded, 0 newly installed. 0 to remove and 1 not upgraded.
Теперь проверьте, что произойдет при удалении существующего пакета libpammodules:
# apt-get remove –dry-run libpam-modules
Reading Package Lists… Done
Building Dependency Tree… Done
The following packages will be REMOVED:
62 Глава 3. Установка и сопровождение в системах на базе Debian
adduser adminmenu apache at base-config courier-imap courier-imap-ssl courier-pop
courier-pop-ssl cron cupsys cupsys-driver-gimpprint diet-elements dict-foldoc dictgcide
diet-jargon dict-vera dict-wn dictd gdm2…
. . . .
WARNING: The following essential packages w i l l be removed
This should NOT be done unless you know exactly what you are doing!
login libpam-modules (due to login)
В данном случае исправление конфликтов зависимостей потребует едва ли не
полной перестройки системы. Чаще проблемы ограничиваются несколькими па-
кетами. В этом случае начинайте удалять наименее важные из них, пока конфлик-
ты зависимостей не будут разрешены, а затем переустановите все пакеты, которые
вам нужны.
Если apt-get -u dist-upgrage отображает какие-либо задержанные (held) пакеты,
от них лучше избавиться. Пакеты удерживаются из-за конфликтов зависимостей,
которые не удается разрешить apt. Попробуйте воспользоваться следующей ко-
мандой для поиска и исправления конфликтов:
# apt-get -о Debug::pkgProblemResolver=yes dist-upgrade
Если исправить конфликты не удается, команда завершается с сообщением
О upgraded. О newly installed, 0 to remove and 6 not upgraded.
Удаляйте held-пакеты один за одним, каждый раз запуская dist-upgrade, пока не
останется ни одного задержанного пакета. Затем установите заново все необходи-
мые пакеты. Не забудьте использовать ключ —dry-run, чтобы заранее знать обо всех
последствиях:
# apt-get remove –dry-run libsdl-peri
Комментарий
В «монолитных» системах подобные конфликты версий встречаются редко. Поль-
зователи смешанных систем сталкиваются с ними чаще. Чтобы предотвратить их,
будьте чрезвычайно осмотрительны при выборе устанавливаемых программ — при
первой установке Debian потратьте немного времени и выберите каждый необхо-
димый пакет.
См. также
dpkg(8), apt-get(8); Debian User’s List с архивами (http://lists.debian.org/debian-user/).
# apt-get -f install
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following packages were automatically installed and are no longer required:
libcurl3-nss libnspr4 libnspr4-dev libnss3 libnss3-dev
Use 'apt-get autoremove' to remove them.
0 upgraded, 0 newly installed, 0 to remove and 103 not upgraded.
3 not fully installed or removed.
After this operation, 0 B of additional disk space will be used.
Setting up apache2.2-common (2.2.22-13+deb7u4) ...
insserv: warning: script 'celery' missing LSB tags and overrides
insserv: There is a loop between service monit and celery if stopped
insserv: loop involving service celery at depth 2
insserv: loop involving service monit at depth 1
insserv: Stopping celery depends on monit and therefore on system facility `$all' which can not be true!
insserv: exiting now without changing boot order!
update-rc.d: error: insserv rejected the script header
dpkg: error processing apache2.2-common (--configure):
subprocess installed post-installation script returned error exit status 1
dpkg: dependency problems prevent configuration of apache2-mpm-itk:
apache2-mpm-itk depends on apache2.2-common (= 2.2.22-13+deb7u4); however:
Package apache2.2-common is not configured yet.
dpkg: error processing apache2-mpm-itk (--configure):
dependency problems - leaving unconfigured
dpkg: dependency problems prevent configuration of apache2-threaded-dev:
apache2-threaded-dev depends on apache2.2-common (= 2.2.22-13+deb7u4); however:
Package apache2.2-common is not configured yet.
dpkg: error processing apache2-threaded-dev (--configure):
dependency problems - leaving unconfigured
Errors were encountered while processing:
apache2.2-common
apache2-mpm-itk
apache2-threaded-dev
E: Sub-process /usr/bin/dpkg returned an error code (1)
Началось как мне кажется это после неудачной установки redmine через командуapt-get install redmine
Второй день не могу найти решения, в администрировании серверов новичек
Нужно доустановить пакеты apache, но не получается, например
# apt-get install libaprutil1-dev
Reading package lists... Done
Building dependency tree
Reading state information... Done
libaprutil1-dev is already the newest version.
The following packages were automatically installed and are no longer required:
libcurl3-nss libnspr4 libnspr4-dev libnss3 libnss3-dev
Use 'apt-get autoremove' to remove them.
0 upgraded, 0 newly installed, 0 to remove and 103 not upgraded.
3 not fully installed or removed.
After this operation, 0 B of additional disk space will be used.
Do you want to continue [Y/n]? Y
Setting up apache2.2-common (2.2.22-13+deb7u4) ...
insserv: warning: script 'celery' missing LSB tags and overrides
insserv: There is a loop between service monit and celery if stopped
insserv: loop involving service celery at depth 2
insserv: loop involving service monit at depth 1
insserv: Stopping celery depends on monit and therefore on system facility `$all' which can not be true!
insserv: exiting now without changing boot order!
update-rc.d: error: insserv rejected the script header
dpkg: error processing apache2.2-common (--configure):
subprocess installed post-installation script returned error exit status 1
dpkg: dependency problems prevent configuration of apache2-mpm-itk:
apache2-mpm-itk depends on apache2.2-common (= 2.2.22-13+deb7u4); however:
Package apache2.2-common is not configured yet.
dpkg: error processing apache2-mpm-itk (--configure):
dependency problems - leaving unconfigured
dpkg: dependency problems prevent configuration of apache2-threaded-dev:
apache2-threaded-dev depends on apache2.2-common (= 2.2.22-13+deb7u4); however:
Package apache2.2-common is not configured yet.
dpkg: error processing apache2-threaded-dev (--configure):
dependency problems - leaving unconfigured
Errors were encountered while processing:
apache2.2-common
apache2-mpm-itk
apache2-threaded-dev
E: Sub-process /usr/bin/dpkg returned an error code (1)