Skip to main content

概述

Linux 使用包管理器来安装、更新和删除软件。不同的发行版使用不同的包管理系统。
发行版包格式包管理器
Debian/Ubuntu.debapt/dpkg
RHEL/CentOS/Fedora.rpmyum/dnf/rpm
Arch Linux.pkgpacman

APT(Debian/Ubuntu)

APT(Advanced Package Tool)是 Debian 系发行版的包管理工具。

更新软件源

# 更新软件包列表
sudo apt update

# 升级所有软件包
sudo apt upgrade

# 更新并升级(推荐)
sudo apt update && sudo apt upgrade -y

# 完全升级(可能删除包)
sudo apt full-upgrade

# 升级发行版
sudo apt dist-upgrade

安装软件

# 安装软件包
sudo apt install package-name

# 安装多个软件包
sudo apt install pkg1 pkg2 pkg3

# 安装指定版本
sudo apt install package-name=version

# 安装本地 .deb 文件
sudo apt install ./package.deb
sudo dpkg -i package.deb

# 自动修复依赖
sudo apt install -f

# 安装时不提示确认
sudo apt install -y package-name

# 只下载不安装
sudo apt install -d package-name

# 模拟安装
sudo apt install -s 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 list --installed

# 列出可升级的包
apt list --upgradable

# 查看包是否已安装
dpkg -l | grep package-name

软件源配置

# 软件源配置文件
/etc/apt/sources.list
/etc/apt/sources.list.d/

# 添加 PPA 源
sudo add-apt-repository ppa:user/ppa-name
sudo apt update

# 删除 PPA 源
sudo add-apt-repository --remove ppa:user/ppa-name

# 添加第三方源
sudo sh -c 'echo "deb http://example.com/repo stable main" >> /etc/apt/sources.list.d/example.list'

# 添加 GPG 密钥
wget -qO - https://example.com/key.gpg | sudo apt-key add -
# 或新方式
wget -qO - https://example.com/key.gpg | sudo gpg --dearmor -o /etc/apt/keyrings/example.gpg

国内镜像源

编辑 /etc/apt/sources.list
# Ubuntu 22.04 阿里云镜像
deb http://mirrors.aliyun.com/ubuntu/ jammy main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ jammy-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ jammy-backports main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ jammy-security main restricted universe multiverse

YUM/DNF(RHEL/CentOS)

YUM(Yellowdog Updater Modified)是 RHEL 系发行版的包管理工具。DNF 是 YUM 的下一代版本。

更新软件源

# 检查更新
yum check-update
dnf check-update

# 更新所有软件包
sudo yum update
sudo dnf upgrade

# 更新指定软件包
sudo yum update package-name

安装软件

# 安装软件包
sudo yum install package-name
sudo dnf install package-name

# 安装多个包
sudo yum install pkg1 pkg2 pkg3

# 安装本地 RPM 文件
sudo yum localinstall package.rpm
sudo rpm -ivh package.rpm

# 安装时不提示
sudo yum install -y package-name

# 只下载不安装
sudo yum install --downloadonly --downloaddir=/path package-name

# 安装开发工具组
sudo yum groupinstall "Development Tools"

删除软件

# 删除软件包
sudo yum remove package-name
sudo dnf remove package-name

# 删除不再需要的依赖
sudo yum autoremove
sudo dnf autoremove

# 清理缓存
sudo yum clean all
sudo dnf clean all

搜索软件

# 搜索软件包
yum search keyword

# 显示软件包信息
yum info package-name

# 列出已安装的包
yum list installed

# 查找提供某个文件的包
yum provides /path/to/file
yum whatprovides "*bin/nginx"

# 列出可用的包
yum list available

软件源配置

# 源配置目录
/etc/yum.repos.d/

# 列出所有源
yum repolist
yum repolist all

# 启用/禁用源
sudo yum-config-manager --enable repo-name
sudo yum-config-manager --disable repo-name

# 添加 EPEL 源
sudo yum install epel-release

# 添加源
sudo yum-config-manager --add-repo https://example.com/repo.repo

国内镜像源

创建 /etc/yum.repos.d/CentOS-Base.repo
# CentOS 7 阿里云镜像
[base]
name=CentOS-$releasever - Base
baseurl=https://mirrors.aliyun.com/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7

[updates]
name=CentOS-$releasever - Updates
baseurl=https://mirrors.aliyun.com/centos/$releasever/updates/$basearch/
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7

DPKG(底层工具)

dpkg 是 Debian 包管理的底层工具。
# 安装 .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

# 解压(不安装)
dpkg -x package.deb /path/to/dir

# 重新配置包
sudo dpkg-reconfigure package-name

RPM(底层工具)

rpm 是 RHEL 系包管理的底层工具。
# 安装 RPM 包
sudo rpm -ivh package.rpm

# 升级 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 -K package.rpm

# 导入 GPG 密钥
sudo rpm --import https://example.com/RPM-GPG-KEY

编译安装

当软件包不在仓库中时,可能需要从源码编译安装。

基本流程

# 1. 安装编译工具
sudo apt install build-essential    # Debian/Ubuntu
sudo yum groupinstall "Development Tools"  # RHEL/CentOS

# 2. 下载源码
wget https://example.com/software-1.0.tar.gz
tar -xzvf software-1.0.tar.gz
cd software-1.0

# 3. 配置
./configure --prefix=/usr/local

# 4. 编译
make

# 5. 安装
sudo make install

# 6. 添加到 PATH(如需要)
echo 'export PATH="/usr/local/bin:$PATH"' >> ~/.bashrc

常用配置选项

# 指定安装目录
./configure --prefix=/opt/software

# 启用/禁用特性
./configure --enable-feature
./configure --disable-feature

# 指定依赖位置
./configure --with-openssl=/usr/local/openssl

# 查看所有选项
./configure --help

checkinstall

使用 checkinstall 可以将编译的软件生成包文件。
# 安装 checkinstall
sudo apt install checkinstall

# 使用 checkinstall 代替 make install
sudo checkinstall
# 会生成 .deb 文件,方便管理

Snap/Flatpak

Snap

# 安装 snap
sudo apt install snapd

# 搜索软件
snap find keyword

# 安装软件
sudo snap install package-name

# 列出已安装
snap list

# 更新软件
sudo snap refresh package-name

# 删除软件
sudo snap remove package-name

Flatpak

# 安装 flatpak
sudo apt install flatpak

# 添加 Flathub 源
flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo

# 安装软件
flatpak install flathub com.example.App

# 运行软件
flatpak run com.example.App

# 列出已安装
flatpak list

# 删除软件
flatpak uninstall com.example.App

常用命令对比

操作APT (Debian/Ubuntu)YUM/DNF (RHEL/CentOS)
更新源apt updateyum check-update
升级apt upgradeyum update
安装apt install pkgyum install pkg
删除apt remove pkgyum remove pkg
搜索apt search keywordyum search keyword
信息apt show pkgyum info pkg
已安装apt list —installedyum list installed
清理apt autoremove && cleanyum autoremove && clean
本地安装dpkg -i file.debrpm -ivh file.rpm
  1. 定期更新系统:apt update && apt upgrade
  2. 安装前先搜索确认包名
  3. 使用国内镜像源加速下载
  4. 编译安装时使用 checkinstall 便于管理
  5. 保持系统干净:定期清理不需要的包