在無外網環境或需加速套件安裝時,將系統安裝 ISO 掛載為本地 YUM 源是 Linux 虛擬機部署的核心技能。本文涵蓋 ISO 掛載、YUM 源配置、GPG 金鑰導入、快取管理、多版本隔離與自動化腳本完整流程。
# 建立掛載點
mkdir -p /mnt/iso
# 掛載 (需 root)
mount -o loop /path/to/Rocky-9.3-x86_64-dvd.iso /mnt/iso
# 驗證
ls /mnt/iso
# 應見 BaseOS、AppStream、repodata 等目錄
mount /dev/cdrom /mnt/iso
# 或
mount /dev/sr0 /mnt/iso
/path/to/Rocky-9.3-x86_64-dvd.iso /mnt/iso iso9660 loop,ro 0 0
# 掛載選項:loop(循環裝置)、ro(唯讀)
# 重啟後自動掛載,systemd 會在需要時自動處理 loop 裝置
mkdir -p /etc/yum.repos.d/backup
mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/backup/
/etc/yum.repos.d/local-iso.repo:
[BaseOS]
name=Local ISO BaseOS
baseurl=file:///mnt/iso/BaseOS
enabled=1
gpgcheck=1
gpgkey=file:///mnt/iso/RPM-GPG-KEY-rockyofficial
[AppStream]
name=Local ISO AppStream
baseurl=file:///mnt/iso/AppStream
enabled=1
gpgcheck=1
gpgkey=file:///mnt/iso/RPM-GPG-KEY-rockyofficial
# 若 ISO 包含 PowerTools/CRB/Extras 等倉庫,同理添加
關鍵參數說明:
baseurl=file:///mnt/iso/...:file:// 協議指向本地路徑,三個斜線表示絕對路徑。gpgcheck=1:驗證套件簽名,確保安全性。gpgkey=file:///mnt/iso/RPM-GPG-KEY-...:指定 ISO 內的 GPG 公鑰檔案。# 清理快取
yum clean all
# 重建快取 (下載元資料到本地)
yum makecache
# 列出可用套件
yum list available
# 安裝測試
yum install -y vim net-tools
# 檢查已安裝
rpm -qa | grep vim
# 目錄結構
/mnt/iso/
├── rocky-8.9/
│ ├── BaseOS/
│ └── AppStream/
├── rocky-9.3/
│ ├── BaseOS/
│ └── AppStream/
└── current -> rocky-9.3 # 符號連結指向當前使用版本
# YUM 源指向 current
baseurl=file:///mnt/iso/current/BaseOS
# 切換版本:只需更新符號連結
ln -sfn rocky-8.9 /mnt/iso/current
yum clean all && yum makecache
yum install -y nginx 或 httpd/mnt/iso/current 映射到 https://repo.local/rocky/9/BaseOSbaseurl=https://repo.local/rocky/9/BaseOScreaterepo_c 定期更新元資料 (若 ISO 內容變動)。| 問題 | 原因 | 解決 |
|---|---|---|
mount: /mnt/iso: WARNING: device write-protected, mounted read-only | ISO 映像本質唯讀 | 正常現象,加 ro 選項明確指定 |
Repodata is over 2 weeks old | ISO 製作時間較早 | 正常,ISO 為靜態快照,忽略或手動 createrepo 更新 |
| GPG 金鑰驗證失敗 | 金鑰檔案路徑錯誤/檔案損壞 | 確認 ls /mnt/iso/RPM-GPG-KEY-*,路徑正確則 rpm --import 手動導入 |
安裝套件報 Failed to download | YUM 仍嘗試連線網路源 | 確認已 mv 走所有 *.repo,enabled=0 或刪除 |
| 掛載點佔用導致卸載失敗 | YUM 進程/Shell 當前目錄在掛載點 | lsof /mnt/iso 找出進程,切換目錄後 umount |
setup_local_yum.sh#!/bin/bash
# 用法: ./setup_local_yum.sh /path/to/iso [mount_point]
ISO_PATH=${1:-/root/Rocky-9.3-x86_64-dvd.iso}
MNT=${2:-/mnt/iso}
mkdir -p "$MNT"
mount -o loop,ro "$ISO_PATH" "$MNT"
cat > /etc/yum.repos.d/local-iso.repo <
掌握 ISO 掛載與本地 YUM 源配置,讓 Linux 虛擬機在離線、弱網、版本管控等場景下實現可靠、高效的套件管理。