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

【Linux运维极简教程】05-软件包管理

05 - 软件包管理

一、概述

Linux 软件包管理系统分为两大阵营:

体系包格式管理工具代表发行版
RPM 系.rpmyum / dnf / rpmCentOS, RHEL, Rocky, Fedora
DEB 系.debapt / dpkgUbuntu, Debian

二、RPM 系包管理(CentOS/RHEL)

2.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-qlnginx

2.2 dnf 命令(CentOS 8+/Fedora)

dnf 是 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-Vnginx

2.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-e's|^mirrorlist=|#mirrorlist=|g'\-e's|^#baseurl=http://dl.rockylinux.org/$contentdir|baseurl=https://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] name=nginx stable repo baseurl=http://nginx.org/packages/centos/$releasever/$basearch/ gpgcheck=1 enabled=1 gpgkey=https://nginx.org/keys/nginx_signing.key module_hotfixes=true

三、DEB 系包管理(Ubuntu/Debian)

3.1 apt 命令

# 更新软件源索引(安装前必须执行)aptupdate# 安装软件包aptinstall-ynginx# 更新所有已安装的包aptupgrade-y# 更新系统(处理依赖关系变化)aptfull-upgrade-y# 卸载软件包aptremove nginx# 保留配置文件aptpurge nginx# 连同配置文件一起删除# 自动清理不需要的依赖aptautoremove-y# 搜索软件包aptsearch nginx# 查看包信息aptshow nginx# 查看已安装的包aptlist--installed# 查看可升级的包aptlist--upgradable

3.2 dpkg 底层命令

# 安装本地 deb 包dpkg-ipackage_1.0_amd64.deb# 卸载dpkg-rpackage-name# 保留配置dpkg-Ppackage-name# 连同配置删除# 查看已安装的包dpkg-l|grepnginx# 查看包安装的文件dpkg-Lnginx# 查看文件属于哪个包dpkg-S/usr/bin/curl

3.3 配置 apt 源

# Ubuntu 22.04 替换为阿里云源sed-i's|http://archive.ubuntu.com|https://mirrors.aliyun.com|g'/etc/apt/sources.listsed-i's|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-y"Development 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--version

Nginx 编译安装示例

# 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 snap(Ubuntu)

# 安装snapinstallcode--classic# 查看snap list# 更新snap refresh code# 卸载snap remove code

5.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# 配置环境变量echo'export 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.repo<<'EOF' [local] name=Local Repository baseurl=file:///data/repo enabled=1 gpgcheck=0 EOF# 5. 使用yum makecache yum list--disablerepo="*"--enablerepo="local"

场景三:锁定软件包版本

# 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 - 网络配置与管理

http://www.cnnetsun.cn/news/3384994.html

相关文章:

  • HCL实验:OSPF与RIP双向路由引入实战解析
  • ChatGPT工作模式与Codex协同:AI助手在开发与创作中的智能切换
  • Silvaco TCAD实战:从网格划分到物理模型选择的仿真精度与效率平衡术
  • 模板驱动的文档自动化:从Word填空到智能内容流水线
  • 实战解析:如何用Python绘制并优化你的投资组合有效前沿
  • C++模板实现线程安全单例模式:原理、实现与工程实践
  • DeepSeek V4 Flash:95%成本降低的AI Agent架构优化方案
  • MATLAB实现的谱减法语音降噪仿真包,含完整助听器增强流程与实测音频
  • ADM2483BRWZ-REEL实战解析:隔离RS-485收发器的关键设计与应用考量
  • R Markdown数据预处理实战:医疗风控场景下的可复现清洗流水线
  • Grok 4.5大模型在办公自动化与API集成中的实战应用
  • 构建高性能RoCE网络:无损以太网与拥塞控制实战解析
  • 围棋AI分析实战:从环境配置到棋局深度解析
  • 从共基到渥尔曼:突破输入阻抗瓶颈的放大器设计实践
  • Fast-GitHub完整指南:如何实现国内GitHub高速访问与下载加速
  • 从浮栅到文件系统:深入解析NAND与NOR闪存的硬件架构与软件生态
  • Unity强化学习实战:5分钟云端训练机器人舞蹈动作
  • Unity资源依赖分析利器:AssetUsageDetector核心原理与实战应用
  • 谢希仁《计算机网络》核心知识点精讲:从理论到实战应用
  • 三维姿态的数学基石:从欧拉角到旋转矩阵的转换原理与实战陷阱
  • 告别ST-Link:STM32F103C8T6刷入Arduino Bootloader实现USB一键烧录
  • 终极指南:5分钟解锁WeMod专业版完整功能,WandEnhancer完全免费使用教程
  • 全球主流人工智能的认识论危机、地缘资本主义人格投影与真理映射的科学哲学破局
  • 蓝牙模块与STM32的智能硬件开发实战
  • 嵌入式处理器全景解析 - 从通用到专用,从CPU到ASIC的演进与选型
  • DonkeyCar软硬协同配置:树莓派ARM架构下的深度学习环境实战指南
  • BUUCTF_Crypto进阶:RSA多组n与c的共模攻击与模不互素实战
  • JUnit 5核心API深度解析:从架构、断言到扩展模型与实战
  • 天才的阴影:当‘仅仅不错’遇见‘伟大’——从奥本海默与狄拉克看跨界者的困境
  • AES实战指南:从原理到Java代码的加密与解密