apt/dpkg で削除できないパッケージを手動で削除

apt/dpkg で削除できないパッケージを手動で削除

WSL2/Ubuntu 20.04がインストールされたPCがあります。最近パッケージ(Dellsrvadminパッケージ)をインストールしようとしました。systemdWSL2にインストールがないため、インストールは途中で失敗しました。

これにより、パッケージが半分の取り付け/損傷したままになり、枯渇したり、取り除いたり、dpkg清掃aptしたりすることはできません。

tim@DESKTOP-Q35QTRS:~/interlocutor$ sudo dpkg -r --force-all srvadmin-hapi
(Reading database ... 54160 files and directories currently installed.)
Removing srvadmin-hapi (9.3.2) ...
System has not been booted with systemd as init system (PID 1). Can't operate.
Failed to connect to bus: Host is down
dpkg: error processing package srvadmin-hapi (--remove):
 installed srvadmin-hapi package pre-removal script subprocess returned error exit status 1
System has not been booted with systemd as init system (PID 1). Can't operate.
Failed to connect to bus: Host is down
dpkg: error while cleaning up:
 installed srvadmin-hapi package post-installation script subprocess returned error exit status 1
Processing triggers for libc-bin (2.31-0ubuntu9.2) ...
Errors were encountered while processing:
 srvadmin-hapi
tim@DESKTOP-Q35QTRS:~/interlocutor$

dpkgでは、不可能な手順を手動で実行したり、破損したパッケージを削除したりできますか?

答え1

編集し、/var/lib/dpkg/info/srvadmin-hapi.prerm2set -x行目(つまり、#!この行の直後)に挿入します。このスクリプトの編集はrootとして実行する必要があります。

その後、もう一度実行してくださいdpkg -r --force-all srvadmin-hapi。これは、.prermスクリプト内で何が起こったのか、正確にどのコマンドが失敗したのかを示しています。これにより、問題を解決してパッケージを削除するのに十分な情報が提供されます。

あるいは、無差別な「修正」のために.prermがそれほど重要に見えない場合(または実行などの唯一の重要なタスクである場合systemctl stop srvadmin-hapi)、.prermスクリプトにsystemctl status挿入するだけです。exit 0これにより、問題なくパッケージを消去できます。

関連情報