如何在按下 CTRL+Z 后恢复“apt-get remove”操作

如何在按下 CTRL+Z 后恢复“apt-get remove”操作

我错误地运行了apt-get remove WRONG_PACKAGE,意识到这一点后,我按了CTRL+Z来中断该过程,因为删除该包会开始删除大约 100 多个其他包。

现在,当我尝试运行它时apt-get install REMOVED_ONES,它显示:

E: dpkg was interrupted, you must manually run 'sudo dpkg --configure -a' to correct the problem.

有沒有方法可以恢復它?

答案1

实际上...

CTRL+Z暂停該過程。

CTRL+c該過程。

注意暂停进程会将其发送到后台,直到您再次调用它。由于它已暂停,您可以运行另一个程序。它“看起来”好像已经消失了,但实际上并没有。它实际上会告诉您在进入后台之前已分配给它的进程 ID。

要知道哪些进程在后台运行,我们使用jobs命令,它将显示打开的终端上所有后台运行的进程及其各自的后台编号。

要再次调用该进程(实际上是继续您离开后的进程),请键入fg

fg表示前台。如果你想了解一下,可以从后台调到前台。如果你碰巧有其他暂停的进程,你可以通过fg 1对进程 1、fg 2对进程 2 等执行来转到它们。

CTRL请注意,如果您使用+将进程发送到后台,Z您将把进程发送到后台,但它将被停止。要使其再次运行,只需运行,bg然后运行该进程的后台 ID 作业,例如bg 2后台中的作业 2。

应用时apt-get(或 aptitude 或任何其他包管理器)的区别在于,在执行删除/升级/安装时,锁定文件不会被删除,或者 repo 文件可能会损坏。

您将需要逐字删除带有 的文件rm

在删除任何内容之前,请尝试包管理器所建议的操作,在这种情况下:

sudo dpkg --configure -a或者sudo dpkg-reconfigure -a如果你进行了升级。在大多数情况下(对我来说是所有情况),我必须先删除文件如下:

sudo rm -fr /var/cache/apt/archives/lock
sudo rm -fr /var/lib/dpkg/lock

如果你碰巧想要删除该进程(如果它仍然处于活动状态),你可以通过使用ps -e并找到 PID 号来查找它,然后使用kill -9 PIDPID 是你找到的数字,或者发出sudo killall NAME_OF_PROCESS

你也可以这样做:

sudo fuser -cuk /var/lib/dpkg/lock
sudo fuser -cuk /var/cache/apt/archives/lock
sudo rm -fr /var/cache/apt/archives/lock
sudo rm -fr /var/lib/dpkg/lock

完成所有这些操作后,您可以使用我在开头提到的应用程序推荐的命令,或者尝试重新安装您错误删除的软件包。我还建议您执行此操作sudo apt-get update以确保一切正确。

请注意,如果该软件包删除了所有其他软件包,请先尝试安装该软件包。例如,如果您执行了以下操作:

sudo apt-get remove unity错误地,那么首先尝试执行我提到的步骤,然后再次安装该精确的包:

sudo apt-get install unity

如果碰巧没有卸载则执行以下操作:

sudo -apt-get install --reinstall unity

答案2

我曾经遇到过类似的问题,并按照建议运行了命令。执行完命令后,您就可以了apt-get install WRONG_PACKAGE。它应该会重新安装它尝试删除的所有软件包。您不需要手动安装每个软件包。

相关内容