【Linux运维极简教程】05-软件包管理
05 - 软件包管理一、概述Linux 软件包管理系统分为两大阵营体系包格式管理工具代表发行版RPM 系.rpmyum / dnf / rpmCentOS, RHEL, Rocky, FedoraDEB 系.debapt / dpkgUbuntu, Debian二、RPM 系包管理CentOS/RHEL2.1 yum 命令# 安装软件包yuminstall-ynginx# 更新软件包yum update-y# 更新所有包yum update-ynginx# 更新指定包# 卸载软件包yum remove nginx# 搜索软件包yum search nginx# 查看软件包信息yum info nginx# 查看已安装的包yum list installed# 查看可更新的包yum list updates# 查看某个文件属于哪个包yum provides */libcrypto.so.1.1# 清理缓存yum clean all yum makecache# 查看包的依赖关系yum deplist nginx# 查看包安装的文件列表rpm-qlnginx2.2 dnf 命令CentOS 8/Fedoradnf 是 yum 的下一代替代品用法基本兼容# 用法与 yum 几乎一致dnfinstall-ynginx dnf update-ydnf remove nginx# dnf 新增功能dnf list--installeddnf autoremove# 清理不需要的依赖2.3 rpm 底层命令rpm 是底层包管理工具不处理依赖关系# 安装本地 rpm 包rpm-ivhpackage-1.0.rpm# i安装 v详细 h进度条# 升级rpm-Uvhpackage-1.1.rpm# 卸载rpm-epackage-name# 查询已安装的包rpm-qa|grepnginx# 查看包安装了哪些文件rpm-qlnginx# 查看某个文件属于哪个包rpm-qf/usr/bin/curl# 查看包信息rpm-qinginx# 查看包的配置文件rpm-qcnginx# 查看包的文档文件rpm-qdnginx# 验证包文件是否被修改rpm-Vnginx2.4 配置 yum 源使用阿里云镜像源国内推荐# CentOS 7mv/etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bakcurl-o/etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo yum makecache# CentOS 8 / Rocky Linuxsed-es|^mirrorlist|#mirrorlist|g\-es|^#baseurlhttp://dl.rockylinux.org/$contentdir|baseurlhttps://mirrors.aliyun.com/rockylinux|g\-i.bak/etc/yum.repos.d/Rocky-*.repo dnf makecache添加 EPEL 源yuminstall-yepel-release yum makecache# EPEL 提供了大量额外软件包添加第三方源如 Nginx 官方源创建/etc/yum.repos.d/nginx.repo[nginx-stable] namenginx stable repo baseurlhttp://nginx.org/packages/centos/$releasever/$basearch/ gpgcheck1 enabled1 gpgkeyhttps://nginx.org/keys/nginx_signing.key module_hotfixestrue三、DEB 系包管理Ubuntu/Debian3.1 apt 命令# 更新软件源索引安装前必须执行aptupdate# 安装软件包aptinstall-ynginx# 更新所有已安装的包aptupgrade-y# 更新系统处理依赖关系变化aptfull-upgrade-y# 卸载软件包aptremove nginx# 保留配置文件aptpurge nginx# 连同配置文件一起删除# 自动清理不需要的依赖aptautoremove-y# 搜索软件包aptsearch nginx# 查看包信息aptshow nginx# 查看已安装的包aptlist--installed# 查看可升级的包aptlist--upgradable3.2 dpkg 底层命令# 安装本地 deb 包dpkg-ipackage_1.0_amd64.deb# 卸载dpkg-rpackage-name# 保留配置dpkg-Ppackage-name# 连同配置删除# 查看已安装的包dpkg-l|grepnginx# 查看包安装的文件dpkg-Lnginx# 查看文件属于哪个包dpkg-S/usr/bin/curl3.3 配置 apt 源# Ubuntu 22.04 替换为阿里云源sed-is|http://archive.ubuntu.com|https://mirrors.aliyun.com|g/etc/apt/sources.listsed-is|http://security.ubuntu.com|https://mirrors.aliyun.com|g/etc/apt/sources.listaptupdate添加 PPA 源# 添加 PPAaptinstall-ysoftware-properties-common add-apt-repository ppa:ondrej/phpaptupdate# 删除 PPAadd-apt-repository--removeppa:ondrej/php四、源码编译安装当软件包管理器中没有需要的版本时可以从源码编译安装。通用流程# 1. 安装编译工具链yum groupinstall-yDevelopment Tools# CentOSaptinstall-ybuild-essential# Ubuntu# 2. 下载源码wgethttps://example.com/software-1.0.tar.gztar-xzfsoftware-1.0.tar.gzcdsoftware-1.0# 3. 配置检查依赖指定安装路径./configure--prefix/usr/local/software --with-ssl/usr/local/ssl# 4. 编译make-j$(nproc)# 5. 安装makeinstall# 6. 验证/usr/local/software/bin/software--versionNginx 编译安装示例# 1. 安装依赖yuminstall-ygcc pcre-devel openssl-devel zlib-develmake# 2. 下载并解压wgethttp://nginx.org/download/nginx-1.25.3.tar.gztar-xzfnginx-1.25.3.tar.gzcdnginx-1.25.3# 3. 配置编译选项./configure\--prefix/usr/local/nginx\--with-http_ssl_module\--with-http_v2_module\--with-http_realip_module\--with-http_stub_status_module# 4. 编译并安装make-j$(nproc)makeinstall# 5. 创建软链接ln-s/usr/local/nginx/sbin/nginx /usr/sbin/nginx# 6. 验证nginx-v五、通用软件管理工具5.1 snapUbuntu# 安装snapinstallcode--classic# 查看snap list# 更新snap refresh code# 卸载snap remove code5.2 二进制包直接安装很多现代软件如 Go、Node.js、Docker提供预编译二进制包# 安装 Gowgethttps://go.dev/dl/go1.21.5.linux-amd64.tar.gzrm-rf/usr/local/gotar-C/usr/local-xzfgo1.21.5.linux-amd64.tar.gz# 配置环境变量echoexport PATH$PATH:/usr/local/go/bin/etc/profilesource/etc/profile# 验证go version六、实战场景场景一排查命令找不到问题# 确认命令是否存在whichnginxwhereisnginx# 查看命令属于哪个包yum provides */nginx# CentOSapt-file search bin/nginx# Ubuntu需先 apt install apt-file apt-file update# 安装对应的包yuminstall-ynginx场景二制作本地 yum 仓库# 1. 安装 createrepoyuminstall-ycreaterepo# 2. 创建仓库目录放入 rpm 包mkdir-p/data/repocp*.rpm /data/repo/# 3. 创建仓库元数据createrepo /data/repo# 4. 配置本地源cat/etc/yum.repos.d/local.repoEOF [local] nameLocal Repository baseurlfile:///data/repo enabled1 gpgcheck0 EOF# 5. 使用yum makecache yum list--disablerepo*--enablerepolocal场景三锁定软件包版本# CentOS - yum versionlock 插件yuminstall-yyum-plugin-versionlock yum versionlock nginx-1.25.3-1.el7# Ubuntu - apt-mark holdapt-mark hold nginx apt-mark showhold apt-mark unhold nginx七、小结本篇介绍了 RPM 系yum/dnf/rpm和 DEB 系apt/dpkg两大包管理体系以及源码编译安装方法。实际运维中应优先使用包管理器安装便于统一管理和更新仅在需要特定版本或定制功能时才使用源码编译。上一篇04 - 进程与服务管理下一篇06 - 网络配置与管理