Debian:jessie Docker容器中crossbuild-essential-armel依赖未满足求助
解决Debian Jessie交叉编译容器中crossbuild-essential-armel的依赖问题
嘿,这个问题我之前帮人排查过,大概率是Debian Jessie的源已经归档导致的——毕竟Jessie早就停止官方支持了,原来的源地址失效后,包索引拉不到正确的版本,才会出现依赖满足不了的情况。试试下面这些步骤来修复:
1. 替换为归档源
首先得把容器里的APT源换成Debian官方的归档源,因为原来的Jessie源已经被移到归档服务器了:
- 先备份原来的源文件,防止改错了没法恢复:
cp /etc/apt/sources.list /etc/apt/sources.list.bak - 然后覆盖成归档源地址:
echo "deb http://archive.debian.org/debian/ jessie main contrib non-free" > /etc/apt/sources.list echo "deb http://archive.debian.org/debian-security jessie/updates main contrib non-free" >> /etc/apt/sources.list
2. 忽略过期的签名验证
归档源的签名早就过期了,APT会报错,所以得加个配置让它忽略这个:
echo "Acquire::Check-Valid-Until \"false\";" > /etc/apt/apt.conf.d/99ignore-release-date
3. 更新索引并重新安装依赖
现在可以更新包索引,然后尝试安装需要的交叉编译工具链了:
apt-get update apt-get install -y crossbuild-essential-armel
如果还是不行?试试手动指定版本安装
要是上面的步骤还是提示依赖问题,可能得手动先装满足版本要求的gcc和g++交叉编译包:
- 先看看归档源里能拿到的版本:
apt-cache show gcc-arm-linux-gnueabi | grep Version - 比如查到可用版本是
4.9.2-10+deb8u1,就先手动装这两个依赖:apt-get install -y gcc-arm-linux-gnueabi=4.9.2-10+deb8u1 g++-arm-linux-gnueabi=4.9.2-10+deb8u1 - 然后再装crossbuild-essential-armel:
apt-get install -y crossbuild-essential-armel
额外小技巧:清理损坏的包缓存
如果容器里之前的包缓存有损坏,也可能导致问题,先清理一下再试:
apt-get clean apt-get autoclean apt-get autoremove
内容的提问来源于stack exchange,提问作者ben-bibi
相关产品推荐
相关产品推荐

