我尝试创建一个虚拟软件包equivs
,它为apt
提供python-oauthlib
软件包。问题是大多数依赖性问题都解决了,除了一个包含版本要求的包。我的问题是:如何在Provides
字段中指定版本号?equivs虚拟软件包版本号语法
我做了以下内容:
与
equivs-control python-oauthlib
编辑,创建一个控制文件中的控制文件,如下所示:
Section: misc
Priority: optional
Standards-Version: 3.9.2
Package: python-oauthlib-dummy
Version: 0.6.1
Provides: python-oauthlib
Architecture: all
Description: Dummy Python OAuthlib package
编译软件包:
equivs-build python-oauthlib
安装包装年龄:
sudo dpkg -i python-oauthlib-dummy_0.6.1_all.deb
安装软件包之前,apt-get
导致以下错误:
The following packages have unmet dependencies:
oneconf-common : Depends: python-oauthlib but it is not installed
python-oneconf : Depends: python-oauthlib but it is not installed
python-piston-mini-client : Depends: python-oauthlib but it is not installed
python-ubuntu-sso-client : Depends: python-oauthlib (>= 0.3.5) but it is not installed
安装包后,所有的相关性错误消失了,除了最后一个:
The following packages have unmet dependencies:
python-ubuntu-sso-client : Depends: python-oauthlib (>= 0.3.5)
这很有意义,因为我没有在控制文件中指定Provides
的版本号。什么是正确的语法来做到这一点?我试过各种东西,如Provides: python-oauthlib-0.6.1
,Provides: python-oauthlib-0.6-1
,Provides: python-oauthlib-0.6
,Provides: python-oauthlib (= 0.6.1)
但没有任何工作。相反,所有原始未满足的依赖关系都会返回,并从apt
开始增加W: Ignoring Provides line with DepCompareOp for package python-oauthlib
。
我知道虚拟包本身的版本号是不相关的,我只是选择了相同的数字来说明它是提供此版本的虚拟机。
背景:python-oauthlib-0.6.1
在某个点被安装了apt
。我想用pip
安装python-twitter
。这需要OAuthlib 1.0.3。 Pip无法升级oauthlib,因为它“由操作系统所拥有”。因此我想在apt中使用apt-get remove python-oauthlib
来卸载oauthlib。这是行不通的,因为许多软件包依赖于oauthlib通过其他依赖关系链,包括software-center
和其他我不想卸载的依赖项。因此,我使用dpkg -r --force-depends
删除了该软件包。这确实使我能够成功地将oauthlib
和python-twitter
安装在pip中,但由于缺少依赖关系,它使apt
不可用。为了解决这个问题,我正在尝试安装虚拟包。
按照https://www.debian.org/doc/debian-policy/ch-controlfields.html的'Provides'场不携带一个版本号。这就是说,我有同样的问题... – Jan