Ubuntu包管理工具

在Ubuntu系统中,包管理工具是管理软件包的核心工具,用于安装、更新、卸载和配置系统中的软件包。Ubuntu基于Debian,因此它主要使用Debian的包管理工具和软件包格式(.deb)。

1 dpkg

1.1 介绍

dpkg 是 Ubuntu 及其他基于 Debian 的发行版中用于管理 .deb 软件包的底层工具。与 APT 不同,dpkg 不会自动解决依赖关系,而是直接操作本地的 .deb 软件包文件。dpkg 是 APT 工具的基础,所有的 APT 命令最终都会调用 dpkg 来执行实际的软件包安装、卸载、配置等操作。

1.2 常用命令和示例

命令 作用 示例
dpkg -i <package.deb> 安装指定的 .deb 包。 sudo dpkg -i google-chrome-stable_current_amd64.deb
dpkg -r <package> 卸载已安装的软件包,但保留配置文件。 sudo dpkg -r google-chrome-stable
dpkg --purge <package> 完全卸载软件包并删除其所有配置文件。 sudo dpkg --purge google-chrome-stable
dpkg -l 列出系统中所有已安装的软件包。 dpkg -l
dpkg -L <package> 列出指定软件包安装的所有文件及其路径。 dpkg -L google-chrome-stable
dpkg -s <package> 显示指定软件包的详细信息(如版本、状态、依赖等)。 dpkg -s google-chrome-stable
dpkg -S <file> 查找系统中某个文件属于哪个软件包。 dpkg -S /usr/bin/firefox
dpkg -c <package.deb> 列出 .deb 包内包含的所有文件(不安装)。 dpkg -c google-chrome-stable_current_amd64.deb
dpkg -I <package.deb> 显示 .deb 包的元数据(如包名、版本、依赖等)。 dpkg -I google-chrome-stable_current_amd64.deb
dpkg --configure <package> 配置已解压但未配置的软件包。 sudo dpkg --configure google-chrome-stable
dpkg --remove <package> 移除软件包(等价于 -r,保留配置文件)。 sudo dpkg --remove google-chrome-stable
dpkg -x <package.deb> <dir> 解压 .deb 包到指定目录,而不安装。 dpkg -x google-chrome-stable_current_amd64.deb ./extracted/

1.2.1 安装

dpkg 可以直接安装本地的 .deb 包文件:

1
dpkg -i package_name.deb

需要注意的是,dpkg -i 不会自动解决依赖关系。如果软件包依赖其他未安装的包,可能会遇到错误。

1.2.2 修复依赖

如果在使用 dpkg 安装软件包时出现了依赖错误,可以通过以下命令修复:

1
apt --fix-broken install

此命令会尝试自动安装缺失的依赖项。

1.2.3 卸载

使用-r选项:

1
dpkg -r package_name

要完全卸载一个软件包并删除所有相关的配置文件,可以使用以下命令:

1
dpkg --purge package_name

1.2.4 列出已安装的包

使用-l选项,示例:

1
root@VM-24-12-ubuntu:/home/ubuntu# dpkg -l

1.2.5 查看特定包

使用-s选项:

1
2
3
4
5
6
7
8
9
root@VM-24-12-ubuntu:/home/ubuntu# dpkg -s apt
Package: apt
Status: install ok installed
Priority: important
Section: admin
Installed-Size: 4156
Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
Architecture: amd64
Version: 2.4.5

1.3 包安装的路径

使用 dpkg 安装的软件包通常会将文件分散安装在系统的多个目录中。以下是常见的安装位置:

  1. 可执行文件

可执行文件一般会被安装在以下目录:

  • /usr/bin/
  • /usr/sbin/
  • /bin/
  • /sbin/
  1. 库文件

库文件通常会被安装在以下目录:

  • /usr/lib/
  • /lib/
  • /lib64/
  1. 配置文件

配置文件一般位于:

  • /etc/
  1. 文档和说明文件

文档和帮助文件通常会安装在:

  • /usr/share/doc/
  • /usr/share/man/
  1. 其他资源文件

资源文件(如图片、语言包等)可能会安装在:

  • /usr/share/
  1. 查看特定包的安装文件

可以使用 dpkg -L package-name 命令列出某个已安装包的所有文件路径:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
root@VM-24-12-ubuntu:/home/ubuntu# dpkg -L apt
/.
/etc
/etc/apt
/etc/apt/apt.conf.d
/etc/apt/apt.conf.d/01-vendor-ubuntu
/etc/apt/apt.conf.d/01autoremove
/etc/apt/auth.conf.d
/etc/apt/keyrings
/etc/apt/preferences.d
/etc/apt/sources.list.d
/etc/apt/trusted.gpg.d
/etc/cron.daily
/etc/cron.daily/apt-compat
/etc/kernel
/etc/kernel/postinst.d
/etc/logrotate.d
/etc/logrotate.d/apt
/lib
/lib/systemd
/lib/systemd/system
/lib/systemd/system/apt-daily-upgrade.service
/lib/systemd/system/apt-daily-upgrade.timer
/lib/systemd/system/apt-daily.service
/lib/systemd/system/apt-daily.timer
# ...还有很多

2 apt

2.1 介绍

APT(Advanced Package Tool) 是 Ubuntu 中最常用的包管理工具,它提供了一组命令行工具,用于简化安装、升级和管理软件包的过程。APT 的核心功能依赖于 dpkg,但相比于 dpkg,APT 具备自动解决依赖关系的能力。

2.2 常用命令和示例

命令 作用 示例
apt update 更新本地软件包列表,不实际安装或升级软件。 sudo apt update
apt upgrade 升级所有已安装的软件包,更新到新版本,但不会自动移除或安装新包。 sudo apt upgrade
apt full-upgrade apt upgrade 类似,但会自动处理依赖关系,可能移除一些软件包以进行完整升级。 sudo apt full-upgrade
apt install <package> 安装指定的软件包。 sudo apt install vim
apt remove <package> 卸载指定的软件包,但保留配置文件。 sudo apt remove vim
apt purge <package> 完全卸载软件包并删除其配置文件。 sudo apt purge vim
apt autoremove 自动删除系统中不再需要的依赖包和孤立包。 sudo apt autoremove
apt search <package> 搜索可用的软件包。 apt search nginx
apt show <package> 显示指定软件包的详细信息(如版本、依赖、描述等)。 apt show nginx
apt list --installed 列出所有已安装的软件包。 apt list --installed
apt list --upgradable 列出可以升级的软件包。 apt list --upgradable
apt clean 清理本地缓存的下载包,释放磁盘空间。 sudo apt clean
apt edit-sources 编辑软件源列表文件 /etc/apt/sources.list sudo apt edit-sources

2.3 和apt-get的区别

aptapt-get 都是 Ubuntu 和其他基于 Debian 的 Linux 发行版中用于包管理的命令行工具。尽管它们都属于 APT(Advanced Package Tool)系统的一部分,但它们有一些显著的区别,尤其是在使用体验和功能范围方面。

  • apt-get 是一个历史悠久的命令行工具,自从 Debian 早期版本以来就存在,用于管理软件包。它是更底层的包管理工具,提供了大量的功能和选项,主要面向高级用户和脚本编写。
  • apt 是在 Ubuntu 16.04 和 Debian 8 之后引入的一个更现代化的命令行工具,它简化了常见的包管理任务。apt 是对 apt-getapt-cache 的一层封装,旨在提供一个更用户友好的命令集,适合日常使用。

命令对比:

操作 apt-get 命令 apt 命令
更新软件包列表 sudo apt-get update sudo apt update
升级所有软件包 sudo apt-get upgrade sudo apt upgrade
智能升级(处理依赖) sudo apt-get dist-upgrade sudo apt full-upgrade
安装软件包 sudo apt-get install <pkg> sudo apt install <pkg>
删除软件包 sudo apt-get remove <pkg> sudo apt remove <pkg>
清理无用软件包 sudo apt-get autoremove sudo apt autoremove
搜索软件包 apt-cache search <pkg> apt search <pkg>
查看软件包信息 apt-cache show <pkg> apt show <pkg>

2.4 下载源

详见:[[sources.list和sources.list.d]]