相信很多人遇到過這樣的問題:
-
你需要在公司的一臺服務器上安裝xxx軟件,例如vsftpd;
-
該服務器無法連接公網(wǎng);
-
這臺服務器很可能是一個最簡安裝的Linux(意味著該機器可能有很多常見的軟件依賴缺失),你也搞不清楚究竟是不是最簡安裝的,只能用
uname -a
?或者/etc/redhat-release
?看到發(fā)行版本;
于是,你應該怎么安裝想要的軟件?
下面以帶有濃重的感情色彩,總結三種方案。
TIPS:本文以CentOS 7為例,探討幾種安裝方式。其他發(fā)行版,可參見拓展閱讀給出的方案。
?
最土但最極客的方法
一些人可能會下載源碼,然后上傳到服務器上編譯安裝。編譯有問題會報錯,一般要么是缺包(比較多),要么是沖突(相對較少)。那就分析日志,缺包就找包,沖突就換包;找到包后再上傳到服務器上搞,周而復始,直到完成。
個人對這種做法非常不喜歡——
-
效率太差;
-
操作復雜繁瑣,中間可能會中斷若干次。環(huán)節(jié)越多,出現(xiàn)失誤的可能性越大;
-
對于服務器,沒有十足的把握誰敢這么操作……
-
對于不同版本的CentOS / RedHat,很多依賴的包名都變了……有的包還挺難找的……
我14年前后,在一臺無網(wǎng)絡的機器上編譯安裝過MySQL(公司的測試環(huán)境,可以隨便玩),花了小半天……感受是:這種方式只有脾氣好、并且富有極客精神、不怕苦不怕累,還無敵有信心不弄壞公司服務器,并且還得還閑的蛋疼的大神才能hold住,對于我等凡人,恐怕是不大適用的。
PS. 可能有人說高手不都應該編譯安裝嗎?我個人覺得這種頂多也就算個偽高手——真正的高手看重的是解決方法是否有效,才不care你是一行命令自動安裝,還是用18頁命令編譯安裝……
不那么土也不那么極客的方法
這種方案應該是一半以上童鞋都會選擇的——RPM包安裝方式。先找到相關的RPM包,然后用rpm -ivh rpm包名
?安裝。
RPM可在http://rpmfind.net/?上找到,我是說大部分。
一般來講,該方案問可以很好的解決問題,但極端場景下也會跪。原因依然是缺包……
RPM并不一定包含軟件所有的依賴,有時候可能一個軟件依賴了若干個RPM,你得通通找到,然后一起安裝……
個人最喜歡也最簡單的方法
借助yum-plugin-downloadonly
?。這是個人最喜歡的方法,簡單粗暴高效。
下面附帶完整的安裝步驟:
-
準備1臺和服務器最簡安裝了同版本Linux的機器,記為機器B,機器B需要能聯(lián)網(wǎng)?。
TIPS:可以是實體機、虛擬機或者Docker容器,看你的喜好。
個人建議用Docker準備,一分鐘就可以準備好了。Docker相關課程可在我的公眾號上搜索一下,有全套系列;也可前往我的博客:http://www.itmuch.com/categories/Docker/ 閱讀全套的Docker系列博客。
-
遠程上機器B。
-
在機器B上執(zhí)行如下命令:
1
2
3
4
# 安裝yum-plugin-downloadonly插件
yum install -y yum-plugin-downloadonly
# 把vsftpd換成你想要的包名
yum install --downloadonly <vsftpd>
-
下載的軟件在:
1
/var/cache/yum/x86_64/7/base/packages/
該目錄里會存放你想安裝的軟件所需要的所有RPM包。
-
將所有RPM包拷貝到服務器上安裝既可。如果安裝過程中提示xxx已安裝是否需要覆蓋,全部選否。
是不是非常簡單?應該也有很多童鞋知道這種方法的,本身也不是什么秘密。但就我的感知,很可能更多的人不知道,好幾個人問我了,所以分享一下。
其他方法
Yumdownloader
?,用法和yum-plugin-downloadonly
?大同小異。用本行高亮的部分作為關鍵詞自行搜索吧。
?
關注我,技術干貨、
? ??
?
?
?
本文摘自 :https://blog.51cto.com/u