64 位平台上的 32 位包

64 位平台上的 32 位包

我基本上有两个问题:

  1. 如何在 Linux 上安装 32 位 Python 和 64 位 Python?
  2. 如何修复因以下失败尝试而损坏的系统?

我只是尝试在 Linux Mint 16 上安装 32 位 python 和 64 位 python 。它并不像我希望的那么简单(类似的东西sudo apt-get install python32会很好),但经过一番谷歌搜索后,我下载了 Python 2.7.6 并做了以下事情:

sudo apt-get install ia32-libs gcc-multilib checkinstall
CC="gcc -m32" LDFLAGS="-L/lib32 -L/usr/lib32 -Lpwd/lib32 -Wl,-rpath,/lib32 -Wl,-rpath,/usr/lib32" ./configure --prefix=/opt/pym32
make
sudo checkinstall

据说应该让我能够运行 32 位或 64 位(默认),如下所示:

python -c 'import sys; print sys.maxint'
/opt/pym32/bin/python -c 'import sys; print sys.maxint'

...但/opt/pym32/甚至没有被创建。更糟糕的是,我的系统现在报告 29 个损坏的依赖项,表明新的 python 替换了旧的 python 或类似的东西。为了解决这个问题,aptitude 建议我删除一大堆我需要的软件包并安装一大堆我不需要的软件包。

我使用了 checkinstall,而不是make install在出现问题时能够反转/卸载,但由于依赖关系损坏,卸载/重新安装 python 将无法工作。有办法摆脱这个困境吗?

答案1

64 位平台上的 32 位包

首先,您需要允许包管理器安装具有不同架构的包。但谁是谁呢? Apt 是wget和的简单组合dpkg。真正的包管理器是dpkg,它提供了处理真实包操作的低级基础设施*.deb

那么,让我们看看针对我们的特定案例的可用架构:

dpkg-architecture --list-known | grep -E "amd64|i386"

或者

dpkg-architecture --list-known | ack "amd64|i386"

正如您所看到的,在我们的案例中,架构是amd64i386。现在您可以允许包管理器安装i386包:

sudo dpkg --add-architecture i386

现在您可以安装您的软件包:

sudo aptitude update && sudo aptitude install python2.7:i386

通常,第一个i386包安装会导致安装大量依赖包。例如,在我的Debian x86_64 GNU/Linux 测试(延伸)安装skype(取决于libc6:i386)会导致安装189套餐:

dpkg --get-selections | ack i386 -c

问题是python2.7:i386与 冲突python2.7并且很多包依赖于python2.7.因此,python2.7:i386如果不删除所有图形环境,您将无法安装。

修复损坏的依赖关系

这很简单:

sudo apt-get install -f && sudo dpkg --configure -a

相关内容