我的个人存储库中有一个依赖于 python-cherrypy3 的 debian 软件包程序。但是,Ubuntu 16.04 附带的 python-cherrypy3 版本 3.5.0 有一个严重的未修复错误,导致我的程序无法创建 HTTPS Web 服务器。我已将 3.2.2 版本放入python-cherrypy3
我的个人存储库中。然后放入一个
Depends: python-cherrypy3 (<< 3.2.5)
在debian/control
我的软件包文件中。这个错误从 cherrypy 3.2.5 版本开始,因此低于此版本的任何版本都是可以接受的。但是 Ubuntu 16.04apt-get
无法解决依赖关系,仍然倾向于较新的版本 3.5。
The following packages have unmet dependencies:
my-package : Depends: python-cherrypy3 (< 3.2.5)
E: Unable to correct problems, you have held broken packages.
如果我这样做apt-get install python-cherrypy3=3.2.2
并从我的存储库安装旧版本的 cherrypy,那么我的软件包安装就可以正常工作。我能以某种方式自动完成此操作吗,这样当有人发出 apt 时,apt-get install my-package
就会自动从我的存储库安装 3.2.2 版本?
答案1
仅使用软件包的依赖项无法实现这一点。如果没有特殊配置,则apt-get
始终优先选择可用的最高版本,因此,即使您的软件包依赖于python-cherrypy3 (<< 3.2.5)
,它也会选择可用的最高版本python-cherrypy3
。并且由于Ubuntu 15.10 及以上版本只有 3.5.0+,这就是您将得到的。
python-cherrypy3
你可以做的是提供你个人仓库中打包的 3.2.5 版本,它使用纪元数,这样它就比较新的包更受青睐。然后依赖于它。