软件包管理 #
一、软件包管理概述 #
1.1 包管理系统 #
| 发行版 | 包格式 | 包管理工具 |
|---|---|---|
| Debian/Ubuntu | .deb | apt, apt-get, dpkg |
| CentOS/RHEL | .rpm | yum, dnf, rpm |
| Fedora | .rpm | dnf, rpm |
| Arch Linux | .pkg.tar.zst | pacman |
| openSUSE | .rpm | zypper |
1.2 软件源 #
软件源(Repository)是存放软件包的服务器,系统从中下载和安装软件。
常见软件源:
- 官方源:发行版官方维护
- 镜像源:国内镜像站(阿里云、清华、中科大等)
- PPA:Ubuntu 个人软件包档案
- EPEL:企业版 Linux 附加软件包
二、APT - Debian/Ubuntu #
2.1 apt 基本用法 #
bash
# 更新软件源
sudo apt update
# 升级所有软件
sudo apt upgrade
# 完整升级(可能删除软件)
sudo apt full-upgrade
# 安装软件
sudo apt install package_name
# 安装多个软件
sudo apt install package1 package2 package3
# 安装指定版本
sudo apt install package_name=1.2.3
# 重新安装
sudo apt reinstall package_name
# 删除软件(保留配置)
sudo apt remove package_name
# 删除软件及配置
sudo apt purge package_name
# 自动删除不需要的依赖
sudo apt autoremove
# 清理下载的包文件
sudo apt clean
sudo apt autoclean
# 搜索软件
apt search keyword
# 查看软件信息
apt show package_name
# 查看软件依赖
apt depends package_name
# 列出可升级的软件
apt list --upgradable
# 列出已安装的软件
apt list --installed
2.2 apt-get 和 apt-cache #
bash
# apt-get 命令
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install package_name
sudo apt-get remove package_name
sudo apt-get purge package_name
sudo apt-get autoremove
sudo apt-get clean
# apt-cache 命令
apt-cache search keyword
apt-cache show package_name
apt-cache depends package_name
apt-cache policy package_name
2.3 dpkg - 底层包管理 #
bash
# 安装 deb 包
sudo dpkg -i package.deb
# 删除软件
sudo dpkg -r package_name
# 删除软件及配置
sudo dpkg -P package_name
# 查看已安装软件
dpkg -l
dpkg -l | grep keyword
# 查看软件信息
dpkg -s package_name
# 查看软件文件列表
dpkg -L package_name
# 查看文件属于哪个包
dpkg -S /path/to/file
# 解压 deb 包
dpkg -x package.deb /path/to/extract
2.4 配置软件源 #
bash
# 编辑软件源
sudo vim /etc/apt/sources.list
# 添加软件源
sudo add-apt-repository ppa:user/ppa-name
sudo add-apt-repository 'deb http://archive.ubuntu.com/ubuntu focal main'
# 删除软件源
sudo add-apt-repository --remove ppa:user/ppa-name
# 使用国内镜像源
# 阿里云
sudo sed -i 's/archive.ubuntu.com/mirrors.aliyun.com/g' /etc/apt/sources.list
# 清华
sudo sed -i 's/archive.ubuntu.com/mirrors.tuna.tsinghua.edu.cn/g' /etc/apt/sources.list
2.5 PPA 管理 #
bash
# 添加 PPA
sudo add-apt-repository ppa:deadsnakes/ppa
sudo apt update
# 列出 PPA
ls /etc/apt/sources.list.d/
# 删除 PPA
sudo add-apt-repository --remove ppa:deadsnakes/ppa
# 或手动删除
sudo rm /etc/apt/sources.list.d/deadsnakes-ubuntu-ppa-*.list
三、YUM/DNF - CentOS/RHEL #
3.1 yum 基本用法 #
bash
# 更新软件源
sudo yum makecache
# 检查更新
sudo yum check-update
# 更新所有软件
sudo yum update
# 更新指定软件
sudo yum update package_name
# 安装软件
sudo yum install package_name
# 安装多个软件
sudo yum install package1 package2
# 安装本地 rpm 包
sudo yum localinstall package.rpm
# 删除软件
sudo yum remove package_name
# 搜索软件
yum search keyword
# 查看软件信息
yum info package_name
# 查看软件依赖
yum deplist package_name
# 查看软件提供的命令
yum provides /usr/bin/command
# 列出软件组
yum grouplist
# 安装软件组
sudo yum groupinstall "Development Tools"
# 删除软件组
sudo yum groupremove "Development Tools"
# 清理缓存
sudo yum clean all
3.2 dnf 基本用法 #
bash
# dnf 是 yum 的下一代版本,命令基本兼容
sudo dnf update
sudo dnf install package_name
sudo dnf remove package_name
dnf search keyword
dnf info package_name
# 额外功能
sudo dnf autoremove # 自动删除不需要的依赖
dnf history # 查看历史
dnf history undo ID # 撤销操作
3.3 rpm - 底层包管理 #
bash
# 安装 rpm 包
sudo rpm -ivh package.rpm
# 升级软件
sudo rpm -Uvh package.rpm
# 删除软件
sudo rpm -e package_name
# 查看已安装软件
rpm -qa
rpm -qa | grep keyword
# 查看软件信息
rpm -qi package_name
# 查看软件文件列表
rpm -ql package_name
# 查看文件属于哪个包
rpm -qf /path/to/file
# 验证软件
rpm -V package_name
# 导入 GPG 密钥
sudo rpm --import /path/to/key
3.4 配置软件源 #
bash
# 编辑软件源
sudo vim /etc/yum.repos.d/CentOS-Base.repo
# 添加 EPEL 源
sudo yum install epel-release
# 使用国内镜像源
# 备份原文件
sudo cp /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak
# 下载阿里云源
sudo curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
# 生成缓存
sudo yum makecache
四、Pacman - Arch Linux #
4.1 pacman 基本用法 #
bash
# 更新软件源
sudo pacman -Sy
# 更新所有软件
sudo pacman -Syu
# 安装软件
sudo pacman -S package_name
# 安装多个软件
sudo pacman -S package1 package2
# 安装本地包
sudo pacman -U package.pkg.tar.zst
# 删除软件
sudo pacman -R package_name
# 删除软件及依赖
sudo pacman -Rs package_name
# 删除软件、依赖和配置
sudo pacman -Rns package_name
# 搜索软件
pacman -Ss keyword
# 查看软件信息
pacman -Si package_name
# 查看已安装软件信息
pacman -Qi package_name
# 列出已安装软件
pacman -Q
# 列出显式安装的软件
pacman -Qe
# 列出作为依赖安装的软件
pacman -Qd
# 查看软件文件列表
pacman -Ql package_name
# 查看文件属于哪个包
pacman -Qo /path/to/file
# 清理缓存
sudo pacman -Sc # 清理旧版本
sudo pacman -Scc # 清理所有缓存
4.2 配置软件源 #
bash
# 编辑软件源
sudo vim /etc/pacman.d/mirrorlist
# 使用国内镜像源
# 在文件开头添加
Server = https://mirrors.aliyun.com/archlinux/$repo/os/$arch
Server = https://mirrors.tuna.tsinghua.edu.cn/archlinux/$repo/os/$arch
五、Zypper - openSUSE #
5.1 zypper 基本用法 #
bash
# 更新软件源
sudo zypper refresh
# 更新所有软件
sudo zypper update
# 安装软件
sudo zypper install package_name
# 删除软件
sudo zypper remove package_name
# 搜索软件
zypper search keyword
# 查看软件信息
zypper info package_name
# 列出软件源
zypper repos
# 添加软件源
sudo zypper addrepo URL alias
# 删除软件源
sudo zypper removerepo alias
六、Snap - 通用包管理 #
6.1 snap 基本用法 #
bash
# 安装 snap
sudo apt install snapd
# 搜索软件
snap find keyword
# 安装软件
sudo snap install package_name
# 安装指定通道
sudo snap install package_name --channel=edge
# 列出已安装软件
snap list
# 更新软件
sudo snap refresh package_name
# 更新所有软件
sudo snap refresh
# 回滚软件版本
sudo snap revert package_name
# 删除软件
sudo snap remove package_name
# 查看软件信息
snap info package_name
# 启用/禁用服务
sudo snap start package_name
sudo snap stop package_name
# 查看服务状态
snap services
6.2 snap 权限管理 #
bash
# 查看连接
snap connections package_name
# 连接接口
sudo snap connect package_name:plug
# 断开接口
sudo snap disconnect package_name:plug
七、Flatpak - 通用包管理 #
7.1 flatpak 基本用法 #
bash
# 安装 flatpak
sudo apt install flatpak
# 添加 Flathub 仓库
flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
# 搜索软件
flatpak search keyword
# 安装软件
flatpak install flathub package_name
# 列出已安装软件
flatpak list
# 更新软件
flatpak update package_name
# 更新所有软件
flatpak update
# 删除软件
flatpak uninstall package_name
# 查看软件信息
flatpak info package_name
# 运行软件
flatpak run package_name
八、源码编译安装 #
8.1 编译安装步骤 #
bash
# 1. 安装编译工具
sudo apt install build-essential
# 2. 下载源码
wget https://example.com/package-1.0.tar.gz
# 3. 解压源码
tar -xzf package-1.0.tar.gz
cd package-1.0
# 4. 配置
./configure --prefix=/usr/local
# 5. 编译
make
# 6. 安装
sudo make install
# 7. 清理
make clean
8.2 常见配置选项 #
bash
# 指定安装路径
./configure --prefix=/opt/package
# 启用/禁用功能
./configure --enable-feature
./configure --disable-feature
# 指定库路径
./configure --with-library=/path/to/lib
# 查看所有选项
./configure --help
8.3 卸载源码安装的软件 #
bash
# 进入源码目录
cd package-1.0
# 卸载
sudo make uninstall
# 如果没有 uninstall,手动删除
sudo rm -rf /usr/local/bin/package
sudo rm -rf /usr/local/lib/package
九、实践练习 #
9.1 练习一:APT 使用 #
bash
# 1. 更新软件源
sudo apt update
# 2. 搜索软件
apt search nginx
# 3. 查看软件信息
apt show nginx
# 4. 安装软件
sudo apt install nginx
# 5. 查看已安装软件
dpkg -l | grep nginx
# 6. 删除软件
sudo apt remove nginx
9.2 练习二:YUM 使用 #
bash
# 1. 更新软件源
sudo yum makecache
# 2. 搜索软件
yum search nginx
# 3. 查看软件信息
yum info nginx
# 4. 安装软件
sudo yum install nginx
# 5. 查看已安装软件
rpm -qa | grep nginx
# 6. 删除软件
sudo yum remove nginx
9.3 练习三:Snap 使用 #
bash
# 1. 搜索软件
snap find vscode
# 2. 安装软件
sudo snap install code --classic
# 3. 列出已安装软件
snap list
# 4. 查看软件信息
snap info code
# 5. 更新软件
sudo snap refresh code
# 6. 删除软件
sudo snap remove code
9.4 练习四:源码编译 #
bash
# 1. 安装编译工具
sudo apt install build-essential
# 2. 下载源码(示例)
wget https://ftp.gnu.org/gnu/hello/hello-2.10.tar.gz
# 3. 解压
tar -xzf hello-2.10.tar.gz
cd hello-2.10
# 4. 配置
./configure
# 5. 编译
make
# 6. 安装
sudo make install
# 7. 测试
hello
# 8. 卸载
sudo make uninstall
十、小结 #
本章学习了 Linux 软件包管理命令,包括不同发行版的包管理工具和通用包管理器。
关键要点:
- Debian/Ubuntu 使用 apt/dpkg
- CentOS/RHEL 使用 yum/dnf/rpm
- Arch Linux 使用 pacman
- Snap 和 Flatpak 是跨发行版的通用包管理器
- 源码编译安装提供最大的灵活性
下一章预告: Shell 脚本 - 学习 Shell 脚本编程基础。
最后更新:2026-03-27