总长DR
我dpkg -i PACKAGE
从较新版本的发行版中发布了较新版本的 PACKAGE。它依赖于新的libc6包,因此安装失败。现在该软件包阻塞了整个apt
系统。
我只是想让系统明白它可以不再想安装这个软件包。我该怎么做呢?
更长的完整版
我的服务器运行在 Debian 10 上。它从 1996 年开始附带mawk-1.3.3
(根据mawk -W version
)。在我的 ubuntu 笔记本电脑上mawk-1.3.4
,我在笔记本电脑上编写的脚本与mawk-1.3.3
.
所以我开始寻找一种快速的方法(是的,我知道......)在我的服务器上安装它。碰巧是mawk-1.3.4
在下unstable
一个Debiantesting
中。sid
我偷偷下载了deb
,想尝试一下dpkg -i mawk_1.3.4.20200120-2_amd64.deb
。这失败了:
mawk depends on libc6 (>= 2.29); however:
Version of libc6:amd64 on system is 2.28-10.
公平地说,这是不是要走的路,我怎样才能回到以前?无论如何,什么也没安装,这应该不会太难,不是吗?
我尝试过的
apt --fix-broken install
想要卸载base-files
和bash
,我对此有一种非常不好的预感:
The following packages will be REMOVED:
base-files bash mawk rsync
WARNING: The following essential packages will be removed.
This should NOT be done unless you know exactly what you are doing!
base-files mawk (due to base-files) bash
我记得dpkg -r
并发布了一个dpkg -r mawk
对我的实际遗留版本有一点恐惧的mawk
:
base-files depends on awk; however:
Package awk is not installed.
Package mawk which provides awk is to be removed.
dpkg: error processing package mawk (--remove):
dependency problems - not removing
Errors were encountered while processing:
mawk
因此,我尝试gawk
以一种微妙的方式进行安装,以保持awk
依赖关系完整,从而保留base-files
and bash
(mawk
两者gawk
都可以提供awk
)。但请记住,安装系统被阻止,这是我得到的apt-get install gawk
。
The following packages have unmet dependencies:
gawk : PreDepends: libsigsegv2 (>= 2.9) but it is not going to be installed
mawk : Depends: libc6 (>= 2.29) but 2.28-10 is to be installed
E: Unmet dependencies. Try 'apt --fix-broken install' with no packages (or specify a solution).
而且它似乎不想让我在“指定解决方案”之前做任何事情。讽刺的是:对于这个问题我有一个非常清晰合理的解决方案:不再想安装这个软件包。我怎样才能做到这一点 ?
更多信息
正如dpkg
似乎告诉我它无法安装任何东西,我假设系统上没有真正接触过任何东西,所有这些问题似乎都位于 的dpkg
状态。
因此,在绝望中,我查看/var/lib/dpkg
并发现了 中提到的罪魁祸首包status
,以下是一些看起来有趣的部分:
...
Package: mawk
Status: install ok unpacked
Priority: required
...
Architecture: amd64
Multi-Arch: foreign
Version: 1.3.4.20200120-2
Config-Version: 1.3.3-17+b3
...
如果有人有建议。我已经准备好破解 上的文件和文件夹了/var/lib/dpkg
,但这似乎有点愚蠢的情况(而且似乎这也可能是很常见的情况),应该有一个很好的dpkg
命令来礼貌地告诉他们dpkg
忘记我想要的安装这个包。
答案1
我认为没有必要进行任何黑客攻击;要求apt
安装当前的 Debian 10 版本就足够了:
sudo apt install mawk/buster
或者,询问dpkg
:
sudo dpkg -i /var/cache/apt/archives/mawk_1.3.3-17+b3_amd64.deb
(假设您的 APT 缓存中仍然有该包)。