解決 Amazon Linux 2 與 Amazon Linux 2023 上 DNF 套件安裝失敗:正確設定 /etc/dnf/vars/awsregion

Amazon Linux 2 將於 2026 年 6 月 30 日 終止支援(EOL)。建議使用者儘早遷移至 Amazon Linux 2023 (AL2023),以確保系統安全性與獲得持續支援。

在 Amazon Linux 2 與 Amazon Linux 2023 中,若遇到 DNF 無法正常安裝套件的問題,很可能是因為 /etc/dnf/vars/awsregion 設定不正確。以下提供修正方法與遷移建議。

問題描述

當你執行以下指令時:

cat /etc/dnf/vars/awsregion
default

這表示系統尚未正確設定 AWS 區域,可能導致 DNF 嘗試連接錯誤的套件庫位置,從而無法下載或安裝所需的套件。

解決方法

1. 確認 EC2 實例的 AWS 區域

如果你的 EC2 實例啟用了 IMDSv2(Instance Metadata Service v2),可以使用以下指令取得實例所在的區域:

TOKEN=$(curl -X PUT "http://169.254.169.254/latest/api/token" \
  -H "X-aws-ec2-metadata-token-ttl-seconds: 21600")
REGION=$(curl -H "X-aws-ec2-metadata-token: $TOKEN" -s \
  http://169.254.169.254/latest/meta-data/placement/region)

2. 設定正確的 AWS 區域

取得區域代碼後,將其寫入 /etc/dnf/vars/awsregion 檔案:

echo "$REGION" | sudo tee /etc/dnf/vars/awsregion

例如,如果區域代碼為 ap-northeast-1,則執行:

echo "ap-northeast-1" | sudo tee /etc/dnf/vars/awsregion

3. 驗證設定

再次檢查檔案內容:

cat /etc/dnf/vars/awsregion

結語

正確設定 /etc/dnf/vars/awsregion 是確保 DNF 能夠正常運作的關鍵步驟。建議在建立 EC2 實例後,立即確認並設定此檔案,以避免在安裝套件時遇到不必要的問題。

參考資料