Erro de dependência estranho ao instalar o pacote

1

Estou tentando instalar um aplicativo que fizemos no Ubuntu (com Rapidamente ) para Raspberry Pi Raspbian. No entanto, ele tem uma dependência python: any (> = 2.7.1-0ubuntu2) que não foi atendida no Raspbian, embora tenha o Python 2.8 instalado. No entanto, o aplicativo funciona bem em todo o Ubuntu 12.04 a 15.04.

Isso é devido à menção do Ubuntu no número da versão?

Existe alguma solução alternativa, exceto forçar o dpkg a ignorar o problema de dependência de versão do Python? (isso funciona apesar de tornar o aplicativo um pacote corrompido)

Esta é a parte de dependência do arquivo de controle (foi criada por Rapidamente)

Depends: dconf-gsettings-backend | gsettings-backend, python (>= 2.7), python (<< 2.8), python:any (>= 2.7.1-0ubuntu2), gir1.2-glib-2.0, gir1.2-gtk-3.0, gir1.2-webkit-3.0, yelp

Não sei por que existem três entradas em Python.

Editar: cometi um erro. Pi executa o Python 2.7.3

Este é o resultado de dpkg -l python

Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name           Version      Architecture Description
+++-==============-============-============-=================================
ii  python         2.7.3-4+deb7 all          interactive high-level object-ori

Estes são os resultados de

    pi@raspberrypi ~ $ dpkg -I up-clock_6.0_all.deb
 new debian package, version 2.0.
 size 734750 bytes: control archive=2246 bytes.
     619 bytes,    12 lines      control              
    3762 bytes,    49 lines      md5sums              
     158 bytes,     9 lines   *  postinst             #!/bin/sh
     253 bytes,    14 lines   *  prerm                #!/bin/sh
 Package: up-clock
 Version: 6.0
 Architecture: all
 Maintainer: Archisman Panigrahi <[email protected]>
 Installed-Size: 1562
 Depends: dconf-gsettings-backend | gsettings-backend, python (>= 2.7), python (<< 2.8), python:any (>= 2.7.1-0ubuntu2), gir1.2-glib-2.0, gir1.2-gtk-3.0, gir1.2-webkit-3.0, yelp
 Section: python
 Priority: extra
 Description: A beautiful Clock, inspired by Ubuntu Touch homescreen, already on your desktop.
  Inspired by Ubuntu Touch homescreen, this clock is able to show you the
  time in a way you never seen before. The "clouds" changes colors and
  sizes automatically awhile showing you the time.



pi@raspberrypi ~ $ apt-cache policy python
    python:
      Installed: 2.7.3-4+deb7u1
      Candidate: 2.7.3-4+deb7u1
      Version table:
     *** 2.7.3-4+deb7u1 0
            500 http://mirrordirector.raspbian.org/raspbian/ wheezy/main armhf Packages
            100 /var/lib/dpkg/status
    
por Archisman Panigrahi 03.08.2015 / 19:27

2 respostas

3

As três dependências do Python são:

  • python (>= 2.7)
  • python (<< 2.8)
  • python:any (>= 2.7.1-0ubuntu2)

O efeito líquido é exigir Python da série 2.7 (por exemplo, não 2.6, não 3.x), mas não mais que 2.7.1-0ubuntu2 .

Os dois primeiros juntos são uma maneira de dizer que você precisa ter o Python 2.7 instalado, mas ele pode ser o Python 2.7.anything. Ou seja, tem que ser pelo menos 2,7 (primeiro requisito), mas menor que 2,8 (segundo requisito). (O Python 2.8 não existe e nunca existirá, mas é apenas uma maneira de especificar os limites no sistema de ordenação de versões usado pelo Debian.)

O último provavelmente vem de uma dependência adicional que você tem durante o builting de pacotes. Você pode ter um substvar no arquivo de origem debian/control (não aquele que está no pacote, aquele que está na origem) que faz com que seja gerado automaticamente. Ele se sobrepõe parcialmente ao primeiro requisito. Em certo sentido, é menos estrito que a outra dependência devido ao :any , que permite que o python instalado seja de uma arquitetura diferente. Em outro sentido, é mais estrito, porque requer que o Python seja pelo menos 2.7.1-0ubuntu2 . Deve ter havido uma correção de bug nessa versão específica que torna 2.7.0 ou mesmo 2.7.1 inelegível para atender a dependência.

although it has Python 2.8 installed.

Não. O Python 2.8 não existe.

Deve ser o caso de a versão do Python que você instalou não atender aos requisitos. O que diz dpkg -l python ?

    
por 03.08.2015 / 20:21
0

Uma dependência em que o nome do pacote contém dois pontos é para multiarch . O formato dessa dependência é PACKAGE-NAME:ARCH (mais uma especificação de versão opcional).

A parte da arquitetura pode ser any para indicar que a dependência pode ser atendida em arquitetura cruzada. A especificação multiarch até dá python:any como exemplo. A maioria das dependências do Python exige apenas a execução de scripts, portanto, não importa qual arquitetura o executável do Python serve; estes pacotes declaram uma dependência em python:any .

Raspbian wheezy tem versões do dpkg e APT que suportam multiarch, mas eu acho que o recurso precisa ser ativado explicitamente com dpkg --add-architecture armhf .

Claro, certifique-se de ter uma versão atualizada do pacote python . Não pode ser 2.8, porque isso não existe. Em Raspbian wheezy, deve ser 2.7.3.

    
por 04.08.2015 / 02:22