dpkg是Debian的一个底层包管理工具,主要用于对已下载到本地和已安装的软件包进行管理。
dpkg即package manager for Debian ,是Debian和基于Debian的系统中一个主要的包管理工具,可以用来安装、构建、卸载、管理deb格式的软件包。
/etc/dpkg/dpkg.cfg
1 | |
/var/lib/dpkg/available
1 | |
/var/lib/dpkg/status
1 | |
/var/lib/dpkg/info
1 | |
/var/log/dpkg.log
1 | |
dpkg使用文本文件作为数据库来维护系统中软件,包括文件清单、依赖关系、软件状态等等,通常在/var/lib/dpkg目录下。
1 | |
APT(Advanced Packaging Tool)是建立在dpkg之上更高级别的包管理工具,会使用dpkg来执行实际的软件包安装、配置和卸载操作。
起初APT的命令都被分散在了apt-get、apt-cache和apt-config这三条命令当中,apt命令的引入就是为了解决命令过于分散的问题,它包括了apt-get、apt-cache和apt-config中最常用命令选项的集合。
尽管dpkg在软件安装过程中解决了许多问题,但它在处理依赖关系方面存在局限性,需要用户手动解决依赖问题。
而apt(Advanced Packaging Tool)则克服了这一缺陷。Linux发行版会将软件预先放置在服务器上,并分析软件的依赖关系,将这些信息记录下来。当用户需要安装软件时,apt会通过软件清单列表与本地已安装的软件数据进行比较,从而从网络服务器获取所有具有依赖关系的必要软件包。
/etc/apt/apt.conf.d/
1 | |
/etc/apt/sources.list.d/
1 | |
软件源配置文件通常以.list或.sources为扩展名。.list文件主要用于定义传统的APT软件源。它们通常包含软件源的 URI、suite、component等信息。
1 | |
.sources文件是较新的软件源配置格式,用于更灵活地定义软件源,支持更复杂的配置选项,如签名验证、软件源的启用状态等。
1 | |
/var/cache/apt/archives/
1 | |
/var/lib/apt/lists/
1 | |
在该文件夹中保存有软件列表的许多信息,以从官方源(http://archive.ubuntu.com/ubuntu/)拉取到的信息为例。
每个suite级别有*InRelease文件、*Contents-*.lz4文件;每个suite下的每个component有*Packages文件、*cnf_Commands-*文件、*dep11_Components-*.yml.gz文件、*dep11_icons-*.tar.gz文件、*i18n_Translation-*等。
*InRelease:包含了软件源的发布信息,如版本号、签名等,用于验证软件源的完整性和一致性。
*Contents-*.lz4:包含了软件包内容索引,使用 lz4 压缩格式,提供了软件包文件的详细列表和位置信息。
*Packages:包含了软件包的详细信息,如包名、版本、依赖关系、描述等,是 APT 获取软件包信息的主要来源。
*cnf_Commands-*:给出了软件包提供的多个命令行操作。
*dep11_Components-*.yml.gz:包含了软件包的依赖关系信息,使用 gzip 压缩格式,帮助 APT 解析和满足软件包的依赖需求。
*dep11_icons-*.tar.gz:包含了软件包的图标文件,使用 tar 和 gzip 压缩格式。
*i18n_Translation-*:提供了软件包的本地化描述。
对官方软件源进行详细介绍,以Ubuntu22.04LTS为例。
/etc/apt/sources.list 文件如下(目前在用的Ubuntu24.04LTS已经将所有源信息的文件放入 /etc/apt/sources.list.d/ 文件夹中):
1 | |
deb-src deb:
jammy: Ubuntu22.04 代号
Suites: jammy jammy-security jammy-backports jammy-updates jammy-proposed
Components: main restricted universe multiverse
1 | |
参考:
dpkg是Debian的一个底层包管理工具,主要用于对已下载到本地和已安装的软件包进行管理。
dpkg即package manager for Debian ,是Debian和基于Debian的系统中一个主要的包管理工具,可以用来安装、构建、卸载、管理deb格式的软件包。
/etc/dpkg/dpkg.cfg
1 | |
/var/lib/dpkg/available
1 | |
/var/lib/dpkg/status
1 | |
/var/lib/dpkg/info
1 | |
/var/log/dpkg.log
1 | |
dpkg使用文本文件作为数据库来维护系统中软件,包括文件清单、依赖关系、软件状态等等,通常在/var/lib/dpkg目录下。
1 | |
APT(Advanced Packaging Tool)是建立在dpkg之上更高级别的包管理工具,会使用dpkg来执行实际的软件包安装、配置和卸载操作。
起初APT的命令都被分散在了apt-get、apt-cache和apt-config这三条命令当中,apt命令的引入就是为了解决命令过于分散的问题,它包括了apt-get、apt-cache和apt-config中最常用命令选项的集合。
尽管dpkg在软件安装过程中解决了许多问题,但它在处理依赖关系方面存在局限性,需要用户手动解决依赖问题。
而apt(Advanced Packaging Tool)则克服了这一缺陷。Linux发行版会将软件预先放置在服务器上,并分析软件的依赖关系,将这些信息记录下来。当用户需要安装软件时,apt会通过软件清单列表与本地已安装的软件数据进行比较,从而从网络服务器获取所有具有依赖关系的必要软件包。
/etc/apt/apt.conf.d/
1 | |
/etc/apt/sources.list.d/
1 | |
软件源配置文件通常以.list或.sources为扩展名。.list文件主要用于定义传统的APT软件源。它们通常包含软件源的 URI、suite、component等信息。
1 | |
.sources文件是较新的软件源配置格式,用于更灵活地定义软件源,支持更复杂的配置选项,如签名验证、软件源的启用状态等。
1 | |
/var/cache/apt/archives/
1 | |
/var/lib/apt/lists/
1 | |
在该文件夹中保存有软件列表的许多信息,以从官方源(http://archive.ubuntu.com/ubuntu/)拉取到的信息为例。
每个suite级别有*InRelease文件、*Contents-*.lz4文件;每个suite下的每个component有*Packages文件、*cnf_Commands-*文件、*dep11_Components-*.yml.gz文件、*dep11_icons-*.tar.gz文件、*i18n_Translation-*等。
*InRelease:包含了软件源的发布信息,如版本号、签名等,用于验证软件源的完整性和一致性。
*Contents-*.lz4:包含了软件包内容索引,使用 lz4 压缩格式,提供了软件包文件的详细列表和位置信息。
*Packages:包含了软件包的详细信息,如包名、版本、依赖关系、描述等,是 APT 获取软件包信息的主要来源。
*cnf_Commands-*:给出了软件包提供的多个命令行操作。
*dep11_Components-*.yml.gz:包含了软件包的依赖关系信息,使用 gzip 压缩格式,帮助 APT 解析和满足软件包的依赖需求。
*dep11_icons-*.tar.gz:包含了软件包的图标文件,使用 tar 和 gzip 压缩格式。
*i18n_Translation-*:提供了软件包的本地化描述。
对官方软件源进行详细介绍,以Ubuntu22.04LTS为例。
/etc/apt/sources.list 文件如下(目前在用的Ubuntu24.04LTS已经将所有源信息的文件放入 /etc/apt/sources.list.d/ 文件夹中):
1 | |
deb-src deb:
jammy: Ubuntu22.04 代号
Suites: jammy jammy-security jammy-backports jammy-updates jammy-proposed
Components: main restricted universe multiverse
1 | |
参考: