我在使用 amd64 Debian GNU/Linux 9.3 (stretch) virtualbox vm 时遇到问题。我想使用32位版本的libcheck(C单元测试框架),因为我测试的程序必须编译为32位,所以目前构建失败如下:
/usr/bin/ld: skipping incompatible //usr/lib/x86_64-linux-gnu/libcheck.a when searching for -lcheck
/usr/bin/ld: cannot find -lcheck
要安装 32 位版本的 libcheck,我执行了以下操作:
dpkg --add-architecture i386
apt-get update
apt-get install gcc-multilib
apt-get install check:i386
最后一条命令说:
...
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:
check:i386 : Depends: libsubunit-dev:i386 but it is not going to be installed
E: Unable to correct problems, you have held broken packages.
如果我继续喂它想要的东西,我最终会得到这样的结果:
sudo apt-get install check:i386 libsubunit-dev:i386 libsubunit0:i386 libc6:i386 install-info:i386 libgcc1:i386 gcc-6-base:i386
之后它说它将安装我想要的东西,但删除一半的系统(1766 个软件包)并要求输入“是,按我说的做!”。这显然是不对的。我的问题是:
- 我做错了什么?
- 我如何理解 apt 想要什么?
我很确定它应该可以工作,因为如果我在 resources.list 中启用测试,它就会安装 gcc 7 并且一切正常。问题是我不想在此虚拟机上进行测试,因此我将其状态恢复为拉伸。
答案1
问题出在混合拉伸+测试系统中,在我降级了一些与 libc 相关的软件包后,一切正常。所以我描述的安装check:i386的过程是正确的,只是系统被搞乱了。感谢德罗伯特的指导。