针对 CentOS/RHEL 7 环境,以下是关于 mount/umount(光
盘挂载)与 rpm 软件包管理的详细上机练习作业设计。这套练习旨在帮助学员掌握本地 YUM
源配置的基础(通过挂载光盘)以及底层 RPM 包的管理技能。
实验目标:
场景描述:你需要访问 CentOS
安装光盘中的软件包,但系统未自动挂载。
操作步骤:
/mnt 目录下创建一个名为 cdrom
的目录作为挂载点。
bashmkdir -p /mnt
/dev/cdrom(或 /dev/sr0)
挂载到该目录。
bashmount /dev/cdrom /mnt
# 或者指定文件系统类型(可选,系统通常能自动识别 iso9660)
mount -t iso9660 /dev/cdrom /mnt
df -hT 查看挂载状态和文件系统类型。ls /mnt 查看光盘内容(应能看到 Packages, isolinux 等目录)。mount | grep cdrom 过滤查看特定挂载信息。场景描述:测试光盘的读写权限。
操作步骤:
bashtouch /mnt/test.txt
mount -o ro /dev/cdrom /mnt场景描述:使用完毕,需要更换光盘或释放设备。
操作步骤:
/mnt
目录下(否则卸载会失败,提示 target is busy)。
bashcd ~
bashumount /mnt
# 或者
umount /dev/cdrom
df -hT 或 ls /mnt,
确认目录已为空或设备已解除关联。场景描述:卸载时提示 target
is busy。
操作步骤:
cd /mnt。umount /mnt,记录报错信息。fuser -vm /mnt 或 lsof +D /mnt
查找占用进程。实验目标:
-q, -a, -l, -c,
-d, -i, -v, -h
的组合使用。前置准备:
确保练习 1 中的光盘已挂载在 /mnt。进入 Packages 目录:
bashcd /mnt/Packages
注:以下练习假设当前目录已在 Packages
下,若不在,请使用绝对路径如 /mnt/Packages/tree-1.6.0-10.el7.x86_64.rpm。
任务 5.1:查询已安装的软件
bash:
bashrpm -q bash
bashrpm -qa | less
bash 软件的详细信息(版本、发行号、架构、描述等):
bashrpm -qi bash
任务 5.2:查询软件包的文件列表
bash 软件包安装的所有文件路径:
bashrpm -ql bash
bash 的配置文件(通常以 .conf 结尾或在 /etc 下):
bashrpm -qc bash
bash 的帮助文档/手册页:
bashrpm -qd bash
任务 5.3:反向查询(由文件查包)
/bin/ls 命令属于哪个软件包:
bashrpm -qf /bin/ls
任
务 6.1:安装一个简单软件(
以 tree 为例
以psmisc安装包
以 systemd 安装包
以bash安装包
以bash-completion安装包
以net-tools 安装包
以yum-utils 安装包
在安装前 使用 rpm -ql, -qc
-qd 分别查看,结合 wc -l , less >重定向 练习 截图)
tree 的 rpm 包文件名(可使用 ls tree*
查看具体版本号,例如 tree-1.6.0-10.el7.x86_64.rpm)。bashrpm -ivh tree-1.6.0-10.el7.x86_64.rpm
bashrpm -q tree
which tree
任务 6.2:处理依赖关系(演示 RPM 的局限性)
ftp 或 vsftpd,具体视光盘内容而
定)。
bashrpm -ivh vsftpd-*.rpm
Failed dependencies,说明
RPM 无法自动解决依赖。任务 7.1:验证软件包完整性
tree 的一个二进制文件(需谨慎,建议在测试环境或复制文件后测试):
bash# 仅用于演示,不要随意修改系统关键文件
cp /usr/bin/tree /tmp/tree_backup
echo "test" >> /usr/bin/tree
tree 包的完整性:
bashrpm -V tree
S.5....T. 等字符,表示文件大小、MD5 校验值、时间戳等发生了变化。bashcp /tmp/tree_backup /usr/bin/tree
任务 7.2:卸载软件
tree:
bashrpm -e tree
bashrpm -q tree
# 应输出 package tree is not installed
脚本自动化:编写一个简单的
Shell 脚本 mount_and_check.sh,实现以下功能:
/mnt 是否存在,不存在则创建。/dev/cdrom 是否已挂载,若未挂载则执行挂载。/mnt/Packages 下以 zlib
开头的 rpm 包名称。信息查询:
rpm -qa --queryformat
'%{SIZE} %{NAME}\n' 和 sort 命令)。kernel 相关的已安装包,并列出它们的配置文件。| 选项 | 全称 | 作用 | 常用组合示例 |
|---|---|---|---|
| -q | query | 查询模式 | rpm -q pkg_name |
| -a | all | 所有包 | rpm -qa (查所有已安装包) |
| -i | info/install | 详细信息 / 安装 | rpm -qi pkg (查详情), rpm -ivh
pkg.rpm (安装) |
| -l | list | 文件列表 | rpm -ql pkg (查包安装了哪些文件) |
| -c | configfiles | 配置文件 | rpm -qc pkg (查包的配置文件) |
| -d | docfiles | 文档文件 | rpm -qd pkg (查包的帮助文档) |
| -f | file | 反查文件所属包 | rpm -qf /path/to/file |
| -v | verbose | 显示详细信息 | 常与 -i, -h 连用 |
| -h | hash | 显示进度条 | 常与 -i, -v 连用 (-ivh) |
| -e | erase | 卸载/删除 | rpm -e pkg_name |
| -V | verify | 验证完整性 | rpm -V pkg_name |
注意:
-i 在查询模式(-q)下表示 info
(详细信息)。-i 在安装模式(非 -q)下表示 install
(安装)。rpm -qi (查询信息) 和 rpm -ivh (安装)。