Использование Debian Stretch v9.11.
Я пытаюсь установить необходимое для сборки, но не могу из-за неудовлетворенных зависимостей:
sudo apt install build-essential
Reading package lists... Done
Building dependency tree
Reading state information... Done
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:
The following packages have unmet dependencies:
build-essential : Depends: libc6-dev but it is not going to be installed or
libc-dev
Depends: g++ (>= 4:6.3) but it is not going to be installed
E: Unable to correct problems, you have held broken packages.
Политика apt-cache показывает:
apt-cache policy
Package files:
100 /var/lib/dpkg/status
release a=now
500 http://security.debian.org/debian-security stretch/updates/non-free amd64 Packages
release v=9,o=Debian,a=oldstable,n=stretch,l=Debian-Security,c=non-free,b=amd64
origin security.debian.org
500 http://security.debian.org/debian-security stretch/updates/contrib amd64 Packages
release v=9,o=Debian,a=oldstable,n=stretch,l=Debian-Security,c=contrib,b=amd64
origin security.debian.org
500 http://security.debian.org/debian-security stretch/updates/main amd64 Packages
release v=9,o=Debian,a=oldstable,n=stretch,l=Debian-Security,c=main,b=amd64
origin security.debian.org
500 http://deb.debian.org/debian stretch/non-free amd64 Packages
release v=9.11,o=Debian,a=oldstable,n=stretch,l=Debian,c=non-free,b=amd64
origin deb.debian.org
500 http://deb.debian.org/debian stretch/contrib amd64 Packages
release v=9.11,o=Debian,a=oldstable,n=stretch,l=Debian,c=contrib,b=amd64
origin deb.debian.org
500 http://deb.debian.org/debian stretch/main amd64 Packages
release v=9.11,o=Debian,a=oldstable,n=stretch,l=Debian,c=main,b=amd64
origin deb.debian.org
В /etc/apt/sources.list у меня есть следующий контент:
# deb cdrom:[Debian GNU/Linux 9.5.0 _Stretch_ - Official amd64 DVD Binary-1 20180714-10:25]/ stretch contrib main
deb http://deb.debian.org/debian stretch main contrib non-free
deb-src http://deb.debian.org/debian stretch main contrib non-free
# deb http://deb.debian.org/debian stretch-updates main
# deb-src http://deb.debian.org/debian stretch-updates main
# deb http://deb.debian.org/debian-security/ stretch/updates main
# deb-src http://deb.debian.org/debian-security/ stretch/updates main
deb http://security.debian.org/debian-security stretch/updates main contrib non-free
deb-src http://security.debian.org/debian-security stretch/updates main contrib non-free
# add backports
# deb http://ftp.debian.org/debian stretch-backports main
# stretch-updates, previously known as 'volatile'
# A network mirror was not selected during install. The following entries
# are provided as examples, but you should amend them as appropriate
# for your mirror of choice.
#
# deb http://deb.debian.org/debian/ stretch-updates main contrib
# deb-src http://deb.debian.org/debian/ stretch-updates main contrib
РЕДАКТИРОВАТЬ1: Политика apt-cache policy libc6-dev показывает:
apt-cache policy libc6-dev
libc6-dev:
Installed: (none)
Candidate: 2.24-11+deb9u4
Version table:
2.24-11+deb9u4 500
500 http://deb.debian.org/debian stretch/main amd64 Packages
2.24-11+deb9u1 500
500 http://security.debian.org/debian-security stretch/updates/main amd64 Packages
Политика apt-cache в g ++ показывает:
apt-cache policy g++
g++:
Installed: (none)
Candidate: 4:6.3.0-4
Version table:
4:6.3.0-4 500
500 http://deb.debian.org/debian stretch/main amd64 Packages
РЕДАКТИРОВАТЬ2: я имел deb http://ftp.de.debian.org/debian buster main
в /etc/apt/sources.list.d/.mc.list
Я помню, что однажды мне пришлось установить более новый mc, в котором была определенная ошибка.
РЕДАКТИРОВАТЬ3:
apt update
Get:1 http://security.debian.org/debian-security stretch/updates InRelease [94.3 kB]
Ign:2 http://deb.debian.org/debian stretch InRelease
Hit:3 http://deb.debian.org/debian stretch Release
Fetched 94.3 kB in 1s (69.7 kB/s)
Reading package lists... Done
Building dependency tree
Reading state information... Done
All packages are up to date.
apt upgrade
Reading package lists... Done
Building dependency tree
Reading state information... Done
Calculating upgrade... Done
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
apt-get install --fix-broken
Reading package lists... Done
Building dependency tree
Reading state information... Done
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
РЕДАКТИРОВАТЬ4:
sudo apt install libc6-dev g++
Reading package lists... Done
Building dependency tree
Reading state information... Done
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:
The following packages have unmet dependencies:
libc6-dev : Depends: libc6 (= 2.24-11+deb9u4) but 2.27-6 is to be installed
Depends: libc-dev-bin (= 2.24-11+deb9u4) but it is not going to be installed
E: Unable to correct problems, you have held broken packages.
sudo apt install build-essential
Reading package lists... Done
Building dependency tree
Reading state information... Done
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:
The following packages have unmet dependencies:
build-essential : Depends: libc6-dev but it is not going to be installed or
libc-dev
Depends: g++ (>= 4:6.3) but it is not going to be installed
E: Unable to correct problems, you have held broken packages.
РЕДАКТИРОВАТЬ5
sudo aptitude -f install build-essential
The following NEW packages will be installed:
build-essential dpkg-dev{a} fakeroot{a} g++{a} g++-6{a} libalgorithm-diff-perl{a} libalgorithm-diff-xs-perl{a} libalgorithm-merge-perl{a} libc-dev-bin{ab} libc6-dev{ab} libdpkg-perl{a} libfakeroot{a} libfile-fcntllock-perl{a} libstdc++-6-dev{a} linux-libc-dev{a} manpages-dev{a} 0 packages upgraded, 16 newly installed, 0 to remove and 0 not upgraded. Need to get 17.9 MB of archives. After unpacking 69.7 MB will be used.
The following packages have unmet dependencies:
libc6-dev : Depends: libc6 (= 2.24-11+deb9u4) but 2.27-6 is installed
libc-dev-bin : Depends: libc6 (< 2.25) but 2.27-6 is installed
The following actions will resolve these dependencies:
Keep the following packages at their current version:
1) build-essential [Not Installed]
2) g++ [Not Installed]
3) g++-6 [Not Installed]
4) libc-dev-bin [Not Installed]
5) libc6-dev [Not Installed]
6) libstdc++-6-dev [Not Installed]
Leave the following dependencies unresolved:
7) dpkg-dev recommends build-essential
Accept this solution? [Y/n/q/?]
The following NEW packages will be installed:
dpkg-dev{a} fakeroot{a} libalgorithm-diff-perl{a}
libalgorithm-diff-xs-perl{a} libalgorithm-merge-perl{a}
libdpkg-perl{a} libfakeroot{a} libfile-fcntllock-perl{a}
manpages-dev{a}
The following packages are RECOMMENDED but will NOT be installed: build-essential
0 packages upgraded, 9 newly installed, 0 to remove and 0 not upgraded.
Need to get 5,267 kB of archives. After unpacking 8,773 kB will be used.
Do you want to continue? [Y/n/?]
Get: 1 http://deb.debian.org/debian stretch/main amd64 libdpkg-perl all 1.18.25 [1,287 kB]
Get: 2 http://deb.debian.org/debian stretch/main amd64 dpkg-dev all 1.18.25 [1,595 kB]
Get: 3 http://deb.debian.org/debian stretch/main amd64 libfakeroot amd64 1.21-3.1 [45.7 kB]
Get: 4 http://deb.debian.org/debian stretch/main amd64 fakeroot amd64 1.21-3.1 [85.6 kB]
Get: 5 http://deb.debian.org/debian stretch/main amd64 libalgorithm-diff-perl all 1.19.03-1 [48.7 kB]
Get: 6 http://deb.debian.org/debian stretch/main amd64 libalgorithm-diff-xs-perl amd64 0.04-4+b2 [11.6 kB]
Get: 7 http://deb.debian.org/debian stretch/main amd64 libalgorithm-merge-perl all 0.08-3 [12.7 kB]
Get: 8 http://deb.debian.org/debian stretch/main amd64 libfile-fcntllock-perl amd64 0.22-3+b2 [35.3 kB]
Get: 9 http://deb.debian.org/debian stretch/main amd64 manpages-dev all 4.10-2 [2,145 kB]
Fetched 5,267 kB in 0s (15.0 MB/s)
Selecting previously unselected package libdpkg-perl.
(Reading database ... 38475 files and directories currently installed.)
Preparing to unpack .../0-libdpkg-perl_1.18.25_all.deb ...
Unpacking libdpkg-perl (1.18.25) ...
Selecting previously unselected package dpkg-dev.
Preparing to unpack .../1-dpkg-dev_1.18.25_all.deb ...
Unpacking dpkg-dev (1.18.25) ...
Selecting previously unselected package libfakeroot:amd64.
Preparing to unpack .../2-libfakeroot_1.21-3.1_amd64.deb ...
Unpacking libfakeroot:amd64 (1.21-3.1) ...
Selecting previously unselected package fakeroot.
Preparing to unpack .../3-fakeroot_1.21-3.1_amd64.deb ...
Unpacking fakeroot (1.21-3.1) ...
Selecting previously unselected package libalgorithm-diff-perl.
Preparing to unpack .../4-libalgorithm-diff-perl_1.19.03-1_all.deb ...
Unpacking libalgorithm-diff-perl (1.19.03-1) ...
Selecting previously unselected package libalgorithm-diff-xs-perl.
Preparing to unpack .../5-libalgorithm-diff-xs-perl_0.04-4+b2_amd64.deb ...Unpacking libalgorithm-diff-xs-perl (0.04-4+b2) ...
Selecting previously unselected package libalgorithm-merge-perl.
Preparing to unpack .../6-libalgorithm-merge-perl_0.08-3_all.deb ...
Unpacking libalgorithm-merge-perl (0.08-3) ...
Selecting previously unselected package libfile-fcntllock-perl.
Preparing to unpack .../7-libfile-fcntllock-perl_0.22-3+b2_amd64.deb ...
Unpacking libfile-fcntllock-perl (0.22-3+b2) ...
Selecting previously unselected package manpages-dev.
Preparing to unpack .../8-manpages-dev_4.10-2_all.deb ...
Unpacking manpages-dev (4.10-2) ...
Setting up libdpkg-perl (1.18.25) ...
Setting up libfile-fcntllock-perl (0.22-3+b2) ...
Setting up dpkg-dev (1.18.25) ...
Processing triggers for libc-bin (2.27-6) ...
Setting up libfakeroot:amd64 (1.21-3.1) ...
Setting up libalgorithm-diff-perl (1.19.03-1) ...
Processing triggers for man-db (2.7.6.1-2) ...
Setting up manpages-dev (4.10-2) ...
Setting up fakeroot (1.21-3.1) ...
update-alternatives: using /usr/bin/fakeroot-sysv to provide /usr/bin/fakeroot (fakeroot) in auto mode
Setting up libalgorithm-merge-perl (0.08-3) ...
Setting up libalgorithm-diff-xs-perl (0.04-4+b2) ...
Processing triggers for libc-bin (2.27-6) ...
[master 77f42a4] committing changes in /etc after apt run
13 files changed, 28 insertions(+)
create mode 120000 alternatives/faked.1.gz
create mode 120000 alternatives/faked.es.1.gz
create mode 120000 alternatives/faked.fr.1.gz
create mode 120000 alternatives/faked.sv.1.gz
create mode 120000 alternatives/fakeroot
create mode 120000 alternatives/fakeroot.1.gz
create mode 120000 alternatives/fakeroot.es.1.gz
create mode 120000 alternatives/fakeroot.fr.1.gz
create mode 120000 alternatives/fakeroot.sv.1.gz
create mode 100644 dpkg/shlibs.default
create mode 100644 dpkg/shlibs.override
create mode 100644 ld.so.conf.d/fakeroot-x86_64-linux-gnu.conf
sudo aptitude -f install build-essential
The following NEW packages will be installed:
build-essential g++{a} g++-6{a} libc-dev-bin{ab}
libc6-dev{ab} libstdc++-6-dev{a} linux-libc-dev{a}
0 packages upgraded, 7 newly installed, 0 to remove and 0 not upgraded.
Need to get 12.6 MB of archives. After unpacking 60.9 MB will be used.
The following packages have unmet dependencies:
libc6-dev : Depends: libc6 (= 2.24-11+deb9u4) but 2.27-6 is installed
libc-dev-bin : Depends: libc6 (< 2.25) but 2.27-6 is installed
The following actions will resolve these dependencies:
Keep the following packages at their current version:
1) build-essential [Not Installed]
2) g++ [Not Installed]
3) g++-6 [Not Installed]
4) libc-dev-bin [Not Installed]
5) libc6-dev [Not Installed]
6) libstdc++-6-dev [Not Installed]
Accept this solution? [Y/n/q/?]
No packages will be installed, upgraded, or removed.
0 packages upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
Need to get 0 B of archives. After unpacking 0 B will be used.
apt install build-essential
Reading package lists... Done
Building dependency tree
Reading state information... Done
Some packages could not be installed. This may mean that you haverequested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:
The following packages have unmet dependencies:
build-essential : Depends: libc6-dev but it is not going to be installed or
libc-dev
Depends: g++ (>= 4:6.3) but it is not going to be installed
E: Unable to correct problems, you have held broken packages.
Все тот же результат.
Тем временем я обновился до Debian v9.12.
apt --dry-run install libc6=2.24-11+deb9u4
Reading package lists... Done
Building dependency tree
Reading state information... Done
Suggested packages:
glibc-doc locales
The following packages will be REMOVED:
libc-bin locales sudo
The following packages will be DOWNGRADED:
libc6
WARNING: The following essential packages will be removed.
This should NOT be done unless you know exactly what you are doing!
libc-bin
0 upgraded, 0 newly installed, 1 downgraded, 3 to remove and 0 not upgraded.
Remv locales [2.27-6]
Remv libc-bin [2.27-6]
Remv sudo [1.8.23-2]
Inst libc6 [2.27-6] (2.24-11+deb9u4 Debian:9.12/oldstable [amd64])
Conf libc6 (2.24-11+deb9u4 Debian:9.12/oldstable [amd64])
Могу я попробовать apt --dry-run install libc6=2.24-11+deb9u4
?
Как я могу исправить неудовлетворенные зависимости?
Ваша проблема здесь в том, что в какой-то момент вы установили пакет из источника, который содержал более новый libc6
, и эта версия libc6
был установлен. Теперь ваши пакеты сломаны, так как libc6-dev
пакет имеет версию 2.24-11+deb9u4
, но пакет libc6 находится по адресу 2.27-6
. Вероятно, это из-за упомянутого вами репозитория buster.
Большая проблема здесь в том, что, поскольку buster - это версия debian, если она у вас в исходниках достаточно долгое время, в вашу систему могло быть установлено множество пакетов. Если бы он у вас действительно был только для установки mc, то решение могло бы быть попроще.
Вот что ты можешь сделать.
Обновите свою систему до buster. Возможно, это не лучшее решение для вас, но если вы замените свои источники на buster и выполните dist-upgrade, все должно быть хорошо. В конце концов, Buster - это стабильная версия. Тем не менее, вы можете подумать об этом, поскольку это полное обновление системы, и в зависимости от того, что в вашей системе установлено, это может нарушить предоставляемые вами услуги.
Понизьте версию пакета libc6. Это может сломать вашу систему, так что будьте осторожны. Обычно это плохая идея, если вы не знаете, что делаете. Прочтите весь этот текст и не копируйте команды вслепую.
Вы могли обновить и другие пакеты, поскольку я не знаю, как долго источник buster был активен на вашем компьютере. Во-первых, вам нужно установить правильный libc6
пакет, версия которого вам нужна 2.24-11+deb9u4
(согласно выводу в вашем сообщении). Итак, вам необходимо сделать следующее.
Выпустить
apt --dry-run install libc6=2.24-11+deb9u4
команда. В выводе команды вы увидите что-то вроде этого:
WARNING: The following essential packages will be removed.
This should NOT be done unless you know exactly what you are doing!
e2fsprogs libext2fs2 (due to e2fsprogs) libc-bin
Список пакетов может показаться подозрительным, но для каждого из них вам нужно проверить доступную версию с помощью apt-cache policy
. Вам нужна версия с наибольшим номером, которая не установлена локально. Запишите номера версий и запросите пакеты с этим точным номером версии для установки. Вам следует добавить --dry-run
переключитесь на команду apt, поскольку пакеты могут по очереди сломать другие (это маловероятно, но лучше быть уверенным). Вы наверняка встретите libext2fs2
, которого нет в Stretch. Вы можете спокойно игнорировать этот пакет, но если вы столкнетесь с другими пакетами, которые нельзя понизить, вы должны записать их и найти их позже. Обычно можно позволить apt
справиться с удалением тех.
После того, как вы получите все номера версий, передайте все пакеты в apt
, запрашивая номера версий, которые вы записали, так что вы получите длинный (ish) список пакетов, например этот (ваш список может быть длиннее, в зависимости от того, сколько пакетов вы установили из репозитория Buster):
apt --dry-run install e2fslibs=1.43.4-2+deb9u1 \
e2fsprogs=1.43.4-2+deb9u1\
libc-bin=2.24-11+deb9u4 \
libc6=2.24-11+deb9u4
Если вы не видите в выходных данных сообщения «необходимые пакеты будут удалены», вы можете безопасно выполнить команду без --dry-run
switch, и в вашей системе не будет битых пакетов. Если вы все же видите это сообщение, вам также необходимо включить эти пакеты в свою команду. Итерируйте, пока команда не попытается удалить какие-либо важные пакеты. Обратите внимание, однако, что несколько пакетов будут удалены, вы можете захотеть вручную переустановить их, если это необходимо (но на этом этапе (повторная) установка не должна вызывать каких-либо проблем или поврежденных пакетов).
Вот почему использование разных версий репозиториев в системе - плохая идея.
Наконец-то мне помогли на другом форуме: https://serverfault.com/a/1004951/302842
Это было решение для понижения версии проблемных пакетов:
apt install libc6/stretch libc6-dev/stretch libc-dev-bin/stretch libc-bin/stretch locales/stretch sudo/stretch
Понижение версии прошло успешно!
Вы можете попробовать очистить все данные кеша и установить зависимости вручную. Затем попробуйте установить пакет build-essential
$ sudo apt-get clean
$ sudo apt update
$ sudo apt upgrade
$ sudo apt install libc6-dev g++
$ sudo apt install build-essential