1. Linux 应用程序管理基础
应用程序与系统命令区别:系统命令随系统安装用于维护,多在字符界面运行;应用程序需另行安装提供独立功能,支持命令行或图形化。
内建与外建程序:内建程序随系统启动自动运行;外建程序需手动安装使用。
1.1 命令文件位置(典型约定)
| 类型 | 说明 | 常见路径 |
|---|---|---|
| 系统命令(外部) | 体积小,随操作系统自带安装 | /bin,/sbin |
| 系统命令(内部 / 内建) | 集成在 Shell(Bash)内部 | 内建命令,无独立可执行文件 |
| 应用程序(普通用户可执行) | 独立软件的普通执行命令 | /usr/bin,/usr/local/bin |
| 应用程序(管理 / 服务) | 管理员专用管理工具、服务程序 | /usr/sbin,/usr/local/sbin |
区分小提示:
- bin:普通用户可执行
- sbin:管理员 root 专用
1.2 命令与应用程序特性
1.2.1 主要用途
- 系统命令:随操作系统预装,用于系统管理、维护。
- 应用程序:一般需要额外安装,提供独立业务功能(软件)。
1.2.2 适用环境
- 系统命令:大多在终端 / 字符界面使用。
- 应用程序:可以命令行运行,部分带图形界面。
1.2.3 运行格式
- 系统命令:标准格式
命令 选项 参数 - 应用程序:执行格式由开发者定义,不固定。
1.3 软件包安装后的典型目录结构
安装软件后,会新增多类文件:
| 文件类型 | 作用 | 典型存放路径 |
|---|---|---|
| 普通可执行文件 | 用户可直接运行的程序 | /usr/bin/ |
| 管理 / 服务可执行 | 仅管理员运行的工具、守护进程 | /usr/sbin/ |
| 配置文件 | 程序运行参数 | /etc/(支持子目录) |
| 日志文件 | 程序运行产生日志 | /var/log/ |
| 文档 / 示例 | 说明文档、示例文件 | /usr/share/doc/ |
| man 手册 | 命令帮助手册 | /usr/share/man/ |
示例:查看 postfix 软件安装后所有文件清单
rpm -ql postfix
1.4 安装包格式常识
需明确不同系统的安装包格式与安装工具。
- RPM 包:适用于 Red Hat、CentOS、Fedora 等,使用 rpm 或 yum 工具安装。
- DEB 包:适用于 Ubuntu 等 Debian 系系统,使用 apt 或 dpkg 工具安装。
- TAR.GZ / TAR.BZ2:源码编译包,需 gcc 和 make 等编译环境支持。
- 自带安装程序:如 install.sh 等脚本,解包后直接运行即可。
2. rpm 与 yum 包管理工具对比
rpm 工具局限性:rpm 安装软件时不处理依赖包,若软件存在依赖关系则安装会失败。
yum 工具优势:yum 是解决依赖包的管理工具,能自动处理安装软件的依赖关系,企业日常推荐使用。
3. RPM 包管理工具实操
3.1 查询已安装包
日常高频使用 rpm -q 查是否安装,rpm -ql 查文件列表,rpm -qc 查配置文件,rpm -qa 列出所有已安装包。
3.2 命名规则解析
标准格式为“软件名-版本号-发布次数-硬件平台.扩展名”,其中 x86_64 代表 64 位硬件架构。
3.3 安装升级卸载
使用 rpm -ivh 安装,rpm -uvh 升级,rpm -evh 卸载;生产环境不推荐忽略依赖检查。
3.4 挂载光盘镜像实操
演示将 ISO 镜像设备挂载至 /mnt 目录后,通过管道符过滤并精准定位特定软件包进行安装与验证。下面给出一个从挂载 ISO 镜像、配置本地 yum 源到安装指定软件包的完整实战案例。
步骤一:挂载 ISO 镜像
首先创建挂载点,并将 ISO 镜像设备挂载到 /mnt 目录。
# 创建挂载点目录
mkdir -p /mnt
挂载 ISO 镜像设备(设备名以实际为准,常见为 /dev/cdrom 或 /dev/sr0)
mount -o loop /dev/cdrom /mnt
验证挂载是否成功
df -h /mnt
预期输出:df 命令会显示 /mnt 挂载点的文件系统、容量和使用率等信息,例如:
Filesystem Size Used Avail Use% Mounted on
/dev/sr0 4.3G 4.3G 0 100% /mnt
常见错误提示:
mount: /dev/cdrom is not a block device:设备名不正确,可改用lsblk查看实际设备名。mount: /mnt: mount point does not exist:挂载点目录未创建,先执行mkdir -p /mnt。mount: no medium found on /dev/sr0:光驱中没有光盘或 ISO 未正确连接,请检查虚拟机光驱设置。
步骤二:配置本地 yum 源
将原有仓库文件备份,并创建指向挂载目录的本地仓库配置文件。
# 备份原有仓库文件
mkdir -p /etc/yum.repos.d/backup
mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/backup/
创建本地仓库配置文件
cat > /etc/yum.repos.d/local.repo <<EOF
[local]
name=Local Yum Repository
baseurl=file:///mnt
enabled=1
gpgcheck=0
EOF
清理缓存并重新生成元数据
yum clean all
yum makecache
预期输出:执行 yum makecache 后,会显示正在加载本地仓库元数据,并提示元数据缓存已建立,例如:
Loaded plugins: fastestmirror
local | 3.6 kB 00:00:00
(1/2): local/group_gz | 153 kB 00:00:00
(2/2): local/primary_db | 3.1 MB 00:00:00
Metadata Cache Created
常见错误提示:
Could not open/read repomd.xml:baseurl 指向的目录下没有 repodata 目录,请确认挂载点内容是否正确。Cannot retrieve repository metadata:挂载未成功或路径格式错误,检查ls /mnt是否能看到 repodata 目录。GPG key retrieval failed:gpgcheck 设为 1 但缺少公钥,本地源建议设为 0 跳过签名验证。
步骤三:安装指定软件包
通过 yum 搜索并安装指定软件包,这里以安装 httpd(Apache Web 服务器)为例。
# 搜索软件包确认可用
yum list | grep httpd
安装指定软件包
yum install -y httpd
验证安装结果
rpm -q httpd
预期输出:安装完成后,rpm -q httpd 会输出已安装的软件包完整名称和版本号,例如:
httpd-2.4.6-97.el7.centos.x86_64
常见错误提示:
No package httpd available:本地源中不包含该软件包,可先执行yum list | grep httpd确认包名是否正确。Error: Nothing to do:软件包已安装或名称拼写错误,用yum list installed | grep httpd检查。Could not find a match:仓库元数据未更新,执行yum clean all && yum makecache后重试。
至此,已完成从挂载 ISO 镜像、配置本地 yum 源到安装指定软件包的完整流程,后续即可通过 yum 命令方便地安装、升级和卸载其他软件包。
4. yum 本地源配置流程
配置本地源需遵循标准操作流程以确保系统正确识别仓库。
- 挂载光盘:将光盘设备挂载至指定目录(如 /mnt)。
- 切换目录:cd 进入 /etc/yum.repos.d 目录。
- 迁移旧源:将原 repos.d 下的所有配置文件备份或迁移至新建的 backup 目录下。
- 创建并编辑仓库文件:在 /etc/yum.repos.d 下创建以 .repo 结尾的文件并写入配置参数。
- 缓存清理与刷新:执行清除旧缓存和重新加载新源的操作。
4.1 仓库文件核心参数
- baseurl:指定本地源的访问路径,格式为 file:///挂载目录。
- enabled:控制仓库启用状态,1 代表开启,0 代表关闭。
- gpgcheck:控制签名验证状态,1 代表验证,0 代表不验证(生产环境通常设为 0 以节省时间)。
4.2 常见错误排查
配置本地源时,常因路径、签名或缓存问题导致 yum 无法正常使用,下面列出三种高频问题的现象、原因与解决方法。
4.2.1 baseurl 路径错误
现象:执行 yum 命令时报错,提示找不到仓库元数据,例如 Cannot retrieve repository metadata 或 Could not open/read repomd.xml。
原因:仓库文件中的 baseurl 指向的目录不存在、未正确挂载,或路径格式不符合 file:///挂载目录 的约定。
解决方法:先确认光盘已挂载,再核对 baseurl 是否与挂载点一致,最后用 ls 验证目录下是否存在 repodata 目录。
# 确认挂载点内容
ls /mnt
查看仓库文件中的 baseurl 配置
cat /etc/yum.repos.d/local.repo
修正后清理缓存并重新加载
yum clean all
yum makecache
4.2.2 gpgcheck 验证失败
现象:安装软件包时提示 GPG key retrieval failed 或 Public key for xxx is not installed,安装过程被中断。
原因:仓库文件开启了 gpgcheck=1,但系统缺少对应的 GPG 公钥,或本地源未提供可用的签名密钥。
解决方法:对于本地光盘源,可临时将 gpgcheck 设为 0 跳过签名验证;若必须保留验证,则需导入对应公钥。
# 临时关闭签名验证(本地源常用做法)
sed -i 's/gpgcheck=1/gpgcheck=0/' /etc/yum.repos.d/local.repo
或导入光盘自带的公钥
rpm --import /mnt/RPM-GPG-KEY-*
重新清理并刷新缓存
yum clean all
yum makecache
4.2.3 缓存未清理导致仓库信息不更新
现象:修改仓库文件或更换挂载内容后,yum 仍使用旧的仓库信息,出现 Could not find a match 或安装到旧版本软件包。
原因:yum 缓存了旧的元数据,未执行清理操作,导致新配置未生效。
解决方法:修改仓库文件后,务必先清理缓存再重新生成元数据缓存。
# 清理所有缓存
yum clean all
重新生成仓库元数据缓存
yum makecache
验证仓库是否已识别
yum repolist
4.3 配置网络 yum 源
当系统可以访问外网时,使用网络 yum 源可以获得更丰富的软件包和更及时的更新。下面以阿里云镜像源为例,演示如何替换系统默认的 CentOS-Base.repo 仓库文件。
4.3.1 替换 CentOS-Base.repo
首先备份原有的仓库文件,然后下载阿里云镜像源提供的 CentOS-Base.repo 并替换到 /etc/yum.repos.d/ 目录下。
# 备份原有仓库文件
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
下载阿里云镜像源仓库文件(以 CentOS 7 为例)
curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
查看替换后的仓库文件内容
cat /etc/yum.repos.d/CentOS-Base.repo
替换后的仓库文件核心配置示例如下:
[base]
name=CentOS-$releasever - Base - mirrors.aliyun.com
baseurl=http://mirrors.aliyun.com/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7
[updates]
name=CentOS-$releasever - Updates - mirrors.aliyun.com
baseurl=http://mirrors.aliyun.com/centos/$releasever/updates/$basearch/
gpgcheck=1
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7
[extras]
name=CentOS-$releasever - Extras - mirrors.aliyun.com
baseurl=http://mirrors.aliyun.com/centos/$releasever/extras/$basearch/
gpgcheck=1
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7
4.3.2 刷新缓存
替换仓库文件后,需要清理旧缓存并重新生成元数据缓存,使新配置立即生效。
# 清理所有缓存
yum clean all
重新生成仓库元数据缓存
yum makecache
验证仓库是否已识别
yum repolist
预期输出:执行 yum makecache 后,会显示正在从阿里云镜像源下载仓库元数据,并提示元数据缓存已建立,例如:
Loaded plugins: fastestmirror
base | 3.6 kB 00:00:00
updates | 3.4 kB 00:00:00
extras | 2.9 kB 00:00:00
Metadata Cache Created
4.3.3 本地源与网络源对比
本地源与网络源各有适用场景,实际部署时应根据网络环境灵活选择:
| 对比项 | 本地源 | 网络源 |
|---|---|---|
| 适用环境 | 内网离线环境、无外网访问权限 | 有外网访问权限的服务器或开发机 |
| 软件包来源 | 光盘镜像或本地仓库目录 | 阿里云、清华等公共镜像站 |
| 软件包丰富度 | 受限于镜像内容,版本相对固定 | 软件包丰富,更新及时 |
| 安装速度 | 本地读取,速度快且稳定 | 依赖网络带宽,可能受网络波动影响 |
| 典型场景 | 生产内网、隔离机房、离线安装 | 开发测试、日常运维、需要最新软件包 |
选择建议:内网离线环境优先使用本地源,保证安装稳定可靠;有外网访问权限的环境推荐使用网络源,以获得更丰富的软件包和及时的安全更新。
5. yum 常用命令与操作
yum 是基于 rpm 的包管理工具,核心价值在于自动解析并安装依赖。下面按操作类型介绍最常用的 yum 命令,每个小节给出命令格式、典型用法与注意事项。
5.1 install 安装
用于安装指定包,配合 -y 参数可自动确认所有依赖包的安装请求。
# 安装指定软件包(-y 自动确认所有依赖)
yum install -y 软件包名
# 同时安装多个软件包
yum install -y 包1 包2 包3
注意事项:安装前建议先执行 yum list | grep 包名 确认仓库中存在该包;若提示 No package xxx available,说明仓库中无此包或仓库元数据未更新。
5.2 remove 卸载
卸载指定包的同时会自动清理并删除其关联的所有已安装依赖包。
# 卸载指定软件包
yum remove -y 软件包名
注意事项:卸载前应确认没有其他服务依赖该软件包,避免误删系统关键依赖;若提示 Error: Trying to remove "yum", which is protected,说明误操作了系统保护包,应立即终止。
5.3 update 升级
升级指定包或不指定包时自动升级,因耗时过长在生产环境中较少使用。
# 升级指定软件包
yum update -y 软件包名
# 升级所有可升级的软件包(生产环境慎用)
yum update -y
# 仅检查可升级的软件包,不实际升级
yum check-update
注意事项:升级前建议先执行 yum check-update 包名 查看是否有新版本;生产环境升级前应做好备份,避免依赖冲突导致服务异常。
5.4 list 查询
查看软件包列表信息,支持通过 grep 进行关键词过滤。
# 查看所有可安装的软件包列表
yum list
# 查看当前系统中已安装的软件包列表
yum list installed
# 查看仓库中可更新的软件包
yum list updates
# 按关键词过滤
yum list | grep 关键词
注意事项:yum list 输出内容较多,实际使用中常配合 grep 过滤;若列表为空,先执行 yum clean all && yum makecache 刷新仓库元数据。
5.5 info 查看详情
显示指定软件包的详细信息,如版本号、架构、大小、仓库来源等。
# 查看软件包详细信息
yum info 软件包名
# 查看已安装软件包的详细信息
yum info installed 软件包名
注意事项:yum info 输出的 Repo 字段可帮助确认软件包来自本地源还是网络源,便于排查仓库配置问题。
5.6 search 搜索
根据关键词搜索提供该功能的软件包。
# 按关键词搜索软件包
yum search 关键词
# 搜索并显示更详细的信息
yum search -v 关键词
注意事项:搜索关键词支持模糊匹配,例如 yum search web server 会返回与 Web 服务器相关的多个软件包;若搜索无结果,可尝试更换关键词或先刷新仓库缓存。
5.7 其他常用命令
除上述核心命令外,以下命令在运维中也经常使用:
# 查看仓库列表及启用状态
yum repolist
# 清理所有缓存
yum clean all
# 重新生成仓库元数据缓存
yum makecache
# 查看软件包依赖关系
yum deplist 软件包名
# 查看软件包所属仓库
yum list 软件包名
注意事项:修改仓库文件或更换挂载内容后,务必先执行 yum clean all 再执行 yum makecache,否则新配置可能不生效。
6. 综合实战:yum 管理 nginx 软件包
下面通过一个完整案例,演示如何使用 yum 对 nginx 软件包进行安装、查询、升级和卸载,覆盖每一步的命令、预期输出与常见错误提示。
步骤一:查询软件包
安装前先确认仓库中是否存在 nginx 软件包,并查看其详细信息。
# 搜索软件包
yum search nginx
查看软件包详细信息
yum info nginx
确认当前是否已安装
yum list installed | grep nginx
预期输出:yum search nginx 会列出与 nginx 相关的软件包名称和简介;yum info nginx 会显示名称、版本、架构、仓库来源等信息,例如:
Name : nginx
Arch : x86_64
Version : 1.20.1
Release : 10.el7
Size : 570 k
Repo : local
常见错误提示:
No matching Packages to list:仓库中不存在 nginx 包,先执行yum list | grep nginx确认包名是否正确。Error: No matching Packages to list:软件包名称拼写错误,或仓库元数据未更新,执行yum clean all && yum makecache后重试。
步骤二:安装软件包
使用 yum 安装 nginx,-y 参数可自动确认所有依赖包的安装请求。
# 安装 nginx
yum install -y nginx
验证安装结果
rpm -q nginx
预期输出:安装过程中会显示依赖解析和下载进度,安装完成后 rpm -q nginx 输出已安装的完整包名和版本号,例如:
nginx-1.20.1-10.el7.x86_64
常见错误提示:
No package nginx available:仓库中不包含 nginx,先执行yum list | grep nginx确认包名。Error: Nothing to do:软件包已安装或名称拼写错误,用yum list installed | grep nginx检查。Requires: xxx is needed:缺少依赖包,yum 会自动尝试解决,若仍失败可执行yum clean all && yum makecache后重试。
步骤三:查询已安装软件包
安装完成后,可通过多种方式查询 nginx 的安装状态、文件列表和配置信息。
# 查询是否已安装
rpm -q nginx
查看安装的文件列表
rpm -ql nginx
查看配置文件列表
rpm -qc nginx
查看软件包详细信息
yum info nginx
预期输出:rpm -ql nginx 会列出 nginx 安装后生成的所有文件路径,例如:
/etc/nginx/nginx.conf
/usr/sbin/nginx
/usr/share/doc/nginx-1.20.1/README
/var/log/nginx/
常见错误提示:
package nginx is not installed:软件包未安装,先执行yum install -y nginx。No such file or directory:查询的文件路径不存在,用rpm -ql nginx查看实际安装路径。
步骤四:升级软件包
当仓库中存在更高版本时,可使用 yum 升级 nginx 到最新版本。
# 检查是否有可用升级
yum check-update nginx
升级 nginx 到最新版本
yum update -y nginx
验证升级后的版本
rpm -q nginx
预期输出:yum check-update nginx 若有新版本会列出待升级的包名和版本;升级完成后 rpm -q nginx 输出新版本号,例如:
nginx-1.20.2-11.el7.x86_64
常见错误提示:
No packages marked for update:当前已是最新版本,无需升级。Error: Nothing to do:仓库中没有更高版本,或软件包未安装。Transaction check error:升级过程中依赖冲突,先执行yum clean all && yum makecache后重试。
步骤五:卸载软件包
不再需要 nginx 时,可使用 yum 卸载,并自动清理关联的依赖包。
# 卸载 nginx
yum remove -y nginx
验证卸载结果
rpm -q nginx
预期输出:卸载过程中会显示被删除的软件包列表;卸载完成后 rpm -q nginx 提示软件包未安装,例如:
package nginx is not installed
常见错误提示:
No Match for argument: nginx:软件包未安装,无需卸载。Error: Trying to remove "yum", which is protected:误删系统关键包,卸载前先确认包名,避免移除系统依赖。
至此,已完成使用 yum 对 nginx 软件包进行查询、安装、升级和卸载的完整流程。实际运维中,建议先查询再安装,升级前做好备份,卸载时确认无其他服务依赖该软件包。
7. rpm 与 yum 常用命令速查表
下表汇总了 rpm 与 yum 在日常运维中最常用的命令对照,便于快速查阅。rpm 适合对已安装包做精细查询,yum 适合安装、升级、卸载等需要处理依赖的操作。
| 操作类型 | rpm 命令 | yum 命令 | 说明 |
|---|---|---|---|
| 查询已安装包 | rpm -q 包名 | yum list installed 包名 | 确认指定软件包是否已安装,并显示完整包名与版本号。 |
| 列出所有已安装包 | rpm -qa | yum list installed | 列出系统中所有已安装的软件包,可配合 grep 过滤关键词。 |
| 安装软件包 | rpm -ivh 包名.rpm | yum install -y 包名 | rpm 不处理依赖,需手动解决;yum 自动解析并安装依赖。 |
| 升级软件包 | rpm -Uvh 包名.rpm | yum update -y 包名 | rpm 升级不处理依赖;yum 升级时自动处理依赖关系。 |
| 卸载软件包 | rpm -e 包名 | yum remove -y 包名 | rpm 卸载不处理依赖;yum 卸载时自动清理关联依赖包。 |
| 查看文件列表 | rpm -ql 包名 | yum install 后可用 rpm -ql 查询 | 列出软件包安装后生成的所有文件路径,yum 本身无对应命令。 |
| 查看配置文件列表 | rpm -qc 包名 | yum install 后可用 rpm -qc 查询 | 列出软件包安装后生成的配置文件路径,便于定位配置项。 |
| 查看软件包详情 | rpm -qi 包名 | yum info 包名 | 显示软件包的版本、架构、大小、仓库来源等详细信息。 |
| 搜索软件包 | rpm -qa | grep 关键词 | yum search 关键词 | 按关键词搜索提供该功能的软件包,yum 支持模糊匹配。 |
| 查看软件包依赖 | rpm -qR 包名 | yum deplist 包名 | 查看软件包的依赖关系,yum 输出更直观易读。 |
| 校验软件包文件 | rpm -V 包名 | 无对应命令 | 校验已安装软件包的文件是否被篡改或损坏。 |
| 查看仓库列表 | 无对应命令 | yum repolist | 查看当前启用的仓库列表及状态,rpm 无仓库概念。 |
| 清理缓存 | 无对应命令 | yum clean all | 清理 yum 缓存的旧元数据,修改仓库文件后必须执行。 |
| 重建元数据缓存 | 无对应命令 | yum makecache | 重新生成仓库元数据缓存,使新仓库配置立即生效。 |
使用建议:日常安装、升级、卸载优先使用 yum,由其自动处理依赖;对已安装包做精细查询(如文件列表、配置文件、校验)时使用 rpm 更直接高效。
8. 总结与参考资料
本文围绕 Linux 下 rpm 与 yum 两大包管理工具,系统梳理了命令文件位置、软件包安装后的目录结构、rpm 实操、本地源与网络源配置、常用命令以及综合实战案例。下面从适用场景、配置要点和常用命令三个维度做简要总结,并给出供深入学习的参考资料。
8.1 总结
- 优先使用 yum 处理依赖:rpm 安装软件时不处理依赖包,遇到依赖关系会安装失败;yum 能自动解析并安装依赖,日常安装、升级、卸载应优先使用 yum。
- 本地源配置关键步骤:先挂载光盘镜像到 /mnt,再备份并迁移旧仓库文件,创建指向挂载目录的 local.repo(baseurl 使用 file:///mnt),最后执行 yum clean all 和 yum makecache 刷新缓存。
- 常见错误排查思路:baseurl 路径错误、gpgcheck 验证失败、缓存未清理导致仓库信息不更新是三大高频问题,分别通过核对挂载路径、关闭或导入签名、清理并重建缓存解决。
- 本地源与网络源按需选择:内网离线环境优先使用本地源,保证安装稳定可靠;有外网访问权限的环境推荐使用网络源,以获得更丰富的软件包和及时的安全更新。
- 常用命令速查:安装用 yum install -y 包名,卸载用 yum remove -y 包名,升级用 yum update -y 包名,查询用 yum list / yum info / yum search,精细查询已安装包用 rpm -q / rpm -ql / rpm -qc。
8.2 参考资料
如需进一步深入学习,推荐查阅以下官方文档与权威资源:
- Red Hat Enterprise Linux 官方文档:涵盖 rpm、yum 及软件包管理的权威说明。
- CentOS Wiki:提供 CentOS 系统配置、仓库管理与运维实践资料。
- Linux man 手册(man7.org):可在线查阅 rpm、yum 等命令的完整手册页。
- 阿里云镜像站:提供 CentOS 等系统的镜像源配置说明与仓库文件下载。

2213

被折叠的 条评论
为什么被折叠?



