checkinstall conflitos de pacotes com python

2

Estou tentando fazer uma atualização de distribuição do Debian 6 para o 7 e estou tendo alguns problemas com alguns pacotes que criei e instalei com checkinstall . Ao fazer a atualização recebo a seguinte mensagem:

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

Isso ocorre devido ao 2to3 instalado no meu pacote python3.4.0. Eu criei e instalei esse pacote com esta linha:

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

Em retrospectiva, provavelmente não foi a melhor idéia usar --force-overwrite , mas essa foi a única maneira que eu consegui instalar o pacote.

Gostaria de concluir a instalação do pacote python_2.7.3-4+deb7u1_all , mas dizer para usar o arquivo instalado por python3.4.0 e não substituí-lo. Além disso, gostaria de remontar meu python3.4.0 para que eu possa instalá-lo corretamente sem usar --force-overwrite e dizer ao sistema para usar a versão mais recente de 2to3 em vez da fornecida pelo pacote py2.7. (Espero evitar mais problemas depois)

    
por Tim Tisdall 29.09.2014 / 19:47

2 respostas

1

Você não deve se preocupar em sobrescrever o arquivo, o arquivo bin / 2to3 é um script de 5 linhas que difere apenas na primeira linha (a versão binária do python que ele invoca):

$ 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 é na verdade um link para 2to3-2.7 resp. 2to3-3.4 .

No entanto, eu recomendo não instalar o binário de 2.7.3 (lançado em 2012-04-09) você tem como os módulos para 2to3 incluídos com a versão 3.4.0 estão mais atualizados (lançado em 2014-03-16).

Se você fizer uma instalação separada do (no meu caso) 2.7.8 e 3.4.1, obterá quatro diretórios: bin , include , lib e share .

  • Em share são apenas páginas man, com nomes como python3.4.1, de modo que esses nomes não entram em conflito (mesmo se forem no mesmo diretório).
  • Abaixo de lib e include são também diferenciações entre python3.4 resp python2.7 , então não haverá conflitos.
  • em bin , há vários links ( 2to3 , idle , pydoc , python , etc.) para binários específicos da versão.

Claro que você quer o comando python (ou 2to3 ) você só precisa decidir qual versão deve ser padrão.

O Python tem sido capaz de ser instalado com várias versões major.minor próximas umas das outras por mais de 10 anos, você só precisa decidir qual das versões define os links simbólicos (e, portanto, é a versão invocada com apenas python )

    
por 29.09.2014 / 20:00
0

O comando corrigido para criar o pacote:

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

altinstall parará a criação de 2to3 , python , etc e apenas instalará os nomes específicos da versão ( 2to3-3.4 , python3.4 neste caso). Os nomes genéricos são apenas links simbólicos.

    
por 01.10.2014 / 20:09