ディストリビューションを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
ファイルを使用するように指示します。また、パッケージを使用せずに正しくインストールできるように、パッケージを再パッケージし、システムにpy2.7パッケージで提供されているバージョンの代わりに最新バージョンを使用するように指示したいと思いpython3.4.0
ます。 (今後は問題が発生しないことを願っています)python3.4.0
--force-overwrite
2to3
答え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.7
。2to3-3.4
。
ただし、バージョン3.4.0に含まれている2to3モジュールは最新(2014-03-16にリリース)なので、2.7.3(2012-04-09にリリース)のバイナリをインストールしないことをお勧めします。
bin
(私の場合は)2.7.8と3.4.1を別々にインストールすると、4つのディレクトリが作成されますinclude
。 lib
share
- 以下には
share
python3.4.1と同じ名前のマンページしかないので、名前は競合しません(同じディレクトリにあっても)。 - under
lib
と underinclude
の違いもあるため、競合は発生しません。python3.4
python2.7
- 以下には、特定のバージョンのバイナリ(、、など)
bin
への複数のリンクがあります。2to3
idle
pydoc
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
2to3
などの作成を中止し、バージョン固有のpython
名前(この場合)のみをインストール2to3-3.4
しますpython3.4
。一般名は単にシンボリックリンクです。