Debian

如何使用 debian 打包中止安裝可解除安裝包

  • April 7, 2021

TLDR

我從較新版本的發行版中發布了dpkg -i PACKAGE較新版本的 PACKAGE。它依賴於一個新的 libc6 包,因此安裝失敗。現在這個包阻塞了整個apt系統。

我只是想讓系統明白它可以停止安裝這個包。我該怎麼做?

更長的完整版

我的伺服器在 Debian 10 上。它mawk-1.3.3從 1996 年開始發貨(根據mawk -W version)。在我的 ubuntu 筆記型電腦上mawk-1.3.4,我在筆記型電腦上編寫的腳本不兼容mawk-1.3.3

所以我開始尋找一種快速的方法(是的,我知道……)在我的伺服器上安裝它。恰好在下一個 debianmawk-1.3.4unstabletestingfor中。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-filesand 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-filesbashmawk並且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’s 狀態。

所以在絕望中,我查看/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我忘記我想要安裝此軟體包。

我認為沒有必要進行任何黑客攻擊。要求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 記憶體中仍有包)。

引用自:https://unix.stackexchange.com/questions/643896