软件包管理 #

一、软件包管理概述 #

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 软件包管理命令,包括不同发行版的包管理工具和通用包管理器。

关键要点:

  1. Debian/Ubuntu 使用 apt/dpkg
  2. CentOS/RHEL 使用 yum/dnf/rpm
  3. Arch Linux 使用 pacman
  4. Snap 和 Flatpak 是跨发行版的通用包管理器
  5. 源码编译安装提供最大的灵活性

下一章预告: Shell 脚本 - 学习 Shell 脚本编程基础。

最后更新:2026-03-27