Site icon Mr. 沙先生

CentOS 打包 RPM 套件名稱排除版本資訊

今天在移一台 CentOS 的設備到另一個 VM 環境,因為種種環境因素必須重新在另一個 OS 再起爐灶重新安裝所有東西 … 意味著必須重新摸索原本到底裝了哪些東西,要在新的主機上可以裝起來還要能動。

還好以前在做專案的時候就練就了一身重新安裝的功夫 QQ,三不五時就要到陌生環境解問題,甚至要帶回來模擬,而這篇不是要講這些功夫,主要是以前常用到的一個技巧忘了寫下來,順手記錄一下

這次的情境是需要「原封不動」還原,遇到其中的一個問題就是 rpm 套件有哪些?常見的作法有 rpm -qa 直接列出套件清單,但在這個情境我不需要版本訊息,所以要加上 --qf 做過濾:

rpm -qa --qf "%{NAME}\n"

列出來的清單會變這樣:

wget
curl
httpd
php
php-cli

為什麼要這樣做?主要是想要一鍵 yum 安裝,版本直接跟著 OS 走,可以在原本的主機上執行排程備份:

# crontab
@monthly /bin/rpm -qa --qf "%{NAME} " > /backup/rpmList.txt

當遇到需要重新安裝的時候,只要在另一台主機把 rpmList.txt 拿出來執行:

cat rpmList.txt | xargs yum install -y

自從 infrastructure as code 之後已經很少遇到這種情況了,但是偶爾需要時這個技巧還是很好用。

Exit mobile version