比如使用sudo apt install deepin-wine-helper安装的时候
下列软件包有未满足的依赖关系:
libgirepository-1.0-1 : 破坏: python-gi (< 3.34.0-4~) 但是 3.30.4-1 正要被安装
使用apt show libgirepository-1.0-1 -a可以看到里面的“Breaks:”行
1 | Package: libgirepository-1.0-1 |
意思就是,libgirepository-1.0-1与版本小于3.34.0-4的python-gi冲突。
我们安装的包deepin-wine-helper版本为3.30.4-1,恰好符合冲突范围。
也可以看到python-gi依赖于这个包,
所以正确的方法是调整deepin-wine-helper包依赖的版本。
那么如何调整?
使用
1 | sudo apt-cache depends deepin-wine-helper --recurse> depends.log |
查看这个包的依赖情况。打印的日志大概是先序遍历的。
找到python-gi:
看到是python-gobject依赖python-gi

deepin-wine-plugin依赖python-gobject
查了一下,deepin-wine-plugin依赖的python-gobject没有限定版本。
同样的,python-gobject也没有限定python-gi的版本
那么我们只要安装一个新版本python-gi即可解决问题。
但是看了一下python-gi,发现默认的源只有3.30的版本,新版本要手动编译。
由于python-gi是python-gobject的一个子集,所以我们下载pygobject的源码编译即可。
编译需要源码,源码去哪找?
你们有没有发现source.list里面的deb-src被注释了,其实这个就是源码,取消注释之后apt-update可以去看看。
1 | apt-get source pygobject |

发现来自https://salsa.debian.org/gnome-team/pygobject,去看看
发现含有python-gi.install的是最后一个版本是3.36.0-3:
那么我们clone源码就可以了
1 | sudo apt install dpkg-dev devscripts |
之后就安装成功,撒花!
同样的道理:
这个只要按照这个教程:https://askubuntu.com/questions/976391/rename-custom-deb-package把python-dbus.deb python-gobject-2 里面的依赖的python改为python2.7之后安装即可。
1 | sudo apt download python-gobject-2 |
======================================
当然我们也可以自己python里安装这个库,然后伪造一个包,当然,这并不推荐,还是按照上面那个方法好:
1 | sudo apt install libgirepository1.0-dev gcc libcairo2-dev pkg-config python2-dev gir1.2-gtk-3.0 |
1 | sudo apt-get install -y equivs |
参考:https://askubuntu.com/questions/132872/how-can-i-determine-why-apt-get-will-install-a-package
https://askubuntu.com/questions/18192/how-to-fake-a-package-version-installed
https://www.linuxfordevices.com/tutorials/debian/build-packages-from-source
https://askubuntu.com/questions/976391/rename-custom-deb-package
说些什么吧!