mobile wallpaper 1mobile wallpaper 2mobile wallpaper 3mobile wallpaper 4mobile wallpaper 5
1016 字
3 分钟
Linux操作大全(四):软件包管理详解
2026-05-25

Linux操作大全(四):软件包管理详解#

本文是Linux操作大全系列的第四篇,详细讲解如何在Linux上安装、更新、卸载软件。


一、软件包管理概述#

1.1 什么是软件包?#

在Linux中,软件通常以”软件包”(Package)的形式分发。一个软件包包含:

  • 编译好的程序文件
  • 配置文件
  • 依赖关系说明
  • 安装/卸载脚本

1.2 包管理器对比#

包管理器发行版命令格式
aptUbuntu、Debianapt install 软件名
yumCentOS 7、RHEL 7yum install 软件名
dnfCentOS 8+、Fedora、RHEL 8+dnf install 软件名
pacmanArch Linuxpacman -S 软件名
zypperopenSUSEzypper install 软件名
snap跨发行版snap install 软件名
flatpak跨发行版flatpak install 软件名

二、apt包管理(Ubuntu/Debian)#

2.1 更新软件源#

为什么要更新? 软件源(Repository)是存放软件包的服务器。更新软件源可以获取最新的软件包列表。

# 更新软件包列表(不升级软件)
sudo apt update
# 升级所有已安装的软件
sudo apt upgrade
# 更新并升级(组合命令)
sudo apt update && sudo apt upgrade
# 发行版升级(如从22.04升到24.04)
sudo apt do-release-upgrade

2.2 搜索软件#

# 搜索软件包
apt search 关键词
# 示例
apt search nginx
apt search python3
# 查看软件包详情
apt show 软件包名
# 示例
apt show nginx

2.3 安装软件#

# 安装软件
sudo apt install 软件包名
# 示例
sudo apt install nginx
sudo apt install vim
sudo apt install git
# 安装多个软件
sudo apt install nginx vim git curl
# 安装指定版本
sudo apt install nginx=1.18.0-0ubuntu1
# 只下载不安装
sudo apt download 软件包名
# 重新安装
sudo apt reinstall 软件包名

2.4 卸载软件#

# 卸载软件(保留配置文件)
sudo apt remove 软件包名
# 卸载软件并删除配置文件
sudo apt purge 软件包名
# 卸载并清理依赖
sudo apt autoremove
# 组合命令(卸载+清理+删配置)
sudo apt purge --auto-remove 软件包名

2.5 清理缓存#

# 清理已下载的软件包缓存
sudo apt clean
# 清理过时的软件包缓存
sudo apt autoclean
# 查看缓存大小
du -sh /var/cache/apt/archives/

2.6 锁定软件版本#

防止软件被意外升级:

# 锁定软件版本
sudo apt-mark hold 软件包名
# 解锁
sudo apt-mark unhold 软件包名
# 查看锁定的软件
apt-mark showhold

2.7 添加第三方PPA#

PPA(Personal Package Archive)是Ubuntu的第三方软件源。

# 添加PPA
sudo add-apt-repository ppa:作者名/仓库名
# 示例:添加Python 3.11的PPA
sudo add-apt-repository ppa:deadsnakes/ppa
sudo apt update
sudo apt install python3.11
# 删除PPA
sudo add-apt-repository --remove ppa:作者名/仓库名

2.8 sources.list文件#

软件源配置文件位于 /etc/apt/sources.list

# 查看当前源
cat /etc/apt/sources.list
# 备份源文件
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak

换源为国内镜像(提高下载速度):

# 编辑源文件
sudo vim /etc/apt/sources.list

替换为阿里云源(Ubuntu 24.04):

deb http://mirrors.aliyun.com/ubuntu/ noble main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ noble-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ noble-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ noble-backports main restricted universe multiverse

然后更新:

sudo apt update

三、yum/dnf包管理(CentOS/Fedora)#

3.1 yum命令(CentOS 7)#

# 更新软件包列表
yum check-update
# 更新所有软件
sudo yum update
# 搜索软件
yum search 关键词
# 查看软件详情
yum info 软件包名
# 安装软件
sudo yum install 软件包名
# 卸载软件
sudo yum remove 软件包名
# 清理缓存
sudo yum clean all
# 查看已安装的软件
yum list installed
# 查看可用的软件
yum list available

3.2 dnf命令(CentOS 8+/Fedora)#

dnf是yum的下一代版本,用法基本相同:

# 更新软件包列表
dnf check-update
# 更新所有软件
sudo dnf update
# 搜索软件
dnf search 关键词
# 安装软件
sudo dnf install 软件包名
# 卸载软件
sudo dnf remove 软件包名
# 清理缓存
sudo dnf clean all

3.3 添加第三方仓库#

# 安装EPEL仓库(Extra Packages for Enterprise Linux)
sudo yum install epel-release # CentOS 7
sudo dnf install epel-release # CentOS 8+
# 安装Remi仓库(PHP最新版)
sudo yum install https://rpms.remirepo.net/enterprise/remi-release-7.rpm

3.4 yum/dnf配置文件#

# 主配置文件
cat /etc/yum.conf # CentOS 7
cat /etc/dnf/dnf.conf # CentOS 8+
# 仓库配置目录
ls /etc/yum.repos.d/ # CentOS 7
ls /etc/yum.repos.d/ # CentOS 8+

四、snap包管理#

4.1 什么是snap?#

snap是Canonical(Ubuntu母公司)开发的通用软件包格式,特点是:

  • 自带依赖,不依赖系统库
  • 自动更新
  • 沙箱隔离,更安全
  • 跨发行版使用

4.2 snap命令#

# 安装snapd(如果没有)
sudo apt install snapd
# 搜索软件
snap search 关键词
# 安装软件
sudo snap install 软件包名
# 示例
sudo snap install code --classic # VS Code
sudo snap install firefox
sudo snap install spotify
# 查看已安装的snap
snap list
# 更新软件
sudo snap refresh 软件包名
# 更新所有
sudo snap refresh
# 卸载软件
sudo snap remove 软件包名

4.3 snap常用软件#

# 开发工具
sudo snap install code --classic # VS Code
sudo snap install intellij-idea-community --classic # IntelliJ IDEA
sudo snap install pycharm-community --classic # PyCharm
# 浏览器
sudo snap install firefox
sudo snap install chromium
# 通讯
sudo snap install telegram-desktop
sudo snap install discord
# 多媒体
sudo snap install vlc
sudo snap install spotify

五、flatpak包管理#

5.1 什么是flatpak?#

flatpak是另一种通用软件包格式,由Red Hat主导开发。

# 安装flatpak
sudo apt install flatpak
# 添加Flathub仓库
flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
# 搜索软件
flatpak search 关键词
# 安装软件
flatpak install flathub 软件包名
# 查看已安装
flatpak list
# 更新软件
flatpak update
# 卸载软件
flatpak uninstall 软件包名

六、源码编译安装#

6.1 什么时候需要源码编译?#

  • 软件没有提供软件包
  • 需要自定义编译选项
  • 需要最新版本
  • 学习软件内部原理

6.2 编译安装步骤#

步骤1:安装编译工具#

# Ubuntu/Debian
sudo apt install build-essential
# CentOS/RHEL
sudo yum groupinstall "Development Tools"

步骤2:下载源码#

# 使用wget下载
wget https://example.com/software-1.0.tar.gz
# 使用curl下载
curl -O https://example.com/software-1.0.tar.gz
# 使用git克隆
git clone https://github.com/example/software.git

步骤3:解压源码#

tar -xzvf software-1.0.tar.gz
cd software-1.0

步骤4:配置#

# 检查编译环境
./configure
# 指定安装路径
./configure --prefix=/usr/local/software
# 指定编译选项
./configure --prefix=/usr/local --enable-feature --disable-other

步骤5:编译#

# 使用所有CPU核心编译
make -j$(nproc)
# 或指定核心数
make -j4

步骤6:安装#

sudo make install

步骤7:清理#

# 清理编译文件
make clean
# 清理配置文件
make distclean

6.3 实战:编译安装Nginx#

# 安装依赖
sudo apt install build-essential libpcre3 libpcre3-dev zlib1g zlib1g-dev libssl-dev
# 下载Nginx源码
wget http://nginx.org/download/nginx-1.24.0.tar.gz
# 解压
tar -xzvf nginx-1.24.0.tar.gz
cd nginx-1.24.0
# 配置
./configure --prefix=/usr/local/nginx \
--with-http_ssl_module \
--with-http_v2_module \
--with-http_realip_module
# 编译
make -j$(nproc)
# 安装
sudo make install
# 启动Nginx
sudo /usr/local/nginx/sbin/nginx
# 验证
curl http://localhost

6.4 使用checkinstall打包#

checkinstall可以把源码编译的结果打包成.deb或.rpm软件包,方便管理:

# 安装checkinstall
sudo apt install checkinstall
# 编译完成后,用checkinstall代替make install
sudo checkinstall

七、软件包依赖管理#

7.1 什么是依赖?#

软件A可能需要软件B才能运行,软件B就是软件A的”依赖”。

7.2 自动解决依赖#

现代包管理器会自动解决依赖:

# apt会自动安装依赖
sudo apt install nginx
# 查看软件的依赖
apt depends 软件包名
# 查看谁依赖这个软件
apt rdepends 软件包名

7.3 修复依赖问题#

# 修复损坏的依赖
sudo apt --fix-broken install
# 强制配置
sudo dpkg --configure -a
# 清理并重新安装
sudo apt clean
sudo apt update
sudo apt install --reinstall 软件包名

八、dpkg直接操作(底层命令)#

8.1 dpkg命令#

dpkg是apt的底层工具,直接操作.deb软件包:

# 安装.deb包
sudo dpkg -i package.deb
# 卸载软件
sudo dpkg -r 软件包名
# 卸载并删除配置
sudo dpkg -P 软件包名
# 查看已安装的软件
dpkg -l
# 查看软件安装的文件
dpkg -L 软件包名
# 查看文件属于哪个软件
dpkg -S /usr/bin/ls
# 修复依赖
sudo apt --fix-broken install

九、实战:常用软件安装#

9.1 安装Docker#

# Ubuntu
sudo apt update
sudo apt install apt-transport-https ca-certificates curl software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io
# 将当前用户加入docker组
sudo usermod -aG docker $USER

9.2 安装Node.js#

# 使用NodeSource仓库
curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -
sudo apt install nodejs
# 验证
node --version
npm --version

9.3 安装Python 3.11#

# 添加PPA
sudo add-apt-repository ppa:deadsnakes/ppa
sudo apt update
# 安装
sudo apt install python3.11 python3.11-venv python3.11-dev
# 验证
python3.11 --version

9.4 安装Git#

# Ubuntu/Debian
sudo apt install git
# CentOS/RHEL
sudo yum install git
# 配置Git
git config --global user.name "你的名字"
git config --global user.email "你的邮箱"

十、其他包管理工具#

10.1 RPM包管理(底层)#

rpm 是Red Hat系(CentOS/Fedora)的底层包管理工具。

# 安装软件包
sudo rpm -i package.rpm
# 升级软件包
sudo rpm -U package.rpm
# 卸载软件包
sudo rpm -e package_name
# 查询已安装的包
rpm -qa
# 查询某个文件属于哪个包
rpm -qf /usr/bin/ls
# 查询包的详细信息
rpm -qi package_name
# 查询包安装的文件
rpm -ql package_name

注意:rpm不会自动解决依赖,推荐使用yum/dnf代替。


10.2 Python包管理:pip#

pip 是Python的包管理工具,用于安装Python库。

# 安装包
pip install requests
pip3 install requests # 指定Python3
# 安装指定版本
pip install requests==2.28.0
# 卸载包
pip uninstall requests
# 列出已安装的包
pip list
# 查看包信息
pip show requests
# 导出依赖
pip freeze > requirements.txt
# 从文件安装依赖
pip install -r requirements.txt
# 使用国内镜像加速
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple requests

10.3 Node.js包管理:npm#

npm 是Node.js的包管理工具,用于安装JavaScript库。

# 安装包(局部)
npm install express
# 安装包(全局)
npm install -g nodemon
# 安装指定版本
npm install express@4.18.0
# 卸载包
npm uninstall express
# 列出已安装的包
npm list
npm list -g # 全局包
# 初始化项目
npm init
npm init -y # 使用默认配置
# 运行脚本
npm run build
npm start
# 使用国内镜像
npm config set registry https://registry.npmmirror.com

十一、总结#

本章学习了:

  1. apt管理:update、install、remove、search
  2. yum/dnf管理:CentOS/Fedora的包管理
  3. snap管理:通用软件包格式
  4. 源码编译:configure、make、make install
  5. 依赖管理:自动解决、手动修复
  6. 常用软件安装:Docker、Node.js、Python、Git

下一章预告:《Linux操作大全(五):网络配置与管理详解》


如有疑问或发现错误,欢迎在评论区指出!

分享

如果这篇文章对你有帮助,欢迎分享给更多人!

Linux操作大全(四):软件包管理详解
https://emilia520.icu/posts/linux-manual-04-packages/
作者
火花花
发布于
2026-05-25
许可协议
CC BY-NC-SA 4.0

部分信息可能已经过时

目录