在日常的 Linux 系统维护中,我们经常需要通过 APT 包管理器来更新软件包。然而,有时会遇到由于网络配置或外部服务支持的问题导致的更新失败。例如,当尝试从 Docker 官方仓库获取最新版本的 Docker 时,可能会遇到如下错误:
W: Failed to fetch https://download.docker.com/linux/debian/dists/bookworm/InRelease
Could not handshake: Error in the pull function. [IP: 2600:9000:26a6:6800:3:db06:4200:93a1 443]
W: Some index files failed to download. They have been ignored, or old ones used instead.这种情况通常发生在你的系统尝试通过 IPv6 访问 Docker 的 CDN 节点时遇到了连接问题。这个问题可以通过强制 APT 使用 IPv4 来解决。下面我们将详细介绍如何操作。
编辑 APT 配置
要让 APT 强制使用 IPv4,你需要编辑 APT 的配置文件。你可以通过以下命令来实现这一点:
echo 'Acquire::ForceIPv4 "true";' | sudo tee /etc/apt/apt.conf.d/99force-ipv4这条命令会在 /etc/apt/apt.conf.d/ 目录下创建一个名为 99force-ipv4 的新文件,并写入一行配置,告诉 APT 在执行任何网络操作时优先考虑 IPv4 地址。
更新软件包列表
完成上述配置后,你可以尝试再次运行 APT 更新命令来验证是否解决了问题:
sudo apt update如果一切正常,你应该不会再看到之前的错误信息了。
额外提示:检查系统时间
值得注意的是,有时候类似的错误可能由其他原因引起,比如系统时间不准确可能导致 SSL/TLS 握手失败。确保你的系统时间是正确的,可以通过启用 NTP 同步来自动调整时间:
sudo timedatectl set-ntp on 

Comments | NOTHING