类似于 rpm 和 dnf(yum),也有两个包管理工具:
dpkg:PacKaGe manager for Debian,是 Debian 系统的包管理工具。可以安装、删除和构建软件包。但是也不能很好处理依赖包问题。
apt:Advanced Packaging Tool,功能强大的软件前端管理工具,甚至可以升级整个 Ubuntu 系统,也是基于客户/服务器架构。
服务器端,先得到所需的 deb 包,然后利用工具 genbasedir
对所有 deb 包的头(Header)信息进行分析,并将分析结果记录至文件夹 base 内的一个 DEB 索引清单文件中,一旦 deb 包有所变动,就会触发分析记录操作。
客户端,在进行安装或升级时,先查询 DEB 索引清单文件,并下载至本地 /var/cache/apt/ 目录中,以获取需要哪些包及其相互依赖包,然后一起下载所需的包到客户端进行安装或升级。
帮助参看:man dpkg 或 dpkg --help。
dpkg是一个中间层次的工具,用于安装、构建、删除和管理 Debian 软件包。作为 CLI(命令行接口)的 apt(8>) 是主要和对用户更友好的的前端工具,而作为 TUI(终端用户接口)的前端工具是 aptitude(8)。dpkg本身完全由命令行参数控制,这些参数由一个操作和零个或多个选项组成。动作参数告诉 dpkg 要做什么,而选项以某种方式控制动作的行为。
dpkg 也可以作为 dpkg-deb(1) 和 dpkg-query(1) 的前端。如果使用其支持的动作参数,则 dpkg 仅传递参数并调用 dpkg-deb 或 dpkg-query。
该工具直接使用的机会不太多,原因也是不能很好地解决包的依赖问题。用于包的查询比较多。
安装包,如果指定 -R 选项,package.file 必须引用目录。
dpkg -i package.file... # i for install
安装操作由以下步骤组成:
卸载包,不会自动删除依赖的包
dpkg -r package # r for remove
清除包,包括清除配置文件
dpkg -P package # P for purge
列出当前已安装的包,类似于 rpm -qa
dpkg -l
显示指定包的简要说明,类似于 rpm -qi
dpkg -l package # l for list package-name-pattern
列出指定包的状态,包括详细信息,类似于 rpm -qi
dpkg -s package # s for status
列出指定包包含的文件,类似于 rpm -ql
dpkg -L package # L for list files
搜索包含 pattern 的包,类似于 rpm -qf
dpkg -S <pattern> # S for search
配置包,如果使用 -a,则配置所有没有配置过的包
dpkg --configure package | -a
配置已经解开的但尚未配置的包。如果想要重新配置已经配置过的包,使用 dpkg --configure 命令。
配置操作由以下两步骤组成:
列出 deb 包(未安装的)的内容,调用 dpkg-deb -c,类似于 rpm -qpl
dpkg -c package.deb # c for contents
解开 deb 包的内容
dpkg --unpack package.deb
所有的选项都可以用在命令行和 dpkg 配置文件中,配置文件位于 /etc/dpkg/dpkg.cfg 或 /etc/dpkg/dpkg.cfg.d/ 下对应的片段文件。
–abort-afer=number
修改在多少次错误后 dpkg 将会放弃。默认是 50。
–force-things | --no-force-things, --refuse-things
强制或拒绝做一些事件(things),而 things 是由逗号分割的 thing 组成。–force-help 显示描述它们的信息。使用 (*) 标记的 things 默认被强制。
–no-act, --dry-run, --simulate
干跑,不会实际改变。
-R, --recursive
在指定的目录及其子目录上匹配模式 *.deb 的所有普通文件上进行递归处理。
-G
如果新版本相同的包已经安装,不要安装该包。这是 --refuse-downgrade 的别名。
–root=dir
设置 root 目录至 dir,这设置安装目录至 dir ,且管理目录至 dir/var/lib/dpkg。
Debian 使用 apt 工具来管理包,之前最常用的 Ubuntu 包管理命令分散在 apt-get、apt-cache 和 apt-config 三个命令中。
Ubuntu 16.04 引入新特性之一是 apt 命令,其解决了命令过于分散的问题,包括了 apt-get 命令出现以来使用最广泛的选项,以及 apt-cache 和 apt-config 命令中很少使用的功能。apt 相当于这三个命令最常用命令选项的集合。
查看帮助:man apt 或 apt help
apt为包管理系统提供了一个高级命令行接口。它旨在作为一个最终用户接口,与更专门的 APT 工具(如APT-get(8)和APT-cache(8))相比,默认情况下支持一些更适合交互使用的选项。
apt 与 apt-get 对比:
apt 命令 | 被取代的命令 |
|
---|---|---|
apt install | apt-get install | 安装软件包 |
apt remove | apt-get remove | 卸载软件包 |
apt purge | apt-get purge | 清除软件包及配置文件 |
apt update | apt-get update | 刷新仓库的索引,相当于 dnf clean all; makecache |
apt upgrade | apt-get upgrade | 升级所有可升级的包 |
apt autoremove | apt-get autoremove | 自动删除不需要的包 |
apt full-upgrade | apt-get dist-upgrade | 在升级包时自动升级依赖关系 |
apt search | apt-cache search | 搜索软件 |
apt satisfy | apt-get satisfy | satisfy 满足依赖字符串,好像用于 Build-Depends(构建依赖)。通过前缀"Conflicts: ",也可处理冲突。 |
apt show | apt-cache show | 显示安装信息 |
apt 特有的命令:
命令 |
|
---|---|
apt list | 列出符合指定条件的包列表。支持通配符以匹配包名,也支持选项列出已安装(–installed)、可升级的(–upgradeable)或所有可用的(–all-versions)版本。 |
apt edit-sources (work-in-progress) | 该命令允许使用您喜欢的编辑器编辑 sources.list(5) 文件,同时也支持健全性检查。 |
apt 包索引配置文件:
/etc/apt/sources.list
/etc/apt/sources.list.d/
如果想要设置成仓库的国内镜像,可以使用阿里云镜像:阿里云镜像 https://developer.aliyun.com/mirror,上面有详细的说明。
修改后,使用以下命令更新仓库的元数据文件:
$ sudo apt update
apt 命令操作日志:
/var/log/dpkg.log
示例:
安装 apache2,相当于 CentOS 中的 httpd:
$ apt show apache2
$ sudo apt install apache2
$ curl localhost