一、Linux 应用程序组成**
1. Linux 命令与应用程序的区别
类别特点内部命令exit, history, cd, source, echo 等(通过 help 查看完整列表)Linux 命令1. 执行文件较小,通常位于 /bin、/sbin 目录 2. 随操作系统安装 3. 固定格式:命令 + 选项 + 参数 4. 主要在字符界面操作应用程序1. 执行文件位于 /usr/bin, /usr/sbin, /usr/local/bin, /usr/local/sbin 等目录 2. 需独立安装,提供独立功能(等同于软件) 3. 运行格式由开发者自定义 4. 可能支持图形界面;部分应用程序的命令行调用方式与 Linux 命令类似type 命令名 : 查看该命令是否为内部命令(shell中已集成为内部命令)
2. 应用程序的组成
典型应用程序包含以下部分:
组件存储位置说明(1) 普通可执行程序/usr/bin普通用户可执行(2) 服务器/管理程序/usr/sbin仅管理员可执行(3) 配置文件/etc/ 或 /etc/子目录/子目录通常与应用程序同名(4) 日志文件/var/log记录运行信息(5) 参考文档/usr/share/doc说明文档、示例等(6) man 手册/usr/share/man执行文件及配置的帮助手册3. 软件包封装类型
类型扩展名适用系统特点(1) RPM 包.rpmRHEL, Fedora, SUSE 等依赖性强(2) DEB 包.debDebian, Ubuntu 等(3) 源代码包.tar.gz/.tar.bz2所有 Linux 系统需编译安装源码安装流程:
tar -xzf app.tar.gz # 解压
cd app-1.0/
./configure --prefix=/opt # 配置安装路径
make # 编译
sudo make install # 安装
二、RPM 包管理
1. RPM 软件包命名格式
coreutils-8.30-4.el7.x86_64.rpm
coreutils:软件名称8.30-4:版本号.el7:发行版版本(RHEL/CentOS 7)x86_64:处理器架构(noarch 表示通用)
2. RPM 命令操作
挂载光驱:mount /dev/cdrom /mnt/
查询已安装的包:
rpm -qa # 列出所有已安装 RPM 包
rpm -qa | grep vsftpd # 检查指定包是否安装
rpm -qi vsftpd # 查看包的详细信息
rpm -ql vsftpd # 查看包安装的文件列表
rpm -qf /path/to/file # 查看文件所属的包
查询未安装的包(需完整路径):
rpm -qpi /path/to/package.rpm # 查看包信息
rpm -qpl /path/to/package.rpm # 查看包将安装的文件列表
安装与卸载:
rpm -ivh package.rpm # 安装(显示进度)
rpm -Uvh package.rpm # 更新(若未安装则放弃)
rpm -e package_name # 卸载
常用选项:
--force:强制操作--nodeps:忽略依赖关系
三、YUM 仓库管理
1. 配置 YUM 仓库
仓库配置文件需放在 /etc/yum.repos.d/ 目录,例如 server.repo:
[base] # 仓库 ID
name=Base Repository # 仓库描述
baseurl=file:///mnt/ # 仓库路径(本地/USB/网络)
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial
enabled=1 # 启用仓库
gpgcheck=0 # 关闭 GPG 验证
2. YUM 常用命令
yum install -y httpd # 安装软件包
yum remove -y httpd # 卸载软件包
yum update -y httpd # 更新指定软件包
yum list # 列出所有可用/已安装包
yum groupinstall -y "Development Tools" # 安装软件包组
yum groupremove -y "Development Tools" # 卸载软件包组
yum group list # 列出软件包组
dnf 命令:在 RHEL 8+ 中替代 YUM,语法与 YUM 一致(如 dnf install -y httpd)。
3. YUM/DNF 高级操作
# 搜索软件包
yum search nginx
# 查看依赖关系
yum deplist httpd
# 清理缓存
yum clean all && yum makecache
# 查看历史操作
dnf history
dnf history undo 6 # 撤销第6次操作
# 最小化安装组
dnf groupinstall "Minimal Install" --with-optional
4. 常见问题解决
依赖冲突处理:
# 1. 检查冲突包
rpm -qa | grep conflict-package
# 2. 尝试修复
sudo dnf autoremove
sudo dnf --skip-broken update
# 3. 手动解决
sudo rpm -e --nodeps conflict-package
四、扩展知识**
1. 包管理工具对比
功能rpmyumdnfapt依赖解析❌✅✅✅事务回滚❌❌✅✅多仓库支持❌✅✅✅配置文件管理❌部分✅✅2. 最佳实践
优先使用高级工具:dnf/yum > rpm > 源码编译
生产环境操作:
测试环境验证后再部署使用 yum history 记录变更重要操作前备份:sudo rpm -qa > installed_packages.log
自定义仓库:
# 创建本地仓库
createrepo /opt/local-repo
3. 日志分析技巧
# 监控安装日志
tail -f /var/log/dnf.log
# 检查错误(常见关键字)
grep -i 'error\|fail' /var/log/yum.log
通过 journalctl -u dnf-makecache 查看仓库缓存过程
五、网上 YUM 源配置指南
问题场景传统 RPMYUM 解决方案安装 A 软件提示缺少依赖库 B自动下载 B 及其所有子依赖依赖冲突强制安装导致系统崩溃智能选择兼容版本循环依赖手动破解依赖链自动解析依赖环1. 国内主流镜像源
服务商适用系统仓库地址特点阿里云CentOS/RHELhttps://mirrors.aliyun.com/centos/覆盖全版本,更新快腾讯云CentOS/RHELhttps://mirrors.tencent.com/centos/国内多节点加速华为云CentOS/RHELhttps://repo.huaweicloud.com/centos/企业级稳定性清华 TUNACentOS/EPELhttps://mirrors.tuna.tsinghua.edu.cn/学术网络优化网易CentOShttp://mirrors.163.com/.help/centos/老版本支持完善
EPEL 源:企业版额外软件包(必装)
yum install -y epel-release # 安装EPEL源
2. 配置步骤(CentOS/RHEL 为例)
步骤1:备份原有配置
sudo mkdir /etc/yum.repos.d/backup
sudo mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/backup/
步骤2:下载新源配置(以阿里云为例)
# CentOS 7
sudo curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
# CentOS 8
sudo curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-vault-8.5.2111.repo
# EPEL源
sudo curl -o /etc/yum.repos.d/epel.repo https://mirrors.aliyun.com/repo/epel-7.repo
步骤3:更新缓存
sudo yum clean all # 清除旧缓存
sudo yum makecache # 生成新缓存
sudo yum update # 更新系统
3. 手动编写 .repo 文件示例
/etc/yum.repos.d/aliyun.repo:
[base]
name=Aliyun CentOS-$releasever - Base
baseurl=https://mirrors.aliyun.com/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7
enabled=1
[epel]
name=Aliyun EPEL
baseurl=https://mirrors.aliyun.com/epel/$releasever/$basearch
gpgcheck=0
enabled=1
yum repolist //判断软件包是否可用