這是一個我很喜歡的實作題
首先, 在A台電腦把所有安裝的套件名稱存檔
rpm -qa -queryformat "%{NAME}" > a-installed.txt
把a-installed.txt複製到B台電腦後
比較優雅的作法是, 把B台也有的套件從名單濾掉
for package in `cat a-installed.txt`
do
rpm -q $package &> /dev/null || echo $package >> b-not-installed.txt
done
先不管指令的回傳值, 上面那個script的意思是
對a-installed.txt的每個套件名稱
測試B本機有沒有, 以rpm -q來測試, 沒有就當false(先不管回傳值)
兩個指令中間是以||區隔
&&檢查到有false就停
||是檢查到有true就停
對那些不存在B本機的套件, 回傳false, 因此就會執行第二道指令
把它們的名稱echo到b-not-installed.txt裡面
那如果B本機本來有存在數個a-installed.txt裡面的套件呢?
在一開始的rpm -q會回傳true, 然後就沒事了~
這樣產生的b-not-installed.txt就是A有B沒有的
接著, yum似乎不能接受stdin來的input
所以可以利用xargs
cat b-not-installed.txt | xargs sudo yum -y install
或
sudo yum -y install `cat b-not-installed.txt`
似乎後者較好^^
當然啦, 這是比較優雅的作法, 因為少了上面那個bash script
也是無所謂阿, 已經裝過的會自動略過嘛!
No comments:
Post a Comment