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설치된 파일을 사용하도록 지시합니다 . 또한 패키지 를 사용하지 않고도 올바르게 설치할 수 있도록 패키지를 다시 패키지하고 시스템에 py2.7 패키지에서 제공하는 버전 대신 최신 버전을 사용하도록 지시 python3.4.0하고 싶습니다 . (앞으로 더 이상 문제가 발생하지 않기를 바랍니다)python3.4.0--force-overwrite2to3

답변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. libshare

  • 아래에는 sharepython3.4.1과 같은 이름을 가진 맨 페이지만 있으므로 이름이 충돌하지 않습니다(같은 디렉토리에 있더라도).
  • under lib와 under include의 차이도 있으므로 충돌이 발생하지 않습니다.python3.4python2.7
  • 아래에는 특정 버전 바이너리( , , 등) bin에 대한 여러 링크가 있습니다 .2to3idlepydocpython

물론 몇 가지 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

altinstall2to3등 의 생성을 중지 python하고 버전별 이름(이 경우)만 설치 2to3-3.4합니다 python3.4. 일반 이름은 단지 기호 링크일 뿐입니다.

관련 정보