安装包时出现奇怪的依赖错误

安装包时出现奇怪的依赖错误

我正在尝试安装我们在 Ubuntu 中制作的应用程序(使用迅速地) 到 Raspberry Pi Raspbian。然而,它有一个依赖关系 python:任何 (>= 2.7.1-0ubuntu2)尽管 Raspbian 安装了 Python 2.8,但它在 Raspbian 中未得到满足。不过,该应用程序在 Ubuntu 12.04 至 15.04 中运行良好。

这是因为版本号中提到了 Ubuntu 吗?

除了强制 dpkg 忽略 Python 版本依赖性问题之外,还有其他解决方法吗?(尽管这会使应用程序成为损坏的包)

这是控制文件的依赖部分(它是由Quickly创建的)

取决于:dconf-gsettings-backend | gsettings-后端、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,尖叫

我不知道为什么有三个Python条目。

编辑:我犯了一个错误。 Pi 运行 Python 2.7.3

这是结果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

这些是结果

    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

答案1

Python 的三个依赖项是:

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

最终效果是需要 2.7 系列的 Python(例如不是 2.6,不是 3.x),但不早于2.7.1-0ubuntu2.

前两者放在一起就是说您需要安装 Python 2.7,但允许是 Python 2.7.anything。也就是说,它必须至少为 2.7(第一个要求)但小于 2.8(第二个要求)。 (Python 2.8 不存在也永远不会存在,但这只是 Debian 使用的版本排序系统中指定边界的一种方式。)

最后一个可能来自您在包构建过程中的额外依赖项。您可能substvar在源debian/control文件中(不是包中的文件,而是源文件中的文件)中有一个导致它自动生成的文件。它与第一个要求部分重叠。从某种意义上说,它不如其他依赖项严格,因为:any它允许安装python来自不同的体系结构。从另一种意义上来说它更严格,因为它要求Python至少是2.7.1-0ubuntu2.该特定版本中一定存在错误修复,导致 2.7.0 甚至普通的 2.7.1 无法满足依赖性。

尽管它安装了Python 2.8。

不。Python 2.8 不存在。

肯定是你安装的Python版本不符合要求。说什么dpkg -l python

答案2

包名称包含冒号的依赖项用于多架构。该依赖项的格式为(加上可选的版本规范)。PACKAGE-NAME:ARCH

架构部分可以是any表示可以跨架构满足依赖关系。这多架构规范甚至举python:any个例子。对 Python 的大多数依赖项仅需要它运行脚本,因此 Python 可执行文件适用于哪种架构并不重要;这些包声明对python:any.

Raspbian wheezy 有支持多架构的 dpkg 和 APT 版本,但我认为该功能需要使用dpkg --add-architecture armhf.

当然,请确保您拥有该软件包的最新版本python。它不可能是 2.8,因为它不存在。在 Raspbian 喘息中,它应该是 2.7.3。

相关内容