在 CentOS 中自定义 extract 的可行路径
在 CentOS 里“extract”并非单一命令,常见有三类场景:使用 tar/unzip 解压归档、使用 yum/dnf 的 extract 插件从 RPM 包提取文件、在安装阶段从 ISO 提取内容。不同场景的“自定义”方式不同,可按下列方法配置与扩展。
场景一 使用 tar 或 unzip 的解压自定义
tar -xzf app.tar.gz --wildcards '*.conf' \
--transform 's,^[^/]\+/,,' -C /etc/myapp
tar -xf src.tar -T files.txt --exclude='temp/**' -v
以上选项适用于 tar;unzip 亦可通过 -d 指定目录,结合 shell 通配实现过滤。
场景二 使用 YUM/DNF 的 extract 插件自定义提取 RPM
# 1) 安装与启用
sudo yum install -y yum-plugins-core
sudo sed -i 's/^enabled=0/enabled=1/' /etc/yum/pluginconf.d/extract.conf
echo 'destdir=/opt/extracted/$basearch/$name-$version' | sudo tee -a /etc/yum/pluginconf.d/extract.conf
# 2) 执行提取
sudo yum extract bash
# 3) 校验
ls /opt/extracted/*/bash-*
tail -n 50 /var/log/yum.log
上述步骤涵盖插件安装、配置与验证要点。
场景三 从 ISO 提取内容的自定义
7z x -o/opt/iso-root CentOS-7-x86_64-DVD.iso
%post
echo "Running custom script..."
/path/to/your/script.sh
%end
场景四 进阶 编写可复用的提取脚本
#!/usr/bin/env bash
set -Eeuo pipefail
RPM=$1; DEST=${2:-./extracted}
mkdir -p "$DEST"
rpm2cpio "$RPM" | cpio -idmv -D "$DEST"
# 示例:将所有 .conf 设为 644,属主为 root:root
find "$DEST" -type f -name '*.conf' -exec chmod 644 {} + -exec chown root:root {} +
chmod +x extract-rpm.sh
./extract-rpm.sh example.rpm /opt/extracted/example
通过脚本可将“提取路径、过滤规则、权限修正”等固化为可复用流程。