当前位置: 首页 > news >正文

【Linux日新月异(三)】CentOS 7软件管理深度指南:从YUM到源码编译

🌌提供:
1. Kimi K2 Thinking(网站: 大语言模型(Large Language Model, LLM),是当前人工智能领域的重要技术分支,专注于自然语言处理和生成任务。)【开源】「AL」〖✿✿✿✿✿〗
🔔说明: 本文内容由Kimi K2生成。AI创作虽经校对,仍难免疏漏或偏颇之处。若您发现错漏、或有任何建议,恳请不吝赐教。您的每一次指正,都是我改进与成长的重要指引。
📓摘要:
   略...(有好建议的可以留言哦~~~(✿◕‿◕✿))


📦 CentOS 7软件管理深度指南:从YUM到源码编译

软件管理是Linux系统运维的核心技能!CentOS 7采用YUM(Yellowdog Updater Modified)作为主力包管理器,底层依赖RPM(Red Hat Package Manager),支持仓库、依赖自动解决、软件组等强大功能。掌握这些命令,软件安装卸载游刃有余!


一、🎛️ YUM基础命令(强烈推荐)

1. yum update- 更新软件包

语法:

yum update [软件包名]

案例1:更新所有软件包(⚠️高危操作)

# 更新系统所有软件到最新版本
yum update -y
# -y: 自动确认yes,无需交互# ⚠️ 警告:生产环境务必先测试!可能导致:
# 1. 内核更新需重启
# 2. 软件版本变化导致配置不兼容
# 3. 依赖冲突

案例2:更新指定软件包

# 只更新nginx
yum update nginx -y# 更新多个包
yum update nginx php mysql -y

案例3:检查可更新(不执行)

# 只检查哪些包可更新
yum check-update# 输出:
# Updated Packages
# kernel.x86_64                     3.10.0-1160.99.1.el7                 updates
# nginx.x86_64                      1.20.1-9.el7                         epel

⚠️ 更新注意事项:

  • 🔥生产环境禁忌:绝不直接yum update,应在测试环境验证
  • 内核更新:如果更新kernel,需重启生效,计划维护窗口
  • 版本锁定:重要软件用yum versionlock锁定版本
  • 备份配置:更新前备份/etc目录,防止配置被覆盖

2. yum install- 安装软件包

语法:

yum install [选项] 软件包名

核心选项:

  • -y:自动确认
  • --downloadonly:仅下载不安装
  • --downloaddir=路径:指定下载目录

案例1:安装软件

# 安装nginx
yum install nginx -y# 安装多个软件
yum install vim git wget curl -y

案例2:下载RPM包不安装(离线环境必备)

# 下载nginx及依赖到/opt/rpms
yum install --downloadonly --downloaddir=/opt/rpms nginx# 查看下载的文件
ls /opt/rpms
# nginx-1.20.1-9.el7.x86_64.rpm
# nginx-all-modules-1.20.1-9.el7.noarch.rpm
# ...

案例3:从本地RPM安装(自动解决依赖)

# 在/opt/rpms目录下
yum localinstall nginx-1.20.1-9.el7.x86_64.rpm -y
# 自动查找并安装依赖包

案例4:安装特定版本

# 查看可用版本
yum --showduplicates list mysql# 安装指定版本
yum install mysql-5.7.38-1.el7.x86_64 -y

⚠️ 安装注意事项:

  • 🔥仓库优先级:多个仓库有同名软件时,先检查yum repolist all的优先级
  • 依赖冲突:如果提示conflicts,用yum deplist 包名查看依赖树
  • 32位库:64位系统安装32位软件需yum install glibc.i686
  • 重复安装:如果已安装,yum install会提示"already installed"

3. yum remove/yum erase- 卸载软件包

语法:

yum remove [软件包名]
yum erase [软件包名]  # 同remove

案例1:卸载软件

# 卸载nginx
yum remove nginx -y# 卸载多个
yum remove nginx php-fpm -y

案例2:卸载并删除配置文件

# yum remove不会删除/etc下的配置文件
# 要完全清理,需手动删除
rm -rf /etc/nginx
rm -rf /var/log/nginx

⚠️ 卸载注意事项:

  • 🔥依赖链风险:卸载可能连带删除依赖此包的其他软件!
  • 确认提示:yum会列出将被删除的包,务必仔细检查
  • 系统核心包:切勿卸载glibckernelsystemd等核心包,系统会崩溃
  • 保护机制:可用yum versionlock锁定关键包,防止误删

4. yum search/yum provides- 搜索软件包

语法:

yum search 关键词
yum provides 文件名/命令

案例1:按名称搜索

yum search mysql
# 输出所有含mysql的包

案例2:查找命令属于哪个包

# 找不到dig命令,查在哪个包
yum provides dig# 输出:
# bind-utils-9.11.4-26.P2.el7_9.9.x86_64 : Utilities for querying DNS name servers
# Repo        : base
# Matched from:
# Filename    : /usr/bin/dig# 安装
yum install bind-utils -y

案例3:查找库文件

# 编译时提示缺少libssl.so
yum provides "*/libssl.so*"
# 输出openssl-devel包

⚠️ 搜索技巧:

  • 🔥provides反向查询:非常适合解决"缺少xxx文件"问题
  • search太慢:可用yum search fast或先yum makecache更新缓存
  • 仓库未索引:某些仓库支持不全,可尝试epel-release扩展

二、📦 RPM底层命令(YUM的基石)

1. rpm -q- 查询已安装软件包

语法:

rpm -q [选项] [软件包名]

核心选项:

  • -q:查询一个包
  • -qa:查询所有已安装包
  • -qi:显示包详细信息
  • -ql:列出包安装的文件
  • -qc:列出配置文件
  • -qd:列出文档
  • -qf 文件名:查询文件属于哪个包(超有用!

案例1:查询软件是否安装

# 查询nginx是否安装
rpm -q nginx
# 输出:nginx-1.20.1-9.el7.x86_64# 未安装则输出:
# package nginx is not installed

案例2:查询所有已安装包

# 统计已安装包数量
rpm -qa | wc -l
# 输出:1200# 查找所有mysql相关包
rpm -qa | grep mysql

案例3:查看文件属于哪个包(反向查询)

# 查询/usr/bin/python属于哪个包
rpm -qf /usr/bin/python# 输出:python-2.7.5-89.el7_9.x86_64# 查询配置文件
rpm -qf /etc/nginx/nginx.conf
# 输出:nginx-1.20.1-9.el7.x86_64

案例4:查看包安装了哪些文件

# 查看nginx包所有文件
rpm -ql nginx# 只看配置文件
rpm -qc nginx
# 输出:
# /etc/logrotate.d/nginx
# /etc/nginx/nginx.conf
# /etc/nginx/fastcgi_params

案例5:查看包的详细信息

rpm -qi nginx
# 输出包含:Name, Version, Release, Architecture, Install Date, Group, Size, License, Signature等

⚠️ 查询注意事项:

  • 🔥查询精确匹配-q必须完整包名,rpm -q mysql不匹配mysql-server
  • 模糊查询:用rpm -qa | grep 关键词
  • 文件查询:只有rpm安装的文件才能用-qf查询
  • 性能rpm -qa会读取整个数据库,首次执行稍慢

2. rpm -i/rpm -U- 安装/升级RPM包

语法:

rpm -i 包文件.rpm          # install
rpm -U 包文件.rpm          # upgrade(或安装)
rpm -F 包文件.rpm          # freshen(仅升级已安装的)

案例1:本地安装RPM包

# 安装单个RPM
rpm -ivh nginx-1.20.1-9.el7.x86_64.rpm
# -i: install
# -v: verbose
# -h: 显示进度条# 输出:
Preparing...                          ################################# [100%]
Updating / installing...1:nginx-1.20.1-9.el7              ################################# [100%]

案例2:升级软件

# 升级nginx
rpm -Uvh nginx-1.20.1-10.el7.x86_64.rpm

⚠️ RPM安装注意事项:

  • 🔥依赖地狱:rpm不会自动解决依赖,缺少依赖会报错
error: Failed dependencies:libssl.so.10()(64bit) is needed by nginx-1.20.1-9.el7.x86_64libcrypto.so.10()(64bit) is needed by nginx-1.20.1-9.el7.x86_64
  • 解决方案:用yum localinstall自动解决依赖
  • 覆盖安装--force强制安装(⚠️危险!会覆盖文件)
  • 旧版本--oldpackage降级安装

3. rpm -e - 卸载RPM包

语法:

rpm -e 软件包名

案例:

# 卸载nginx(只需包名,无需版本)
rpm -e nginx# 忽略依赖卸载(⚠️会留孤儿包)
rpm -e --nodeps nginx

⚠️ 卸载注意事项:

  • 🔥依赖错误:如果其他包依赖它,会报错
error: Failed dependencies:nginx is needed by (installed) web-stack-1.0-1.noarch
  • 危险操作rpm -e --nodeps glibc破坏系统

4. rpm -V- 验证软件包文件完整性

案例:

# 验证nginx包所有文件
rpm -V nginx
# 无输出=所有文件正常# 如果文件被篡改
rpm -V nginx
# 输出:
S.5....T.    /etc/nginx/nginx.conf
# 字段含义:
# S=大小改变, 5=MD5改变, T=时间改变

⚠️ 用途:检查系统文件是否被入侵篡改, Particularly重要!**


三、🏛️ 仓库管理(Repository)

1. yum repolist - 查看仓库

语法:

yum repolist [选项]

核心选项:

  • all:显示所有(启用的和禁用的)
  • -v:详细信息
  • enabled:仅启用的(默认)
  • disabled:仅禁用的

案例1:查看启用的仓库

yum repolist
# 输出:
repo id                                     repo name
base/7/x86_64                               CentOS-7 - Base
epel/x86_64                                 Extra Packages for Enterprise Linux 7 - x86_64
extras/7/x86_64                             CentOS-7 - Extras
updates/7/x86_64                            CentOS-7 - Updates

案例2:查看所有仓库

yum repolist all
# 输出:
repo id                     repo name                               status
base/7/x86_64               CentOS-7 - Base                         enabled: 10,072
base-source/7/x86_64        CentOS-7 - Base Sources                 disabled
centosplus/7/x86_64         CentOS-7 - Plus                         disabled
epel/x86_64                 Extra Packages for Enterprise Linux 7   enabled: 13,500

2. yum-config-manager - 仓库管理(yum-utils)

安装:

yum install -y yum-utils

案例1:启用/禁用仓库

# 启用centosplus仓库
yum-config-manager --enable centosplus# 禁用epel仓库(临时)
yum-config-manager --disable epel# 查看仓库配置
yum-config-manager --save base

案例2:添加新仓库

# 添加nginx官方仓库
nano /etc/yum.repos.d/nginx.repo
# [nginx-stable]
# name=nginx stable repo
# baseurl=http://nginx.org/packages/centos/7/$basearch/
# gpgcheck=1
# enabled=1
# gpgkey=https://nginx.org/keys/nginx_signing.key# 清理缓存
yum clean all# 验证
yum repolist | grep nginx

案例3:使用yum-config-manager添加

# 添加MySQL 8.0仓库
yum-config-manager --add-repo https://repo.mysql.com/yum/mysql-8.0-community/el/7/x86_64/

⚠️ 仓库管理注意事项:

  • 🔥仓库冲突:不同仓库有同名软件时,优先级高的生效
  • 配置位置:仓库配置文件在/etc/yum.repos.d/,以.repo结尾
  • GPG检查:建议保持gpgcheck=1验证软件签名,防篡改
  • EPEL必备yum install epel-release是CentOS第一步!

3. yum clean- 清理缓存

语法:

yum clean [选项]

选项:

  • all:清理所有缓存
  • metadata:清理元数据
  • packages:清理下载的包
  • expire-cache:过期缓存

案例:

# 清理所有缓存(解决metadata错误)
yum clean all# 只清理软件包(释放磁盘)
yum clean packages# 统计缓存大小
du -sh /var/cache/yum

⚠️ 注意事项:

  • 🔥缓存作用yum默认缓存元数据和下载的包,加快重复安装
  • 空间占用:长期不清理可能占数GB空间
  • 错误排查:出现metadata corrupted时,yum clean all是首选方案
  • 自动清理:可配置/etc/yum.conf中的keepcache=0禁用缓存

四、📚 软件组管理(Group)

yum grouplist / groupinstall - 软件组

案例1:查看可用软件组

yum grouplist
# 输出:
# Available Environment Groups:
#    Minimal Install
#    Compute Node
#    Infrastructure Server
#    File and Print Server
#    Basic Web Server
#    Virtualization Host
#    Server with GUI
# Available Groups:
#    Compatibility Libraries
#    Development Tools
#    Scientific Support
#    Security Tools

案例2:安装开发工具组(一键装编译环境)

yum groupinstall "Development Tools" -y
# 包含:gcc, make, automake, gdb等数十个工具# 验证
gcc --version
make --version

案例3:安装桌面环境

# 安装GNOME桌面
yum groupinstall "Server with GUI" -y# 启动桌面
systemctl set-default graphical.target
reboot

⚠️ 软件组注意事项:

  • 🔥组名带空格:必须用引号括起来
  • 批量安装:非常适合快速搭建开发、测试环境
  • 组内更新:组内软件可单独更新,不受组影响

五、🔧 源码编译安装(高级)

步骤1:准备编译环境

# 安装开发工具组
yum groupinstall "Development Tools" -y# 安装常用库
yum install zlib-devel openssl-devel pcre-devel -y

步骤2:下载解压源码

# 下载nginx源码
wget http://nginx.org/download/nginx-1.24.0.tar.gz# 解压
tar -xzf nginx-1.24.0.tar.gz
cd nginx-1.24.0

步骤3:配置编译选项

./configure --prefix=/opt/nginx \--with-http_ssl_module \--with-http_v2_module \--with-pcre \--with-zlib# 检查依赖
# 如果缺少库,会报错,根据提示安装
# 如:./configure: error: SSL modules require the OpenSSL library
# 解决:yum install openssl-devel

步骤4:编译安装

# 编译(多核加速)
make -j 4# 安装
make install# 验证
/opt/nginx/sbin/nginx -v

⚠️ 源码安装注意事项:

  • 🔥维护成本:源码安装无法yum更新,需手动跟踪安全补丁
  • 卸载麻烦:没有make uninstall,需手动删除文件
  • PATH问题:安装到非标准路径需手动添加/etc/profile
  • 推荐场景:仅当yum仓库版本太旧或需定制功能时使用

六、📦 查询与信息获取

1. yum info- 查看软件包信息

案例:

yum info nginx
# 输出:
Name        : nginx
Arch        : x86_64
Epoch       : 1
Version     : 1.20.1
Release     : 9.el7
Size        : 1.7 M
Repo        : epel
Summary     : A high performance web server
URL         : https://nginx.org
License     : BSD
Description : nginx is a web server

2. yum list- 列出软件包

案例:

# 列出所有nginx包
yum list nginx
# 输出:
# Available Packages
# nginx.x86_64               1.20.1-9.el7               epel# 列出已安装的
yum list installed | grep nginx# 列出可更新的
yum list updates

3. yum history- 查看操作历史

案例:

yum history
# 输出:
ID     | Login user               | Date and time    | Action(s)      | Altered
-------------------------------------------------------------------------------10 | root <root>              | 2024-11-15 10:30 | Install        |    1   9 | root <root>              | 2024-11-10 14:20 | Update         |    5   8 | root <root>              | 2024-11-08 09:15 | Erase          |    1   # 查看第10次详情
yum history info 10# 回滚第10次操作(撤销安装)
yum history undo 10

⚠️ history注意事项:

  • 🔥回滚限制:只能回滚yum操作,手动rpm安装无法回滚
  • 事务完整性:yum以事务为单位,保证操作原子性
  • 清理历史yum history new清空历史

七、⚠️ 软件管理黄金法则

1. 🔥 生产环境铁律

  1. 永不yum update -y:必须指定包名,逐个更新
  2. 测试先行:所有更新先在测试环境验证
  3. 版本锁定:关键软件(nginx/mysql)用yum versionlock锁定
  4. 定期审计:每月yum list updates检查安全更新

2. 🔥 仓库管理规范

  1. EPEL必备:优先安装epel-release
  2. 官方优先:官方仓库 > EPEL > 第三方
  3. GPG验证:保持gpgcheck=1,防止恶意软件
  4. 内网镜像:生产环境搭建内网yum镜像,加快速度

3. 🔥 查询与验证

  1. 文件归属:不确定文件来源,rpm -qf /path/to/file
  2. 完整性检查:定期rpm -Va验证系统文件完整性
  3. 安全审计:检查/var/log/yum.log所有安装记录

4. 🔥 源码安装准则

  1. 最后手段:优先用yum,源码安装增加维护成本
  2. 统一路径:统一安装到/opt/usr/local
  3. 文档记录:记录安装步骤和版本,便于交接
  4. 独立用户:服务类软件创建独立用户运行

八、📚 快速命令速查

需求命令示例
安装软件yum installyum install nginx -y
卸载软件yum removeyum remove nginx -y
更新系统yum updateyum update nginx -y
查询包yum infoyum info nginx
搜索包yum searchyum search mysql
找文件归属yum provides/rpm -qfyum provides dig
列出已安装rpm -qarpm -qa | grep nginx
查看文件列表rpm -qlrpm -ql nginx
查看仓库yum repolistyum repolist enabled
安装软件组yum groupinstallyum groupinstall "Development Tools"
清理缓存yum cleanyum clean all
查看历史yum historyyum history undo 10
版本锁定yum versionlockyum versionlock add nginx
本地安装yum localinstallyum localinstall *.rpm

🎓 总结:软件管理的"三字经"

  1. 优先yum:能用yum不源码,自动解决依赖
  2. 谨慎更新:生产环境逐个更新,禁止批量update
  3. 锁定版本:关键服务锁定,避免意外升级
  4. 善用查询rpm -qfyum provides解决文件归属
  5. 记录历史yum history追踪所有操作

记住:仓库是源泉,YUM是舵手,RPM是根基,源码是终章



📖原文: 不破不立,破而后立。大破大立,晓喻新生。-- 荒《完美世界》

⌛怡然: ...


🪁 LuminKu looks forward to seeing you again 🌌

http://www.dtcms.com/a/614838.html

相关文章:

  • 有了空间和域名 网站容易做吗长沙免费旅游景点大全
  • Linux网络NAT、代理服务和内网穿透
  • wordpress链接 颜色济南网站优化小黑
  • 微信授权登录第三方网站开发做h5网站的公司
  • 企业手机网站开通商城建站系统多少钱
  • 全栈项目实战经验,前后端分离开发流程
  • C# 中使用 Influxdb 1.x(四)——在程序内管理Influxdb服务的启停
  • 大模型的On-Policy Distillation(在线蒸馏策略)
  • 杭州网站建设公司有哪几家浅析社区网站的建设
  • ps手机网站页面设计网站主页设计模板
  • 常闭式4G远程开关,从硬件到软件整体实现
  • 找潍坊做网站的360网址大全电脑版
  • 怎么给网站做php后台库易网网站
  • 响应式网站模板xd公司网站管理规定
  • Linux命令-Emacs命令(纯文本网页浏览器)
  • 成都电商网站制作西安模板建站定制
  • aave v3 资产状态更新(updateState)合约代码解析
  • 淄博外贸网站建设公司wordpress首页调用文章多张图片
  • 自适应网站模板公司网站建设 趋势
  • 前端无障碍开发资源,WCAG指南与工具
  • 【前端学习】React学习【万字总结】
  • 前端无障碍开发标准,WCAG 2.2新特性
  • 人形机器人应用于职业教育与实训,以及素养课题设计与知识图谱动态更新
  • 人力资源网站怎么建设网站不想备案
  • 建设网站的文案范文深圳高端logo设计公司
  • 前端微前端架构设计,应用间通信 前端微前端架构设计:应用间通信的实践与挑战
  • 短讯 | 利用开源 Galaxy 平台简化临床细菌全基因组测序数据分析
  • 基于单片机的智慧校园自动打铃系统设计
  • 网站群建设管理规定做公司+网站建设价格
  • 搭建网站用服务器还是虚拟主机百度站长平台清退