Linux新手入门:RPMYUM软件包管理全程实操

Linux新手入门:RPMYUM软件包管理全程实操 Linux新手入门RPMYUM软件包管理全程实操一、软件包管理基础认知1.1 Windows与Linux软件安装区别1.1.1 Windows软件管理方式系统注册表安装通过控制面板-程序和功能安装软件信息写入系统注册表可统一卸载管理绿色免安装软件无需安装解压即用无注册表信息如U盘启动工具rufus软件合法来源官方应用商城、软件官方官网微信、QQ、浏览器等![](课堂笔记-0728.images/image-20240729095903164.png)1.1.2 Linux两大主流包管理体系Linux不同发行版对应不同软件包格式主流分为两大阵营新手只需重点掌握RPM体系![image-20221219112516389](课堂笔记-0728.images/image-20221219112516389.png)RPM包体系RedHat系本文重点学习企业服务器主流适用系统RHEL、Fedora、CentOS、CentOS Stream、Rocky、OEL核心工具rpm底层命令、yum上层依赖解决工具DEB包体系Debian系适用系统Debian、Ubuntu、Kali Linux核心工具dpkg、apt小众体系ArchLinux、Gentoo等服务器极少使用二、RPM包深度解析核心基础2.1 RPM包文件名标准格式RPM是RedHat官方开发的软件包管理规范统一了Linux软件安装格式CentOS所有官方软件均为RPM格式。标准格式name-version-release.architecture.rpm实战示例lrzsz-0.12.20-36.el7.x86_64.rpm逐段拆解新手必记name软件名lrzsz文件传输工具名称version源码版本0.12.20软件官方原始版本号release发行版编译号36.el7CentOS7系统编译打包版本由厂商定义architecture硬件架构x86_64适配64位服务器noarch通用架构不限CPU所有设备可安装x86_6464位桌面/服务器架构aarch64ARM架构国产服务器、手机架构2.2 RPM包三大核心组成每一个RPM安装包都包含3部分内容缺一不可程序文件软件运行所需的二进制程序、配置文件、依赖库元数据信息软件名称、版本、依赖关系、许可证、更新日志、架构信息执行脚本安装、更新、卸载前后自动执行的脚本完成环境初始化2.3 RPM包安全校验原理官方RPM包均经过GPG非对称加密签名防止软件被篡改、植入病毒保障服务器安全。2.3.1 非对称加密简易理解私钥厂商自留用于给软件包签名加密公钥公开分发服务器用于校验软件签名合法性核心流程厂商私钥签名 → 用户公钥校验 → 校验通过才可安装失败则拒绝安装2.4 RPM安装升级核心规则新手极易踩坑的规则提前规避报错普通软件默认只能安装一个版本高版本会覆盖低版本kernel内核是唯一例外可多版本共存防止新内核无法启动旧内核可兜底开机软件升级无需逐级更新可直接安装最新版RPM升级会自动删除旧程序默认保留用户自定义配置文件避免配置丢失三、RPM命令全套实操rpm是底层软件包工具可实现所有软件本地操作缺点是无法自动解决依赖适合本地包精准操作。3.1 RPM查询操作最常用核心作用查询已安装软件信息、文件归属、依赖、配置文件等排错必备3.1.1 命令基础语法rpm {-q|--query} [select-options] [query-options] select-options 筛选条件-a所有包、-f文件归属、-p本地包文件 query-options 查询详情-i信息、-l文件列表、-c配置文件、-d帮助文档3.1.2 实操案例可直接复制执行# 1.查询系统所有已安装软件包[rootcentos7 ~]# rpm -qa# 2.查询指定软件是否安装无输出未安装[rootcentos7 ~]# rpm -q httpd未安装软件包 httpd[rootcentos7 ~]# rpm -q kernelkernel-3.10.0-1160.71.1.el7.x86_64# 3.查询软件详细元数据信息版本、许可证、厂商、功能介绍[rootcentos7 ~]# rpm -q coreutils -i# 4.查询软件安装的所有文件路径程序、配置、文档[rootcentos7 ~]# rpm -q openssh-server -l# 5.仅查询软件的配置文件运维重点关注[rootcentos7 ~]# rpm -q openssh-server -c# 6.仅查询软件的帮助文档、手册文件[rootcentos7 ~]# rpm -q openssh-server -d# 7.查询某个系统文件属于哪个软件包文件丢失排错必备[rootcentos7 ~]# rpm -q -f /etc/ssh/sshd_config# 8.查询软件安装执行的脚本[rootcentos7 ~]# rpm -q openssh-server --scripts# 9.查询软件更新日志[rootcentos7 ~]# rpm -q openssh-server --changelog3.1.3 扩展下载官方RPM包并查询本地包信息# 安装下载工具下载httpd官方安装包[rootcentos7 ~]# yum install -y yum-utils[rootcentos7 ~]# yumdownloader httpd# 查询本地未安装的RPM包配置文件信息-p参数作用[rootcentos7 ~]# rpm -q -p httpd-2.4.6-99.el7.centos.1.x86_64.rpm -c3.2 RPM验证操作核心作用校验已安装软件文件是否被修改、删除、权限变更排查文件篡改、损坏问题3.2.1 基础语法rpm {-V|--verify} [select-options] [verify-options]3.2.2 实操案例# 1.校验openssh-server软件完整性无输出文件完好无修改[rootcentos7 ~]# rpm -V openssh-server# 2.修改配置文件后再次校验会提示文件变更[rootcentos7 ~]# sed -i s/PermitRootLogin yes/PermitRootLogin no/g /etc/ssh/sshd_config[rootcentos7 ~]# rpm -V openssh-server# 3.删除配置文件校验会提示文件缺失[rootcentos7 ~]# mv /etc/ssh/sshd_config .[rootcentos7 ~]# rpm -V openssh-server# 4.恢复文件校验恢复正常[rootcentos7 ~]# mv sshd_config /etc/ssh/sshd_config3.3 RPM安装、卸载、重装3.3.1 基础语法# 安装语法 rpm {-i|--install} [install-options] PACKAGE_FILE ... # 卸载语法 rpm {-e|--erase} PACKAGE_NAME # 重装语法 rpm {--reinstall} [install-options] PACKAGE_FILE ...3.3.2 完整实操# 1.下载lrzsz传输工具RPM包[rootcentos7 ~]# repoquery --location lrzsz[rootcentos7 ~]# wget http://mirrors.aliyun.com/centos7/os/x86_64/Packages/lrzsz-0.12.20-36.el7.x86_64.rpm# 2.普通安装[rootcentos7 ~]# rpm -i lrzsz-0.12.20-36.el7.x86_64.rpm# 3.友好安装显示进度条新手推荐 -vh[rootcentos7 ~]# rpm -ivh lrzsz-0.12.20-36.el7.x86_64.rpm# 4.卸载软件[rootcentos7 ~]# rpm -e lrzsz# 5.友好卸载[rootcentos7 ~]# rpm -evh lrzsz# 6.重新安装修复损坏文件保留配置[rootcentos7 ~]# rpm --reinstall -vh lrzsz*3.3.3 依赖报错说明使用rpm安装软件最大痛点不会自动安装依赖缺失依赖直接报错如下所示后续yum可完美解决# 安装httpd会出现依赖检测失败[rootcentos7 ~]# rpm -ivh httpd-2.4.6-99.el7.centos.1.x86_64.rpm错误依赖检测失败 /etc/mime.types 被 httpd-2.4.6-99.el7.centos.1.x86_64 需要 httpd-tools2.4.6-99.el7.centos.1 被 httpd-2.4.6-99.el7.centos.1.x86_64 需要3.4 RPM包文件提取无需安装直接拿文件适用场景仅需要RPM包中个别文件不想完整安装软件可直接提取3.4.1 Windows提取方式使用360压缩、WinRAR等压缩工具直接打开RPM包可视化提取所需文件3.4.2 Linux命令提取两种方法# 方法一分步提取# 1.将RPM包转为cpio归档格式[rootcentos7 ~]# rpm2cpio httpd-2.4.6-99.el7.centos.1.x86_64.rpm httpd.cpio# 2.查看归档内所有文件[rootcentos7 ~]# cpio -t httpd.cpio# 3.精准提取指定配置文件[rootcentos7 ~]# cpio -id ./etc/httpd/conf/httpd.conf httpd.cpio# 方法二一步提取所有文件最常用[rootcentos7 ~]# rpm2cpio httpd-2.4.6-99.el7.centos.1.x86_64.rpm | cpio -id *四、YUM包管理4.1 YUM与RPM区别RPM底层工具仅能操作本地包不解决依赖适合精准操作YUM上层工具基于RPM开发可联网从仓库下载软件自动检测、下载、安装所有依赖生产环境首选4.2 YUM核心命令实操大全4.2.1 help 查看帮助# 查看yum所有命令用法[rootcentos7 ~]# yum help4.2.2 info 查看软件详情# 查看仓库中httpd软件版本、简介、官网、协议信息[rootcentos7 ~]# yum info httpd4.2.3 list 查看软件清单# 查看所有http开头的软件包[rootcentos7 ~]# yum list http*# 查看软件所有可安装版本版本切换必备[rootcentos7 ~]# yum list httpd --showduplicates4.2.4 search 关键字搜索软件# 搜索包含web server关键字的所有软件[rootcentos7 ~]# yum search web server# 全字段搜索简介描述名称[rootcentos7 ~]# yum search all web server4.2.5 provides 查询文件所属软件包核心用途系统缺少某个命令不知道装哪个软件用此命令查询# 查询sar命令属于哪个软件包[rootcentos7 ~]# yum provides sar# 模糊查询[rootcentos7 ~]# yum provides *bin/sar# 安装对应软件[rootcentos7 ~]# yum install -y sysstat4.2.6 install 安装软件# 常规安装vsftpd服务[rootcentos7 ~]# yum install vsftpd -y# 仅下载不安装保存到指定目录离线部署必备[rootcentos7 ~]# yum install vsftpd --downloadonly --downloaddir/root/4.2.7 localinstall 安装本地RPM包区别rpm命令yum本地安装可以自动解决依赖完美规避rpm依赖报错[rootcentos7 ~]# yum localinstall ./vsftpd-3.0.2-29.el7_9.x86_64.rpm4.2.8 downgrade 软件版本降级# 降级vsftpd到指定旧版本[rootcentos7 ~]# yum downgrade -y vsftpd-3.0.2-28.el7# 重点关联依赖包需同步降级否则报错[rootcentos7 ~]# yum downgrade -y httpd-tools-2.4.6-97.el7.centos httpd-2.4.6-97.el7.centos4.2.9 update 软件升级# 升级指定软件[rootcentos7 ~]# yum update vsftpd-3.0.2-29.el7_9 -y# 升级系统所有软件到最新版本定期维护使用[rootcentos7 ~]# yum update -y4.2.10 remove 卸载软件# 卸载vsftpd及关联依赖[rootcentos7 ~]# yum remove -y vsftpd4.3 YUM事务历史记录yum会记录所有安装、卸载、降级操作支持查看、重做、回滚操作改错神器# 1.查看所有yum操作历史[rootcentos7 ~]# yum history# 2.查看指定ID操作的详细记录[rootcentos7 ~]# yum history info 2# 3.撤销指定操作回滚[rootcentos7 ~]# yum history undo 4# 4.重做指定操作[rootcentos7 ~]# yum history redo 44.4 YUM软件包组管理批量安装针对环境包组桌面环境、开发工具一键批量安装所有依赖软件# 查看所有软件包组[rootcentos7 ~]# yum grouplist# 查看指定包组详情[rootcentos7 ~]# yum groupinfo Server with GUI# 安装桌面环境包组[rootcentos7 ~]# yum groupinstall Server with GUI -y# 卸载软件包组[rootcentos7 ~]# yum groupremove mariadb-client -y五、YUM仓库配置与管理5.1 YUM核心配置文件详解yum主配置文件/etc/yum.conf分为全局main配置和仓库独立配置[rootcentos7 ~]# cat /etc/yum.conf[main]cachedir/var/cache/yum/$basearch/$releasever# 软件缓存目录keepcache0# 不保留安装缓存debuglevel2# 日志调试级别logfile/var/log/yum.log# yum操作日志文件exactarch1# 严格匹配系统架构obsoletes1# 允许版本替换更新gpgcheck1# 默认开启软件签名校验plugins1# 开启插件installonly_limit5# 仅保留5个内核版本bugtracker_urlhttp://bugs.centos.org/set_project.php?project_id23refhttp://bugs.centos.org/bug_report_page.php?categoryyumdistroverpkgcentos-release5.2 仓库基础管理操作# 1.查看已启用的仓库[rootcentos7 ~]# yum repolist# 2.查看所有仓库包含禁用仓库[rootcentos7 ~]# yum repolist all# 3.启用指定仓库[rootcentos7 ~]# yum-config-manager --enable epel-debuginfo# 4.禁用指定仓库[rootcentos7 ~]# yum-config-manager --disable epel-debuginfo5.3 仓库缓存管理修改仓库、网络异常后需清理重建缓存保证软件列表正常加载# 清理所有缓存[rootcentos7 ~]# yum clean all# 重新生成仓库缓存[rootcentos7 ~]# yum makecache5.4 常用第三方仓库部署5.4.1 EPEL扩展仓库必备系统默认仓库软件有限EPEL仓库提供大量拓展免费软件新手必装# 替换为阿里云EPEL源国内高速[rootcentos7 ~]# curl -s -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo5.4.2 Kubernetes/Docker仓库部署# 添加Kubernetes仓库[rootcentos7 ~]# yum-config-manager --add-repohttps://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/# 添加Docker官方仓库[rootcentos7 ~]# cat EOF /etc/yum.repos.d/docker-ce.repo[docker-ce-stable]nameDocker CE Stable -$basearchbaseurlhttps://mirrors.aliyun.com/docker-ce/linux/centos/$releasever/$basearch/stableenabled1gpgcheck0EOF六、源码编译安装实操高级部署YUM/RPM安装的是适配系统的稳定版版本可能滞后源码安装可安装最新版本软件6.1 源码安装NginxWeb服务6.1.1 软件介绍Nginx是高性能反向代理、Web服务器占用资源少、并发能力强企业主流Web服务6.1.2 完整编译步骤# 1.安装编译依赖工具[rootcentos7 ~]# yum install gcc make pcre-devel zlib-devel -y# 2.下载最新稳定版源码包[rootcentos7 ~]# wget https://nginx.org/download/nginx-1.24.0.tar.gz# 3.解压源码包[rootcentos7 ~]# tar -xf nginx-1.24.0.tar.gz# 4.进入目录配置安装路径[rootcentos7 ~]# cd nginx-1.24.0/[rootcentos7 nginx-1.24.0]# ./configure --prefix/usr/local/nginx# 5.编译并安装耗时稍长耐心等待[rootcentos7 nginx-1.24.0]# make make install# 6.配置全局环境变量[rootcentos7 ~]# echo export PATH$PATH:/usr/local/nginx/sbin/ ~/.bashrc[rootcentos7 ~]# source ~/.bashrc6.1.3 Nginx服务管理# 启动服务[rootcentos7 ~]# nginx# 验证启动成功[rootcentos7 ~]# curl -s http://localhost | grep Thank# 重载配置不中断服务[rootcentos7 ~]# nginx -s reload# 优雅停止处理完请求再关闭[rootcentos7 ~]# nginx -s quit# 强制停止[rootcentos7 ~]# nginx -s stop6.1.4 配置Systemd开机自启# 创建服务文件[rootcentos7 ~]# vim /etc/systemd/system/nginx.service服务文件内容[Unit] DescriptionNginx server daemon [Service] Typeforking ExecStart/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf ExecReload/usr/local/nginx/sbin/nginx -s reload ExecStop/usr/local/nginx/sbin/nginx -s quit [Install] WantedBymulti-user.target# 重载服务、设置开机自启并启动[rootcentos7 ~]# systemctl daemon-reload[rootcentos7 ~]# systemctl enable nginx.service --now七、企业级自建YUM仓库实操适用场景内网服务器无外网无法联网下载软件可自建本地YUM仓库实现内网批量部署软件7.1 自建仓库完整流程准备所需RPM软件包创建仓库索引文件通过Web服务发布仓库客户端配置仓库并验证7.2 详细实操步骤# 1.准备软件包存放目录[rootserver ~]# mkdir -p /var/www/html/tools/Packages[rootserver ~]# cd /root# 2.下载所需软件包包含依赖[rootserver ~]# yumdownloader vim open-vm-tools vsftpd lrzsz bash-completion# 3.移动所有包到仓库目录[rootserver ~]# mv *.rpm /var/www/html/tools/Packages/# 4.安装仓库索引工具[rootserver ~]# yum install -y createrepo# 5.生成仓库索引信息[rootserver ~]# createrepo /var/www/html/tools/# 6.安装httpd发布仓库网页[rootserver ~]# yum install -y httpd[rootserver ~]# systemctl enable httpd --now# 7.关闭防火墙和SELinux内网测试环境[rootserver ~]# systemctl disable firewalld.service --now[rootserver ~]# setenforce 07.3 客户端配置与验证# 1.备份原有官方仓库[rootclient ~]# mkdir /etc/yum.repos.d/old[rootclient ~]# mv /etc/yum.repos.d/*repo /etc/yum.repos.d/old# 2.新建本地自建仓库配置[rootclient ~]# cat EOF /etc/yum.repos.d/tools.repo[tools]namecentos7 tools from HYC.cloudbaseurlhttp://server.laoma.cloud/tools/enabled1gpgcheck0EOF# 3.测试安装软件内网无外网也可安装[rootclient ~]# yum install -y vim7.4 同步远程仓库到本地可同步官方仓库所有软件到本地搭建完整本地镜像仓库# 同步仓库所有包和元数据[rootclient ~]# reposync --repoidtools --download-metadata# 重新生成索引[rootclient ~]# createrepo tools八、全文核心知识点总结包体系区分RPM适用于CentOS/RHELDEB适用于Ubuntu/Debian企业运维优先掌握RPMYUMRPM核心擅长本地包精准操作可查询、验证、提取文件缺点是无法自动解决依赖YUM核心优势自动解决软件依赖支持在线安装、升级、降级、批量部署生产首选仓库配置默认官方仓库软件有限必须部署EPEL拓展仓库满足日常运维需求源码安装场景需最新版软件、自定义编译参数时使用步骤安装依赖→解压→configure→makemake install自建仓库价值解决内网无外网环境的软件部署问题适配企业内网服务器集群安全规范所有软件优先官方/阿里云镜像源避免第三方非法源防止软件植入后门