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 實例後,立即確認並設定此檔案,以避免在安裝套件時遇到不必要的問題。
參考資料
- https://repost.aws/questions/QU2c7eUP0HTqexa9YUp1TJIQ/unable-to-install-services-on-my-instance-take-two
- 感謝 Xiang-Ze Ke 熱心提醒 Amazon Linux 2 EOL
《AWS CDK 完全學習手冊:打造雲端基礎架構程式碼 IaC》
第 12 屆 iT 邦幫忙鐵人賽 DevOps 組冠的《用 CDK 定 義 AWS 架構》
第 11 屆 iT 邦幫忙鐵人賽《LINE bot 好好玩 30 天玩轉 LINE API》
一個熱愛分享的雲端工程師!