为什么在安装应用程序和更新时必须锁定档案和 dpkg。

为什么在安装应用程序和更新时必须锁定档案和 dpkg。

实际上,如果我们在安装过程中暂停任何应用程序或暂停更新,那么在恢复时,我们会自动遇到一些问题,例如

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

很简单,锁的初衷就是:防止其他进程干扰安装。想象一下以下场景:

  1. Process1 开始安装basex,这取决于default-jre

  2. Process2 开始删除default-jrebasex由于删除过程已在进行中,因此无法获知此删除操作。

  3. 进程2完成。

  4. 进程 1 完成。存在无法正常工作的系统。如果安装相同的软件包,然后同时删除,情况会更糟。

虽然可以通过为包和任何必须存在的包(依赖项)持有每个包的锁来解决这个问题,但我不知道为什么不这样做。

如果存在冲突的软件包,也会出现类似的问题。例如,可能安装了一个软件包,同时又安装了另一个冲突的软件包(作为依赖项或其他方式)。

相关内容