实际上,如果我们在安装过程中暂停任何应用程序或暂停更新,那么在恢复时,我们会自动遇到一些问题,例如
E: Could not get lock /var/cache/apt/archives/lock - open (11: Resource temporarily unavailable)
E: Unable to lock directory /var/cache/apt/archives/
E: Could not get lock /var/lib/dpkg/lock - open (11: Resource temporarily unavailable)
E: Unable to lock the administration directory (/var/lib/dpkg/), is another process using it?
我知道如何通过删除锁来解决这些问题。但我想知道为什么在执行更新/安装时会出现锁定。
答案1
很简单,锁的初衷就是:防止其他进程干扰安装。想象一下以下场景:
Process1 开始安装
basex
,这取决于default-jre
Process2 开始删除
default-jre
。basex
由于删除过程已在进行中,因此无法获知此删除操作。进程2完成。
进程 1 完成。存在无法正常工作的系统。如果安装相同的软件包,然后同时删除,情况会更糟。
虽然可以通过为包和任何必须存在的包(依赖项)持有每个包的锁来解决这个问题,但我不知道为什么不这样做。
如果存在冲突的软件包,也会出现类似的问题。例如,可能安装了一个软件包,同时又安装了另一个冲突的软件包(作为依赖项或其他方式)。