Ubuntu包管理工具
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 | root@VM-24-12-ubuntu:/home/ubuntu# dpkg -s apt |
1.3 包安装的路径
使用 dpkg
安装的软件包通常会将文件分散安装在系统的多个目录中。以下是常见的安装位置:
- 可执行文件
可执行文件一般会被安装在以下目录:
/usr/bin/
/usr/sbin/
/bin/
/sbin/
- 库文件
库文件通常会被安装在以下目录:
/usr/lib/
/lib/
/lib64/
- 配置文件
配置文件一般位于:
/etc/
- 文档和说明文件
文档和帮助文件通常会安装在:
/usr/share/doc/
/usr/share/man/
- 其他资源文件
资源文件(如图片、语言包等)可能会安装在:
/usr/share/
- 查看特定包的安装文件
可以使用 dpkg -L package-name
命令列出某个已安装包的所有文件路径:
1 | root@VM-24-12-ubuntu:/home/ubuntu# dpkg -L apt |
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的区别
apt
和 apt-get
都是 Ubuntu 和其他基于 Debian 的 Linux 发行版中用于包管理的命令行工具。尽管它们都属于 APT(Advanced Package Tool)系统的一部分,但它们有一些显著的区别,尤其是在使用体验和功能范围方面。
apt-get
是一个历史悠久的命令行工具,自从 Debian 早期版本以来就存在,用于管理软件包。它是更底层的包管理工具,提供了大量的功能和选项,主要面向高级用户和脚本编写。apt
是在 Ubuntu 16.04 和 Debian 8 之后引入的一个更现代化的命令行工具,它简化了常见的包管理任务。apt
是对apt-get
和apt-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]]