【问题标题】:Debian packages don't follow Provides?Debian 软件包不遵循提供?
【发布时间】:2015-11-01 21:56:58
【问题描述】:

我有以下 2 个包(定制):

**apt-cache show libmysqlclient18**


Package: libmysqlclient18
Section: libs
Installed-Size: 4194
Architecture: amd64
Version: 5.6.27
Depends: mysql-common (>= 5.6.27)
Filename: ./libmysqlclient18.deb
Size: 1167158
MD5sum: cf4a5d292456375c4099b11f5ee6270d
SHA1: e9c4f185bed358e5dda908555686b2884d341772
SHA256: 3092f2af61493bd8e75503568ff622ce1dd81a9ce04aa072d28c336092835e8f
SHA512: e0ffcf7cd48f230225fb48bf5fee8968f1e4006c581529b196a27bff06257fe1da55e80434af0e2e58d2805156da37c44d7994a5af233e8942ecc6d99d680117
Description-en: MySQL database client library
 MySQL is a fast, stable and true multi-user, multi-threaded SQL database
 server. SQL (Structured Query Language) is the most popular database query
 language in the world. The main goals of MySQL are speed, robustness and
 ease of use.
 .
 This package includes the client library.

还有以下内容:

**dpkg --info libmysqlclient20.deb**


 new debian package, version 2.0.
 size 1429220 bytes: control archive=909 bytes.
     768 bytes,    18 lines      control
      72 bytes,     1 lines      md5sums
     268 bytes,    15 lines   *  postinst             #!/bin/bash
     139 bytes,     7 lines   *  postrm               #!/bin/sh
      45 bytes,     0 lines      shlibs
 Package: libmysqlclient20
 Architecture: amd64
 Version: 5.7.9
 Section: libs
 Depends: mysql-common (>= 5.7.9)
 Provides: libmysqlclient15, libmysqlclient18
 Conflicts: libmysqlclient15, libmysqlclient18
 Replaces: libmysqlclient15, libmysqlclient18
 Installed-Size: 4565
 Description: MySQL shared client libraries
  The MySQL(TM) software delivers a very fast, multi-threaded, multi-user,
  and robust SQL (Structured Query Language) database server. MySQL Server
  is intended for mission-critical, heavy-load production systems as well
  as for embedding into mass-deployed software. MySQL is a trademark of
  Oracle. This package contains the shared libraries for MySQL client
  applications.

现在在尝试安装 libmysqlclient20 时,我确实收到了很多关于未满足依赖项的警告:

Reading package lists... Done
Building dependency tree
Reading state information... Done
dovecot-mysql is already the newest version.
libdbd-mysql-perl is already the newest version.
libdbd-mysql-perl set to manually installed.
libmailutils4 is already the newest version.
mailutils is already the newest version.
mailutils set to manually installed.
libqt4-sql-mysql is already the newest version.
libqt4-sql-mysql set to manually installed.
php5-mysql is already the newest version.
php5-mysql set to manually installed.
zabbix-server-mysql is already the newest version.
You might want to run 'apt-get -f install' to correct these:
The following packages have unmet dependencies:
 dovecot-mysql : Depends: libmysqlclient18 (>= 5.5.24+dfsg-1)
 libdbd-mysql-perl : Depends: libmysqlclient18 (>= 5.5.24+dfsg-1)
 libmailutils4 : Depends: libmysqlclient18 (>= 5.5.24+dfsg-1)
 libqt4-sql-mysql : Depends: libmysqlclient18 (>= 5.5.24+dfsg-1)
 mailutils : Depends: libmysqlclient18 (>= 5.5.24+dfsg-1)
 php5-mysql : Depends: libmysqlclient18 (>= 5.5.24+dfsg-1)
 zabbix-server-mysql : Depends: libmysqlclient18 (>= 5.5.24+dfsg-1)
                       Recommends: snmptt but it is not going to be installed
E: Unmet dependencies. Try 'apt-get -f install' with no packages (or specify a solution).

我无法理解的是,我确实在控制文件中提供了“Provides”标头以及“Replaces”标头。 怎么可能,当我说新包提供libmysqlclient18时,它选择忽略?

(当我想做apt-get -f install时,它想删除libmysqlclient20,并重新安装libmysqlclient18)。

有人知道我在这里缺少什么吗?

谢谢!

【问题讨论】:

    标签: debian packages


    【解决方案1】:

    引用Debian Policy Manual

    Provides 字段可能不包含版本号,在考虑对虚拟包名称的依赖或冲突时,将不考虑提供特定虚拟包的具体包的版本号。

    如果 Depends 没有版本化,provides 就会得到满足,但是始终没有版本化的 Provides 永远无法满足版本化的 Depends。

    所以:保持相同的包名并具有更高的版本号。

    【讨论】:

    • 与其保持相同的包名,不如考虑在实际包上使用与Depends“同名但版本号更高”的虚拟包
    猜你喜欢
    • 1970-01-01
    • 2014-11-12
    • 2012-04-22
    • 1970-01-01
    • 1970-01-01
    • 2011-05-23
    • 1970-01-01
    • 2021-02-09
    • 2012-02-15
    相关资源
    最近更新 更多