我正在为依赖于 Node.js 的软件编写离线安装程序。为了能够安装 Node.js,我尝试以以下方式从远程存储库递归下载包含所有依赖项的 deb 包:
$ mkdir nodejs
$ cd nodejs
$ curl -sL https://deb.nodesource.com/setup_14.x | sudo bash -
$ apt-get download $(apt-cache depends --recurse --no-recommends --no-suggests --no-conflicts --no-breaks --no-replaces --no-enhances --no-pre-depends nodejs=14.17.0-deb-1nodesource1 | grep "^\w" | sort -u)
不幸的是,这个失败了,出现以下错误消息:
E: Can't find a source to download version '2.31-0ubuntu9.3' of 'libc6:amd64'
E: Can't find a source to download version '2.31-0ubuntu9.3' of 'libc6:i386'
我尝试通过下载特定的 deb 包来缩小问题范围,但仍然没有成功:
$ apt download libc6
E: Can't find a source to download version '2.31-0ubuntu9.3' of 'libc6:amd64'
libc6
已经安装的最有趣的东西:
$ sudo apt install libc6
Reading package lists... Done
Building dependency tree
Reading state information... Done
libc6 is already the newest version (2.31-0ubuntu9.3).
0 to upgrade, 0 to newly install, 0 to remove and 0 not to upgrade.
如果我指定了包的精确版本,那么一切都会顺利进行:
$ apt-cache madison libc6
libc6 | 2.31-0ubuntu9.2 | http://ru.archive.ubuntu.com/ubuntu focal-updates/main amd64 Packages
libc6 | 2.31-0ubuntu9 | http://ru.archive.ubuntu.com/ubuntu focal/main amd64 Packages
$ apt download libc6=2.31-0ubuntu9.2
我不明白为什么它不指定版本就不起作用。我原以为它会默认选择一个,就像所有其他软件包一样。
我还尝试在两个装有 Ubuntu 20.04.2 LTS 和 Kubuntu 20.04.2 LTS 的新虚拟机上按步骤下载 Node.js,一切正常。我的本地开发机器上有 Kubuntu 20.04.02 LTS。里面有什么问题吗?我还能检查什么来找出问题所在?apt-cache madison libc6
在所有这些虚拟机上都显示相同的结果。
更新
以下是apt-cache policy libc6 libc6:i386
请求的输出@N0rbert:
在本地机器上:
libc6: Installed: 2.31-0ubuntu9.3 Candidate: 2.31-0ubuntu9.3 Version table: *** 2.31-0ubuntu9.3 100 100 /var/lib/dpkg/status 2.31-0ubuntu9.2 500 500 http://ru.archive.ubuntu.com/ubuntu focal-updates/main amd64 Packages 2.31-0ubuntu9 500 500 http://ru.archive.ubuntu.com/ubuntu focal/main amd64 Packages libc6:i386: Installed: 2.31-0ubuntu9.3 Candidate: 2.31-0ubuntu9.3 Version table: *** 2.31-0ubuntu9.3 100 100 /var/lib/dpkg/status 2.31-0ubuntu9.2 500 500 http://ru.archive.ubuntu.com/ubuntu focal-updates/main i386 Packages 2.31-0ubuntu9 500 500 http://ru.archive.ubuntu.com/ubuntu focal/main i386 Packages
在虚拟机上:
Installed: 2.31-0ubuntu9.2 Candidate: 2.31-0ubuntu9.2 Version table: *** 2.31-0ubuntu9.2 500 500 http://ru.archive.ubuntu.com/ubuntu focal-updates/main amd64 Packages 100 /var/lib/dpkg/status 2.31-0ubuntu9 500 500 http://ru.archive.ubuntu.com/ubuntu focal/main amd64 Packages libc6:i386: Installed: (none) Candidate: 2.31-0ubuntu9.2 Version table: 2.31-0ubuntu9.2 500 500 http://ru.archive.ubuntu.com/ubuntu focal-updates/main i386 Packages 2.31-0ubuntu9 500 500 http://ru.archive.ubuntu.com/ubuntu focal/main i386 Packages
答案1
由于某种原因,您在本地安装了更高版本的 libc6。
您必须将它们降级为官方版本和
sudo apt-get install --reinstall libc6=2.31-0ubuntu9.2 libc6:i386=2.31-0ubuntu9.2