为什么 /var/cache/apt/archives/ 中有 deb 文件?

蒂姆

为什么里面有 deb 文件/var/cache/apt/archives/

在什么情况下将 deb 文件下载到该目录中?

伊利亚·卡根

背景资料

在 Ubuntu(以及 Ubuntu 所基于的 Debian)中有两个东西通常被称为“包管理器”:dpkg和 APT。

dpkg是一个安装和删除软件包的程序,并维护安装了哪些软件包的数据库,在什么版本上。当它安装软件包时,它是从.deb存档文件中安装的。这些档案是分发包的方式。

dpkg不仅仅是复制(或删除)文件和更新其数据库——它还将运行安装脚本和删除脚本。它可能被认为非常复杂。但它不会做的是查找和下载软件包。

APT 查找和下载软件包,并dpkg适当运行以安装、升级和删除它们。APT 并不是任何单一的软件,尽管有一个apt安装 apt包提供其基本部分。

APT 包含一个库 ( libapt-pkg ),该库提供可通过各种工具访问的核心功能。aptapt-get也提供了一些此类工具,例如其他工具单独安装。APT 还提供各种配置文件来控制其核心库以及使用它的程序的工作方式。安装 apt

更重要的是,APT 是一个系统,用于存储和检索有关哪些软件源提供哪些版本的包的数据,并根据这些数据自动执行包管理任务,例如安装和升级包。这包括跟踪其他需要哪些包才能工作,并自动选择和安装适当的包以满足这些依赖关系。

例如,当我告诉该apt-get实用程序安装Chocolate-doom安装巧克力末日软件包时,它会计算出必须安装哪些其他软件包才能使其工作,并且也会自动检索并安装它们:

$ sudo apt-get install chocolate-doom
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following extra packages will be installed:
  doom-wad-shareware libmikmod3 libsdl-mixer1.2 libsdl-net1.2 libsdl1.2debian
Recommended packages:
  doom-engine
The following NEW packages will be installed:
  chocolate-doom doom-wad-shareware libmikmod3 libsdl-mixer1.2 libsdl-net1.2
  libsdl1.2debian
0 upgraded, 6 newly installed, 0 to remove and 1 not upgraded.
Need to get 0 B/2,846 kB of archives.
After this operation, 8,626 kB of additional disk space will be used.

软件中心、软件更新程序/更新管理器和 Synaptic 等图形工具执行的功能类似于apt-get. 他们还使用 APT 系统——通过观察其规则利用核心库提供的功能的组合——来改变安装的包,给用户他/他(通常)想要的东西,以这样的方式(通常)继续工作。

如何以及何时使用/var/cache/apt/archives文件夹

apt-getaptitude软件中心Synaptic软件更新程序/更新管理器或任何其他包管理实用程序从配置的软件源下载包(以及它们依赖的其他包)并安装它们时,下载的包(即 .deb 存档文件)从中安装它们)存储在/var/cache/apt/archives.

如果您在磁盘上有一个 .deb 文件并使用 安装它dpkg,则不会导致在/var/cache/apt/archives. 但是当一个使用或实现自动依赖解析和包检索APT 系统的程序下载包时,它就是在那里存储它们。

虽然自动下载的软件包的 .deb 文件存储在 中并从 安装/var/cache/apt/archives,但它们实际上并未直接下载到该位置。相反,不完整(即正在进行)的 .deb 文件下载存在于其中/var/cache/apt/archives/partial,然后/var/cache/apt/archives在完成后移动到

.deb 包文件/var/cache/apt/archives即使在成功安装后仍会被缓存,以备将来使用。但是您可以使用 安全地删除足够旧的 .deb 文件,它们不太可能再次被需要sudo apt-get autoclean,或者使用 .deb.deb完全清除缓存的文件sudo apt-get clean有关man apt-get更多信息,请参阅

为了说明sudo apt-get autoclean和类似命令的功能,以及确定您是否希望运行它们,您可以通过运行 then 和标志模拟它们的操作-s最好(或任何其他)动作动词之前传递这个标志autoclean通常不需要sudo在使用时以 root 身份运行实用程序-s,因为没有进行实际更改。

例如,在我的系统上:

$ apt-get -s autoclean
NOTE: This is only a simulation!
      apt-get needs root privileges for real execution.
      Keep also in mind that locking is deactivated,
      so don't depend on the relevance to the real current situation!
Reading package lists... Done
Building dependency tree       
Reading state information... Done
Del libubsan0 4.9.1-15ubuntu1 [83.7 kB]
Del cups-server-common 1.7.5-3 [519 kB]
Del python2.7 2.7.8-9 [205 kB]
Del g++-4.9 4.9.1-15ubuntu1 [17.4 MB]
Del libstdc++-4.9-dev 4.9.1-15ubuntu1 [1,121 kB]
    ....

列出的软件包不会被卸载相反,只会删除缓存的 .deb 文件。(事实上​​,当我运行该命令时,两者都没有发生,因为它只是一个模拟。)

其他下载的文件

通过dpkg(通过 APT 或其他方式)安装的软件实际上并不是从提供它的 .deb 文件中运行的。背景信息部分所述,将提取 .deb 文件。这就是为什么它们可以被删除并且安装的包继续运行的原因。

从 .deb 包安装的整个系统中的文件不会下载到它们的当前位置——而是从提供它们的 .deb 文件中提取到它们(或者可能是在安装期间或之后专门创建的,就像这种情况一样)对于某些配置文件)。

但是 .deb 文件并不是包管理实用程序下载的唯一文件。通常会下载其他文件,这些文件提供有关包所在位置的信息。

例如,当我运行时sudo apt-get update,输出包括如下行:

Get:13 http://us.archive.ubuntu.com utopic/main i386 Packages [1,341 kB]

这意味着下载并检查了http://us.archive.ubuntu.com/ubuntu/dists/utopic/main/binary-amd64/Packages.bz2这样的文件,以帮助更新 APT 数据库,其中包含有关可用软件包的信息(以及在什么版本中)来自该特定软件源。您可以在该/var/lib/apt/list目录中找到 Packages 文件和其他此类文件存储在那里的副本被赋予了不同的名称,如us.archive.ubuntu.com_ubuntu_dists_utopic_main_binary-amd64_Packages,因为可能有很多这样的文件。

你问的apt-cache特别清楚。它查询包数据库,但不会对系统进行任何更改或下载任何文件。

特定于软件中心的下载文件

当 Ubuntu 软件中心下载数据供自己使用时,特定于它而不与一般 APT(或dpkg)功能相关,它会将它们存储在/var/cache/software-center.

例如,在我的系统(以及大多数系统)上,该文件夹包含一个xapian子文件夹:

ek@Ilex:/var/cache/software-center/xapian$ ls
flintlock       postlist.baseB  record.baseB    spelling.baseB  termlist.baseB
iamchert        postlist.DB     record.DB       spelling.DB     termlist.DB
postlist.baseA  record.baseA    spelling.baseA  termlist.baseA

软件中心使用Xapian来索引信息以便快速搜索。

其他相关实用程序的下载文件

一些与 APT 系统一起使用的附加实用程序下载和存储文件作为其操作的一部分。apt-file在 Ubuntu 中默认不安装,但可以从apt-file安装apt文件安装

apt-file存储有关哪些包提供哪些文件的信息(即使对于未本地安装的包)。它通过下载压缩Contents文件来获取有关包内容的信息

$ sudo apt-file update
Downloading complete file http://us.archive.ubuntu.com/ubuntu/dists/utopic/Contents-amd64.gz
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 29.6M  100 29.6M    0     0   856k      0  0:00:35  0:00:35 --:--:--  832k

apt-file update以 root 身份运行时(如上),这些文件被下载到/var/cache/apt/apt-file目录中。为了发现这一点,我跑了:

$ sudo updatedb
$ locate Contents-amd64
/var/cache/apt/apt-file/us.archive.ubuntu.com_ubuntu_dists_utopic-proposed_Contents-amd64.gz
/var/cache/apt/apt-file/us.archive.ubuntu.com_ubuntu_dists_utopic_Contents-amd64.gz

请注意,本文中提供的信息提供了许多由 Ubuntu 上的包管理实用程序下载和存储的数据文件示例,但不应将其视为使用和存储此类文件的详尽实例列表。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

deb文件有问题。什么是deb文件?

来自分类Dev

为什么在RPM或DEB软件包中文件所有权很重要?

来自分类Dev

为什么在Ubuntu中有很多Java文件夹?

来自分类Dev

为什么在Lua的文件中有一个“ *”:read(“ * a”)?

来自分类Dev

为什么我的主目录中有grub文件?

来自分类Dev

为什么EXE文件中有文本函数名称?

来自分类Dev

为什么Linux txt文件中有隐藏的列?

来自分类Dev

为什么ubuntu iso文件名中有“ amd”?

来自分类Dev

为什么/ etc / cups中有.O文件?

来自分类Dev

为什么在Ubuntu中有很多Java文件夹?

来自分类Dev

为什么Ubuntu软件具有如此多的依赖(.deb)文件,而Windows和Mac没有?

来自分类Dev

为什么Ubuntu软件具有如此多的依赖(.deb)文件,而Windows和Mac没有?

来自分类Dev

为什么Ubuntu Software Center不安装.deb文件

来自分类Dev

Firefox为什么尝试使用Gedit打开.deb文件

来自分类Dev

为什么Ubuntu Software Center不安装.deb文件

来自分类Dev

Firefox为什么尝试使用Gedit打开.deb文件

来自分类Dev

为什么我不能正确安装本地deb文件

来自分类Dev

.ok文件在MRTG中有什么作用?

来自分类Dev

为什么fonts文件夹中有6个文件?

来自分类Dev

为什么在Linux中有多个可执行文件文件夹?

来自分类Dev

为什么我的文件夹中有很多gnucash文件?

来自分类Dev

用于安装内核的deb文件是什么?

来自分类常见问题

为什么在Android Studio项目中有两个build.gradle文件?

来自分类Dev

为什么在<head>中有“这不是长度为零的文件”

来自分类Dev

为什么我的插件的文件夹结构中有Scala版本?

来自分类Dev

为什么我正在写的文件中有多余的一行?

来自分类Dev

为什么在PostgreSQL中有2个libpq文件夹

来自分类Dev

为什么powershell命令在终端中有效但在lnk文件中无效?

来自分类Dev

为什么在MongoDB的Next.js应用程序中有api文件夹?

Related 相关文章

  1. 1

    deb文件有问题。什么是deb文件?

  2. 2

    为什么在RPM或DEB软件包中文件所有权很重要?

  3. 3

    为什么在Ubuntu中有很多Java文件夹?

  4. 4

    为什么在Lua的文件中有一个“ *”:read(“ * a”)?

  5. 5

    为什么我的主目录中有grub文件?

  6. 6

    为什么EXE文件中有文本函数名称?

  7. 7

    为什么Linux txt文件中有隐藏的列?

  8. 8

    为什么ubuntu iso文件名中有“ amd”?

  9. 9

    为什么/ etc / cups中有.O文件?

  10. 10

    为什么在Ubuntu中有很多Java文件夹?

  11. 11

    为什么Ubuntu软件具有如此多的依赖(.deb)文件,而Windows和Mac没有?

  12. 12

    为什么Ubuntu软件具有如此多的依赖(.deb)文件,而Windows和Mac没有?

  13. 13

    为什么Ubuntu Software Center不安装.deb文件

  14. 14

    Firefox为什么尝试使用Gedit打开.deb文件

  15. 15

    为什么Ubuntu Software Center不安装.deb文件

  16. 16

    Firefox为什么尝试使用Gedit打开.deb文件

  17. 17

    为什么我不能正确安装本地deb文件

  18. 18

    .ok文件在MRTG中有什么作用?

  19. 19

    为什么fonts文件夹中有6个文件?

  20. 20

    为什么在Linux中有多个可执行文件文件夹?

  21. 21

    为什么我的文件夹中有很多gnucash文件?

  22. 22

    用于安装内核的deb文件是什么?

  23. 23

    为什么在Android Studio项目中有两个build.gradle文件?

  24. 24

    为什么在<head>中有“这不是长度为零的文件”

  25. 25

    为什么我的插件的文件夹结构中有Scala版本?

  26. 26

    为什么我正在写的文件中有多余的一行?

  27. 27

    为什么在PostgreSQL中有2个libpq文件夹

  28. 28

    为什么powershell命令在终端中有效但在lnk文件中无效?

  29. 29

    为什么在MongoDB的Next.js应用程序中有api文件夹?

热门标签

归档