为什么 'apt-get install' 在下载过程中获取 /var/cache/apt/archives/lock

为什么 'apt-get install' 在下载过程中获取 /var/cache/apt/archives/lock

apt-get upgrade命令在下载和安装时均apt-get install <packagename>获取。/var/cache/apt/archives/lock

我认为应该可以不获取锁就下载软件包。我们应该只在升级/安装下载的软件包时才需要获取锁。你怎么看?为什么我们不能同时下载多个软件包?或者为什么我们不能在安装另一个软件包时下载软件包?

答案1

锁用于确保每次只有一个进程可以更改 apt 数据库。如果另一个进程正在安装软件包,而另一个进程正在安装软件包,那么它们最终可能会变得非常混乱并损坏数据库。有关此概念的更多信息,请谷歌搜索“数据库事务”或“原子性”。

您可以通过使用 /etc/apt/sources.list 中的链接自行下载软件包并在 Web 浏览器中浏览它们来避免锁定。然后,您可以使用 gdebi 或 dpkg 安装已下载的 deb。但是,如果您这样做,您将必须自行解决依赖关系,这并不总是那么容易,而且在我看来,这比锁定更烦人。

如果锁很烦人,那么可以考虑批量安装多个软件包,例如 apt-get install package1 package2 package3,然后去泡茶。

答案2

更新:抱歉,我的错。apt-get download package-name只下载package-name到当前目录。那么它就不能回答你的问题了。

apt-get download还没有下载依赖包。

下载软件包和依赖项但不安装的替代方法是:sudo apt-get -d install package-name

但它也不能解决锁的问题。

我认为不可能同时运行两个 apt-get 实例

如果你的目标是以更快的方式下载软件包,也许一个选择是使用 apt-fast (https://github.com/ilikenwf/apt-fast)而不是 apt-get (就我而言,我使用 apt-fast ,因为我的网络连接非常不稳定)

先前的回复:

一个选项是apt-get download package-name仅下载包,然后运行sudo apt-get install package-name以安装下载的包。

apt-get download不创建锁。

您可以同时apt-get download运行sudo apt-get install

相关内容