《Linux基础知识-3》
Linux基础知识-3
7. Linux 包管理
包管理是 Linux 系统管理中的关键组成部分,涉及软件包的安装、更新、卸载以及软件源的配置与管理。通过有效的包管理,系统管理员可以确保系统软件的最新、安全和高效运行。以下将详细介绍 Linux 中常见的包管理工具及其使用方法,包括 Debian/Ubuntu 系列的 apt
,CentOS/RHEL 系列的 yum
和 dnf
,Arch Linux 的 pacman
,以及 RPM 和 DEB 包的基础管理。此外,还将探讨软件包的安装、更新与卸载,以及包管理配置与镜像源的设置。
7.1 包管理工具概述
Linux 发行版通常配备特定的包管理工具,用于管理软件包的安装、更新和卸载。不同的发行版可能使用不同的包管理系统,以下将介绍几种主要的包管理工具。
7.1.1 apt
- Debian/Ubuntu 系列
apt
(Advanced Package Tool)是 Debian 及其衍生发行版(如 Ubuntu)使用的包管理工具。它简化了软件包的安装、更新和管理过程,支持从远程仓库自动下载和解决依赖关系。
基本概念与功能
- 软件包:预编译的二进制文件,包含特定应用程序及其依赖。
- 仓库:集中存储软件包的服务器,
apt
从中获取软件包信息和文件。 - 依赖关系:软件包之间的相互依赖,
apt
自动处理依赖关系,确保软件正常运行。
常用命令与操作
-
更新软件包列表
sudo apt update
说明:从配置的仓库中获取最新的软件包信息。
-
升级已安装的软件包
sudo apt upgrade
说明:升级所有已安装的软件包到最新版本。
-
安装软件包
sudo apt install 软件包名称
示例:安装
vim
编辑器sudo apt install vim
-
卸载软件包
sudo apt remove 软件包名称
示例:卸载
vim
编辑器sudo apt remove vim
移除软件包及其配置文件
sudo apt purge 软件包名称
-
搜索软件包
apt search 关键词
示例:搜索包含
python
的软件包apt search python
-
查看软件包详情
apt show 软件包名称
示例:查看
vim
软件包详情apt show vim
7.1.2 yum
- CentOS/RHEL 系列
yum
(Yellowdog Updater, Modified)是 CentOS 和 RHEL(Red Hat Enterprise Linux)使用的包管理工具,基于 RPM(Red Hat Package Manager)系统。yum
简化了软件包的安装、更新和管理,并自动解决依赖关系。
基本概念与功能
- RPM 包:预编译的二进制文件,包含特定应用程序及其依赖。
- 仓库:集中存储 RPM 包的服务器,
yum
从中获取软件包信息和文件。 - 插件:扩展
yum
功能的模块,如yum-plugin-fastestmirror
用于选择最快的镜像源。
常用命令与操作
-
更新软件包列表和升级系统
sudo yum update
说明:更新所有已安装的软件包到最新版本。
-
安装软件包
sudo yum install 软件包名称
示例:安装
wget
工具sudo yum install wget
-
卸载软件包
sudo yum remove 软件包名称
示例:卸载
wget
工具sudo yum remove wget
-
搜索软件包
yum search 关键词
示例:搜索包含
docker
的软件包yum search docker
-
查看软件包详情
yum info 软件包名称
示例:查看
wget
软件包详情yum info wget
7.1.3 dnf
- CentOS 8+ 系列
dnf
(Dandified YUM)是 CentOS 8 及以上版本和 Fedora 使用的下一代包管理工具,旨在替代 yum
。dnf
提供了更好的性能、依赖管理和可扩展性。
基本概念与功能
- RPM 包:与
yum
相同,dnf
也是基于 RPM 系统。 - 插件支持:
dnf
支持更强大的插件机制,扩展其功能。 - 性能优化:改进了元数据处理和依赖解决算法,提高了速度和效率。
常用命令与操作
-
更新软件包列表和升级系统
sudo dnf upgrade
说明:升级所有已安装的软件包到最新版本。
-
安装软件包
sudo dnf install 软件包名称
示例:安装
htop
工具sudo dnf install htop
-
卸载软件包
sudo dnf remove 软件包名称
示例:卸载
htop
工具sudo dnf remove htop
-
搜索软件包
dnf search 关键词
示例:搜索包含
nodejs
的软件包dnf search nodejs
-
查看软件包详情
dnf info 软件包名称
示例:查看
htop
软件包详情dnf info htop
-
清理缓存
sudo dnf clean all
7.1.4 pacman
- Arch Linux
pacman
(package manager)是 Arch Linux 使用的包管理工具,设计简洁高效,支持二进制包的快速安装、更新和管理。pacman
以简单的命令行接口和高度自动化的依赖管理而著称。
基本概念与功能
- 软件包:包含二进制文件、配置文件及安装脚本,格式为
.pkg.tar.zst
。 - 仓库:集中存储软件包的服务器,
pacman
从中获取软件包信息和文件。 - AUR(Arch User Repository):社区维护的软件包仓库,用户可以通过辅助工具(如
yay
)从 AUR 安装软件。
常用命令与操作
-
更新软件包数据库和系统
sudo pacman -Syu
说明:同步软件包数据库并升级所有已安装的软件包。
-
安装软件包
sudo pacman -S 软件包名称
示例:安装
vim
编辑器sudo pacman -S vim
-
卸载软件包
sudo pacman -R 软件包名称
示例:卸载
vim
编辑器sudo pacman -R vim
移除软件包及其未被其他包依赖的依赖
sudo pacman -Rs 软件包名称
-
搜索软件包
pacman -Ss 关键词
示例:搜索包含
python
的软件包pacman -Ss python
-
查看软件包详情
pacman -Qi 软件包名称
示例:查看
vim
软件包详情pacman -Qi vim
-
清理缓存
sudo pacman -Sc
7.1.5 rpm
与 .deb
包管理
除了使用高级包管理工具,Linux 还支持直接使用包管理器来处理 RPM 和 DEB 格式的软件包。这些工具提供了更底层的包管理功能,适用于高级用户和特定场景。
7.1.5.1 RPM 包管理基础
RPM(Red Hat Package Manager)是一个广泛使用的包管理系统,主要用于 Red Hat 系列的发行版(如 CentOS、RHEL、Fedora)。
安装 RPM 包(rpm -ivh
)
-
命令语法
sudo rpm -ivh 软件包名称.rpm
-
示例:安装
nginx
RPM 包sudo rpm -ivh nginx-1.18.0-1.el8.x86_64.rpm
卸载 RPM 包(rpm -e
)
-
命令语法
sudo rpm -e 软件包名称
-
示例:卸载
nginx
包sudo rpm -e nginx
查询 RPM 包信息(rpm -qi
)
-
命令语法
rpm -qi 软件包名称
-
示例:查看
nginx
包信息rpm -qi nginx
7.1.5.2 DEB 包管理基础
DEB(Debian Package)是 Debian 及其衍生发行版(如 Ubuntu)使用的包管理格式,主要通过 dpkg
工具进行管理。
安装 DEB 包(dpkg -i
)
-
命令语法
sudo dpkg -i 软件包名称.deb
-
示例:安装
google-chrome
DEB 包sudo dpkg -i google-chrome-stable_current_amd64.deb
-
解决依赖问题
安装过程中如果遇到依赖问题,可以使用以下命令修复:
sudo apt-get install -f
卸载 DEB 包(dpkg -r
)
-
命令语法
sudo dpkg -r 软件包名称
-
示例:卸载
google-chrome
包sudo dpkg -r google-chrome-stable
查询 DEB 包信息(dpkg -l
)
-
命令语法
dpkg -l | grep 软件包名称
-
示例:查看
google-chrome
包信息dpkg -l | grep google-chrome
7.2 安装、更新与卸载软件包
包管理工具不仅用于安装和卸载软件包,还负责系统的整体更新和维护。以下将介绍如何使用不同的包管理工具执行这些操作。
7.2.1 使用 apt-get
, yum
, dnf
, pacman
等工具
不同的 Linux 发行版使用不同的包管理工具,以下以 apt
、yum
、dnf
和 pacman
为例,介绍安装、更新与卸载软件包的方法。
安装软件包
-
Debian/Ubuntu (
apt
)sudo apt install 软件包名称
示例:安装
curl
sudo apt install curl
-
CentOS/RHEL (
yum
)sudo yum install 软件包名称
示例:安装
curl
sudo yum install curl
-
CentOS 8+ 系列 (
dnf
)sudo dnf install 软件包名称
示例:安装
curl
sudo dnf install curl
-
Arch Linux (
pacman
)sudo pacman -S 软件包名称
示例:安装
curl
sudo pacman -S curl
更新软件包
-
Debian/Ubuntu (
apt
)sudo apt update && sudo apt upgrade
说明:
apt update
更新软件包列表,apt upgrade
升级已安装的软件包。 -
CentOS/RHEL (
yum
)sudo yum update
-
CentOS 8+ 系列 (
dnf
)sudo dnf upgrade
-
Arch Linux (
pacman
)sudo pacman -Syu
说明:
-Syu
同步软件包数据库并升级所有已安装的软件包。
卸载软件包
-
Debian/Ubuntu (
apt
)sudo apt remove 软件包名称
示例:卸载
curl
sudo apt remove curl
移除软件包及其配置文件
sudo apt purge 软件包名称
-
CentOS/RHEL (
yum
)sudo yum remove 软件包名称
示例:卸载
curl
sudo yum remove curl
-
CentOS 8+ 系列 (
dnf
)sudo dnf remove 软件包名称
示例:卸载
curl
sudo dnf remove curl
-
Arch Linux (
pacman
)sudo pacman -R 软件包名称
示例:卸载
curl
sudo pacman -R curl
移除软件包及其未被其他包依赖的依赖
sudo pacman -Rs curl
7.2.2 查找软件包
在安装软件包之前,通常需要先查找软件包的名称或描述。不同的包管理工具提供了不同的搜索命令。
-
Debian/Ubuntu 使用
apt-cache search
apt-cache search 关键词
示例:搜索包含
python
的软件包apt-cache search python
输出示例:
python3 - interactive high-level object-oriented language (default version) python3-pip - Python package installer python3-venv - Python 3 module for creating virtual environments
-
CentOS/RHEL 使用
yum search
yum search 关键词
示例:搜索包含
python
的软件包yum search python
输出示例:
Loaded plugins: fastestmirror, langpacks Loading mirror speeds from cached hostfile* base: mirror.centos.org* extras: mirror.centos.org* updates: mirror.centos.org ===================================== Name Matched: python ====================================== python.x86_64 : An interpreted, interactive, object-oriented programming language python3.x86_64 : An interpreted, interactive, object-oriented programming language
-
Arch Linux 使用
pacman -Ss
pacman -Ss 关键词
示例:搜索包含
python
的软件包pacman -Ss python
输出示例:
community/python 3.10.2-1Interpreted, interactive, object-oriented programming language community/python-pip 21.2.4-1Python package installer
应用场景:
- 快速查找所需软件:通过关键词搜索,快速找到需要的软件包及其详细信息。
- 了解软件包依赖:查看软件包的依赖关系,确保系统满足安装要求。
- 发现替代软件:在某些软件包不可用时,寻找功能相似的替代品。
7.3 包管理配置与镜像源
配置包管理工具的镜像源可以显著提升软件包的下载速度和稳定性,尤其是在地理位置较远的情况下。以下将介绍如何配置和管理软件源,以及使用自定义镜像源和第三方软件源。
7.3.1 配置和管理软件源
软件源(Repository)是存储和分发软件包的服务器。正确配置软件源可以确保包管理工具能够访问最新的软件包和更新。
编辑软件源列表文件
不同的 Linux 发行版使用不同的文件来配置软件源。
-
Debian/Ubuntu 使用
/etc/apt/sources.list
和/etc/apt/sources.list.d/
编辑主软件源列表
sudo nano /etc/apt/sources.list
示例内容:
deb http://archive.ubuntu.com/ubuntu/ focal main restricted deb http://archive.ubuntu.com/ubuntu/ focal-updates main restricted deb http://archive.ubuntu.com/ubuntu/ focal universe deb http://archive.ubuntu.com/ubuntu/ focal-updates universe deb http://archive.ubuntu.com/ubuntu/ focal multiverse deb http://archive.ubuntu.com/ubuntu/ focal-updates multiverse deb http://archive.ubuntu.com/ubuntu/ focal-backports main restricted universe multiverse deb http://security.ubuntu.com/ubuntu focal-security main restricted deb http://security.ubuntu.com/ubuntu focal-security universe deb http://security.ubuntu.com/ubuntu focal-security multiverse
-
CentOS/RHEL 使用
/etc/y