1016 字
3 分钟
Linux操作大全(四):软件包管理详解
Linux操作大全(四):软件包管理详解
本文是Linux操作大全系列的第四篇,详细讲解如何在Linux上安装、更新、卸载软件。
一、软件包管理概述
1.1 什么是软件包?
在Linux中,软件通常以”软件包”(Package)的形式分发。一个软件包包含:
- 编译好的程序文件
- 配置文件
- 依赖关系说明
- 安装/卸载脚本
1.2 包管理器对比
| 包管理器 | 发行版 | 命令格式 |
|---|---|---|
| apt | Ubuntu、Debian | apt install 软件名 |
| yum | CentOS 7、RHEL 7 | yum install 软件名 |
| dnf | CentOS 8+、Fedora、RHEL 8+ | dnf install 软件名 |
| pacman | Arch Linux | pacman -S 软件名 |
| zypper | openSUSE | zypper 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-upgrade2.2 搜索软件
# 搜索软件包apt search 关键词
# 示例apt search nginxapt search python3
# 查看软件包详情apt show 软件包名
# 示例apt show nginx2.3 安装软件
# 安装软件sudo apt install 软件包名
# 示例sudo apt install nginxsudo apt install vimsudo 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 showhold2.7 添加第三方PPA
PPA(Personal Package Archive)是Ubuntu的第三方软件源。
# 添加PPAsudo add-apt-repository ppa:作者名/仓库名
# 示例:添加Python 3.11的PPAsudo add-apt-repository ppa:deadsnakes/ppasudo apt updatesudo apt install python3.11
# 删除PPAsudo 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 multiversedeb http://mirrors.aliyun.com/ubuntu/ noble-security main restricted universe multiversedeb http://mirrors.aliyun.com/ubuntu/ noble-updates main restricted universe multiversedeb 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 available3.2 dnf命令(CentOS 8+/Fedora)
dnf是yum的下一代版本,用法基本相同:
# 更新软件包列表dnf check-update
# 更新所有软件sudo dnf update
# 搜索软件dnf search 关键词
# 安装软件sudo dnf install 软件包名
# 卸载软件sudo dnf remove 软件包名
# 清理缓存sudo dnf clean all3.3 添加第三方仓库
# 安装EPEL仓库(Extra Packages for Enterprise Linux)sudo yum install epel-release # CentOS 7sudo dnf install epel-release # CentOS 8+
# 安装Remi仓库(PHP最新版)sudo yum install https://rpms.remirepo.net/enterprise/remi-release-7.rpm3.4 yum/dnf配置文件
# 主配置文件cat /etc/yum.conf # CentOS 7cat /etc/dnf/dnf.conf # CentOS 8+
# 仓库配置目录ls /etc/yum.repos.d/ # CentOS 7ls /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 Codesudo snap install firefoxsudo snap install spotify
# 查看已安装的snapsnap list
# 更新软件sudo snap refresh 软件包名
# 更新所有sudo snap refresh
# 卸载软件sudo snap remove 软件包名4.3 snap常用软件
# 开发工具sudo snap install code --classic # VS Codesudo snap install intellij-idea-community --classic # IntelliJ IDEAsudo snap install pycharm-community --classic # PyCharm
# 浏览器sudo snap install firefoxsudo snap install chromium
# 通讯sudo snap install telegram-desktopsudo snap install discord
# 多媒体sudo snap install vlcsudo snap install spotify五、flatpak包管理
5.1 什么是flatpak?
flatpak是另一种通用软件包格式,由Red Hat主导开发。
# 安装flatpaksudo 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/Debiansudo apt install build-essential
# CentOS/RHELsudo 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.gzcd 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 distclean6.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.gzcd 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
# 启动Nginxsudo /usr/local/nginx/sbin/nginx
# 验证curl http://localhost6.4 使用checkinstall打包
checkinstall可以把源码编译的结果打包成.deb或.rpm软件包,方便管理:
# 安装checkinstallsudo apt install checkinstall
# 编译完成后,用checkinstall代替make installsudo 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 cleansudo apt updatesudo 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
# Ubuntusudo apt updatesudo apt install apt-transport-https ca-certificates curl software-properties-commoncurl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpgecho "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/nullsudo apt updatesudo apt install docker-ce docker-ce-cli containerd.io
# 将当前用户加入docker组sudo usermod -aG docker $USER9.2 安装Node.js
# 使用NodeSource仓库curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -sudo apt install nodejs
# 验证node --versionnpm --version9.3 安装Python 3.11
# 添加PPAsudo add-apt-repository ppa:deadsnakes/ppasudo apt update
# 安装sudo apt install python3.11 python3.11-venv python3.11-dev
# 验证python3.11 --version9.4 安装Git
# Ubuntu/Debiansudo apt install git
# CentOS/RHELsudo yum install git
# 配置Gitgit 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 requestspip3 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 requests10.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 listnpm list -g # 全局包
# 初始化项目npm initnpm init -y # 使用默认配置
# 运行脚本npm run buildnpm start
# 使用国内镜像npm config set registry https://registry.npmmirror.com十一、总结
本章学习了:
- apt管理:update、install、remove、search
- yum/dnf管理:CentOS/Fedora的包管理
- snap管理:通用软件包格式
- 源码编译:configure、make、make install
- 依赖管理:自动解决、手动修复
- 常用软件安装:Docker、Node.js、Python、Git
下一章预告:《Linux操作大全(五):网络配置与管理详解》
如有疑问或发现错误,欢迎在评论区指出!
分享
如果这篇文章对你有帮助,欢迎分享给更多人!
Linux操作大全(四):软件包管理详解
https://emilia520.icu/posts/linux-manual-04-packages/ 部分信息可能已经过时
相关文章 智能推荐
1
Linux操作大全(三):用户与权限管理详解
Linux常见操作 深入讲解Linux用户管理、组管理、sudo权限、PAM认证等知识,让你彻底搞懂Linux的权限体系
2
Linux操作大全(五):网络配置与管理详解
Linux常见操作 全面讲解Linux网络配置,包括IP地址、DNS、防火墙、SSH、网络诊断等知识,让你轻松管理Linux网络
3
Linux操作大全(六):进程管理与服务管理详解
Linux常见操作 全面讲解Linux进程管理、服务管理、systemd、定时任务等知识,让你轻松掌控系统运行状态
4
Linux操作大全(八):磁盘与存储管理详解
Linux常见操作 全面讲解Linux磁盘管理、文件系统、RAID、LVM等知识,让你轻松管理Linux存储
5
Linux操作大全(二):文件与目录操作详解
Linux常见操作 详细讲解Linux文件和目录的各种操作,包括创建、复制、移动、删除、查找、压缩等,每个命令都有实际示例








