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