我正在尝试使用 apt-get 在服务器上安装新的东西并且收到此错误:
The following packages have unmet dependencies:
cassandra : Depends: python-support (>= 0.90.0) but it is not installable
Recommends: ntp but it is not going to be installed or time-daemon
...
E: Unmet dependencies. Try 'apt-get -f install' with no packages (or specify a solution).
到目前为止,我在网上找到的所有内容都建议升级/卸载 Cassandra。我绝对不能这样做!如何在不与 Cassandra 混淆的情况下消除此错误?我不介意我是否不能在使用包管理器之后升级它。
有没有办法删除包但保留其所有文件?
您可以通过手动编辑其软件包数据库来操作dpkg软件包管理系统,该数据库处于可能的安装状态之一:
/var/lib/dpkg/status
. 这是非常人性化的可读性。每个包都在自己的块中,中间有空行。每个块都可以指定Depends、Conflicts、Breaks、Provides、Replaces类型的行,这些行由 dpkg 解析以获取包树的视图并安装可能性或问题。当然,当apt或dpkg程序正在运行时,你应该小心编辑这个文件。停止无人值守升级服务也很重要。并且还要意识到,当您编辑的包被替代品或来自另一个存储库的升级/降级替换时,您的编辑会丢失。
在这种情况下,可以
python-support
从cassandra包的Depends:行中删除该包,然后 dpkg 不再缺少依赖项。您还可以在 cassandra 包上放置一个 Hold 标记,以阻止它及其状态条目被意外或无人看管的覆盖:
apt-mark hold cassandra
其他可能性是从状态数据库中删除cassandra包。但这会使它容易丢失对其他使其不起作用的软件包的升级。它的文件将被单独留下,并且可能存在由其他包配置触发的触发脚本。
或者你可以添加一个假的python-support包。当然,如果稍后安装其他真正依赖于它的程序,那将是危险的。
一些更贴切的技巧: https ://unix.stackexchange.com/a/161940