Debian 9.12 中的 libc6 依赖项不匹配

klo*_*lor 1 linux debian dependencies libc6 debian-stretch

我在 Debian 9.12 中遇到以下 libc6 依赖问题。

sudo apt 安装 libc6-dev

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.
Run Code Online (Sandbox Code Playgroud)

我该如何解决?

EDIT1: apt 政策 libc6

libc6:
  Installed: 2.27-6
  Candidate: 2.27-6
  Version table:
 *** 2.27-6 100
        100 /var/lib/dpkg/status
     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
Run Code Online (Sandbox Code Playgroud)

编辑2:

apt install libc6/stretch libc6-dev/stretch libc-dev-bin/stretch
Reading package lists... Done
Building dependency tree
Reading state information... Done
Selected version '2.24-11+deb9u4' (Debian:9.12/oldstable [amd64]) for 'libc6'
Selected version '2.24-11+deb9u4' (Debian:9.12/oldstable [amd64]) for 'libc6-dev'
Selected version '2.24-11+deb9u4' (Debian:9.12/oldstable [amd64]) for 'libc-dev-bin'
The following additional packages will be installed:
linux-libc-dev
Suggested packages:
glibc-doc locales
The following packages will be REMOVED:
libc-bin locales sudo
The following NEW packages will be installed:
libc-dev-bin libc6-dev linux-libc-dev
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, 3 newly installed, 1 downgraded, 3 to remove and 0 not upgraded.
Need to get 6,797 kB of archives.
After this operation, 1,437 kB disk space will be freed.
You are about to do something potentially harmful.
To continue type in the phrase 'Yes, do as I say!'
?]
Run Code Online (Sandbox Code Playgroud)

Pio*_*asz 6

您将系统配置为一次使用来自多个发行版的软件包(所谓的 Frankenstein-Debian),因此依赖性错误是正常的。cat /etc/apt/sources.list{,.d/*.list}bash 中运行以列出所有来源。

你的libc6 (version 2.27-6) 被卡在了stretch (version 2.24-11+deb9u4) 和buster (version 2.28-10) 之间。我的猜测是你从buster 中提取了一些包,而它仍然是测试发行版。解决这个问题最简单的方法是:

  1. 在您的 APT 来源中找到对testingbuster的引用。如果你发现类似的东西:

    deb http://deb.debian.org/debian testing main non-free contrib
    
    Run Code Online (Sandbox Code Playgroud)

    替换为:

    deb http://deb.debian.org/debian buster main non-free contrib
    
    Run Code Online (Sandbox Code Playgroud)

    因为buster不再是测试分布(靶心是)。

  2. 更新软件包列表:

    apt update
    
    Run Code Online (Sandbox Code Playgroud)
  3. 将您的libc6升级到buster的版本:

    apt install libc6/buster libc6-dev/buster libc-dev-bin/buster
    
    Run Code Online (Sandbox Code Playgroud)
  4. 考虑在不久的将来升级到 Debian 10以拥有来自同一发行版的所有软件包。

编辑:似乎你有几个包的版本高于 Stretch,所以你可以降级它们:

apt install libc6/stretch libc6-dev/stretch libc-dev-bin/stretch libc-bin/stretch locales/stretch sudo/stretch
Run Code Online (Sandbox Code Playgroud)

并从 APT 来源中删除buster和 company。

  • `apt 安装 libc6/stretch libc6-dev/stretch libc-dev-bin/stretch libc-bin/stretch locales/stretch sudo/stretch` (2认同)