一、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 包 | .rpm | RHEL, Fedora, SUSE 等 | 依赖性强 |
(2) DEB 包 | .deb | Debian, 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 命令操作
查询已安装的包:
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. 包管理工具对比
功能 | rpm | yum | dnf | apt |
---|---|---|---|---|
依赖解析 | ❌ | ✅ | ✅ | ✅ |
事务回滚 | ❌ | ❌ | ✅ | ✅ |
多仓库支持 | ❌ | ✅ | ✅ | ✅ |
配置文件管理 | ❌ | 部分 | ✅ | ✅ |
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 源配置指南
问题场景 | 传统 RPM | YUM 解决方案 |
---|---|---|
安装 A 软件 | 提示缺少依赖库 B | 自动下载 B 及其所有子依赖 |
依赖冲突 | 强制安装导致系统崩溃 | 智能选择兼容版本 |
循环依赖 | 手动破解依赖链 | 自动解析依赖环 |
1. 国内主流镜像源
服务商 | 适用系统 | 仓库地址 | 特点 |
---|---|---|---|
阿里云 | CentOS/RHEL | https://mirrors.aliyun.com/centos/ | 覆盖全版本,更新快 |
腾讯云 | CentOS/RHEL | https://mirrors.tencent.com/centos/ | 国内多节点加速 |
华为云 | CentOS/RHEL | https://repo.huaweicloud.com/centos/ | 企业级稳定性 |
清华 TUNA | CentOS/EPEL | https://mirrors.tuna.tsinghua.edu.cn/ | 学术网络优化 |
网易 | CentOS | http://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 //判断软件包是否可用