배포판을 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
. 일반 이름은 단지 기호 링크일 뿐입니다.