checkinstall包与python冲突

checkinstall包与python冲突

我正在尝试将发行版从 Debian 6 升级到 7,但我使用 . 创建和安装的一些软件包遇到了一些问题checkinstall。进行升级时,我收到以下消息:

Preparing to replace python 2.6.6-3+squeeze7 (using .../python_2.7.3-4+deb7u1_all.deb) ...
Unpacking replacement python ...
dpkg: error processing /var/cache/apt/archives/python_2.7.3-4+deb7u1_all.deb (--unpack):
 trying to overwrite '/usr/bin/2to3', which is also in package python3.4.0 3.4.0-1

这是由于2to3我的python3.4.0包中安装的。我使用以下行创建并安装了该包:

checkinstall -D --fstrans=no --dpkgflags=--force-overwrite \
    [email protected] --backup=yes \
    --pkgname=python3.4.0 --pkgversion=3.4.0 make install

事后看来,这可能不是最好的主意,--force-overwrite但这是我安装软件包的唯一方法。

我想完成软件包的安装python_2.7.3-4+deb7u1_all,但告诉它使用安装的文件python3.4.0而不是覆盖它。另外,我想重新打包我的包,python3.4.0这样我就可以在不使用的情况下正确安装它--force-overwrite,并告诉系统使用最新版本2to3而不是 py2.7 包提供的版本。 (希望避免以后出现更多问题)

答案1

您不必担心覆盖该文件,bin/2to3 文件是一个 5 行脚本,仅第一行不同(它调用的二进制 python 版本):

$ diff -u bin/2to3 ../2.7.8
--- bin/2to3    2014-06-24 16:39:43.000000000 +0200
+++ ../2.7.8/bin/2to3   2014-07-21 18:45:32.000000000 +0200
@@ -1,4 +1,4 @@
-#! /opt/python/3.4.1/bin/python3.4
+#! /opt/python/2.7.8/bin/python2.7
 import sys
 from lib2to3.main import main

2to3实际上是一个指向 resp 的链接2to3-2.72to3-3.4

不过,我建议不要安装 2.7.3(2012-04-09 发布)中的二进制文件,因为 3.4.0 版本中包含的 2to3 模块是最新的(2014-03-16 发布)。

如果您单独安装(在我的例子中)2.7.8 和 3.4.1,您将获得四个目录 :bininclude和。 libshare

  • 下面share只有手册页,名称如 python3.4.1,因此这些名称不会冲突(即使它们位于同一目录中)。
  • underlib和underinclude之间也是有区别的,所以也不会有冲突。python3.4python2.7
  • 在 下bin,有几个指向特定版本二进制文件的链接( 2to3idlepydoc、等)。python

当然,您需要一些python命令(或2to3),您只需要决定哪个版本应该是默认的。

10 多年来,Python 一直能够安装多个彼此相邻的 main.minor 版本,您只需决定哪个版本设置了符号链接(因此是仅使用 调用的版本python

答案2

更正后的创建包的命令:

checkinstall -D --fstrans=no \
[email protected] --backup=yes \
--pkgname=python3.4.0 --pkgversion=3.4.0 make altinstall

altinstall将停止创建2to3python等,并仅安装版本特定名称(2to3-3.4python3.4本例中为 )。通用名称只是符号链接。

相关内容