我基本上有两个问题:
- 如何在 Linux 上安装 32 位 Python 和 64 位 Python?
- 如何修复因以下失败尝试而损坏的系统?
我只是尝试在 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"
正如您所看到的,在我们的案例中,架构是amd64
和i386
。现在您可以允许包管理器安装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