Linux应用程序架构与软件包管理
以下是对Linux应用程序组成及软件包管理(RPM/YUM/DNF)的清晰整理:
一、Linux应用程序组成
1. Linux命令 vs 应用程序
特性 | Linux命令 | 应用程序 |
---|
存放路径 | /bin , /sbin | /usr/bin , /usr/sbin , /usr/local/bin , /usr/local/sbin |
安装方式 | 随操作系统安装 | 需额外安装(等同于软件) |
执行格式 | 命令 + 选项 + 参数 (标准化) | 格式由开发者定义(无固定格式) |
界面 | 字符界面 | 可能包含图形界面 |
示例 | cd , echo , history (内部命令) | Firefox, MySQL(提供独立功能) |
注:
- 内部命令通过
help
查看列表(如 exit
, source
)。 - 部分应用程序提供命令行工具(称为“程序命令”)。
2. 应用程序的组成
组件类型 | 存放路径 | 说明 |
---|
可执行程序文件 | /usr/bin/ | 普通用户可执行 |
管理程序/服务器程序 | /usr/sbin/ | 仅管理员可执行 |
配置文件 | /etc/ 或 /etc/应用名/ | 多配置时创建同名子目录 |
日志文件 | /var/log/ | 记录运行日志 |
参考文档 | /usr/share/doc/ | 说明文档、示例等 |
Man手册 | /usr/share/man/ | 执行文件及配置的帮助文档 |
3. 软件包封装类型
类型 | 扩展名 | 适用系统 | 特点 |
---|
RPM包 | .rpm | RHEL, Fedora, SUSE等 | 依赖性强 |
DEB包 | .deb | Debian, Ubuntu等 | Debian系专用 |
源代码包 | .tar.gz/.bz2 | 所有Linux | 需编译安装 |
RPM包命名格式:
coreutils-8.30-4.el7.x86_64.rpm
- 软件名:
coreutils
- 版本号:
8.30-4
- 发行版:
.el7
(RHEL 7) - 架构:
x86_64
(64位)/ noarch
(通用)
二、RPM包管理
1. 查询已安装的软件包
命令 | 作用 | 示例 |
---|
rpm -qa | 列出所有已安装的RPM包 | rpm -qa | grep python3 |
rpm -qi <包名> | 查看软件包详细信息 | rpm -qi vsftpd |
rpm -ql <包名> | 列出软件包安装的所有文件 | rpm -ql httpd |
rpm -qf <文件路径> | 查看文件所属的软件包 | rpm -qf /etc/httpd/conf |
rpm -q <包名> | 检查指定包是否安装 | rpm -q vsftpd |
2. 查询未安装的RPM包
命令 | 作用 | 示例 |
---|
rpm -qpi <包路径> | 查看未安装包的详细信息 | rpm -qpi /mnt/Packages/vsftpd.rpm |
rpm -qpl <包路径> | 查看未安装包将释放的文件列表 | rpm -qpl /mnt/Packages/vsftpd.rpm |
3. 安装/卸载/升级
操作 | 命令 | 说明 |
---|
安装 | rpm -ivh <包路径> | -i 安装, -v 详情, -h 进度条 |
卸载 | rpm -e <包名> | 精确指定包名 |
升级 | rpm -Uvh <新包路径> | 已安装则升级,否则安装 |
强制操作 | rpm --force | 覆盖文件/版本 |
忽略依赖 | rpm --nodeps | (谨慎使用) |
示例:
rpm -ivh /mnt/Packages/vsftpd-3.0.3.rpm
rpm -e vsftpd
rpm -Uvh /mnt/Packages/vsftpd-4.0.rpm
三、YUM/DNF 仓库管理
1. 配置YUM仓库
- 创建仓库配置文件:
vim /etc/yum.repos.d/server.repo
- 配置文件内容示例:
[myrepo] # 仓库ID
name=My Repository # 仓库描述
baseurl=file:///mnt/ # 软件包路径(本地/USB/HTTP)
enabled=1 # 启用仓库
gpgcheck=0 # 不校验GPG签名
2. YUM 常用命令
操作 | 命令 | 说明 |
---|
安装软件包 | yum -y install <包名> | -y 自动确认 |
卸载软件包 | yum -y remove <包名> | |
安装软件包组 | yum -y groupinstall "组名" | 如 "Development Tools" |
卸载软件包组 | yum -y groupremove "组名" | |
列出所有包 | yum list | 已安装 + 可用 |
列出软件包组 | yum group list | |
更新指定包 | yum update <包名> | 不指定包名则更新所有 |
3. DNF 命令(兼容YUM)
dnf -y install <包名>
dnf -y remove <包名>
dnf -y update <包名>
说明:DNF 是 YUM 的下一代替代工具,语法基本一致。