我错误地运行了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 PID
PID 是你找到的数字,或者发出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
。它应该会重新安装它尝试删除的所有软件包。您不需要手动安装每个软件包。