本文原創首發於公衆號:編程三分鐘python
yum命令每天都在用,都快用爛了,可是不少人不知道爲何只要聯網,yum命令就能像老奶奶手中的魔法棒同樣,爲所欲爲的下載到想到的包。c++
好比你想裝個c++環境,直接 yum install gcc-c++
。算法
強迫症都喜歡作完一件事之後再確認一下,能夠用rpm -qa | grep 包名
的方式來查看。docker
若是裝的不是想要的版本,yum list *gcc-c++*
搜一下,一堆可安裝的包名就列出來,想裝哪一個版本裝哪一個版本。shell
固然了,能裝就能卸,一個yum remove gcc-c++
搞定編程
啥?你還想裝個docker,想裝個go,想裝不一樣版本的python,咋就想的那麼美呢?緩存
沒問題!即便你想裝那麼些個東西,yum都能辦到,她就像一個包容的老母親時時寵愛着調皮搗蛋的傻兒子,ok,只要媽有,媽沒有的也想辦法從別的地方找來。也就是隻要源裏有,源裏沒有的再多配一個源就能夠了。安全
哎?這裏說到一個源的概念,源簡單來講就是一個專門儲存包的倉庫,分門別類的放好,yum命令就是倉庫管家,根據配置好的規則,去源堆裏找到想要的包順便找到此包對其餘包的依賴關係,根據依賴關係自動安裝全部的包。包的依賴關係和下圖同樣。服務器
/etc/yum.repos.d/
目錄就是專門存儲各類源的目錄,源文件以.repo
後綴結尾,習慣性的把同一個業務的源放到一個文件裏,好比平臺A、平臺B能夠分爲兩個文件,固然了你的地盤你作主,想怎麼分均可以。下面這張圖就是我服務器上配置的源。測試
每一個repo
文件中,能夠配置多個倉庫(源),每一個倉庫存了不一樣的包,像咱們剛剛安裝的gcc-c++
在os
倉庫裏,倉庫名是惟一的。
上圖節選自騰訊雲服務器CentOS-Base.repo
,上圖中的中括號是源的名字,便於yum取得並識別,下面是配置項,來簡單下解釋各個配置項的含義。
enabled=1
表示啓用了這個源,0是未啓用。
gpg(GNU Private Guard)
是一種校驗算法,用來肯定rpm包的來源是有效和安全的,gpgkey
就是gpg
密鑰所在位置。
baseurl
就是源路徑。
name
倉庫的名稱,只是爲了方便閱讀,通常沒什麼用。
經過剛剛的安裝和卸載,咱們明顯看到gcc-c++
是在os庫裏,又由於庫名是惟一的,因此確定就是CentOS-Base.repo
裏的os庫,咱們如今把他設置爲禁用看看還能不能裝。
有的人說了「我有臺Centos
的機器根本就不能聯網,有yum
命令有啥用,還不是要一個一個去網上下?徹底是要人工解決依賴問題啊。」
我只能說這位同窗,你坐下!小熊曾經說過,只要思想不滑坡,方法總比困難多。只要找一臺能相同os的服務器用下面的命令,就能把rpm
包和他的依賴來所有下載到本地,再拷貝過去安裝好了。
yum install --downloadonly --downloaddir=/tmp/pzqu gcc-c++
--downloaddir
指定下載目錄
若是--downloadonly
用不了,多是漏了插件yum install yum-plugin-downloadonly
安裝上就行了。
若是你想緩存下來所有的倉庫,我只能說別開玩笑了,咱們哪有那麼大的硬盤,我的也不必這麼作。
但要徹底是本身項目的包,能夠自建一套源,開發測試部署的時候都自動打包到源裏,隨便到哪一個離線環境把源帶走,想在哪部署就能在哪部署,從這裏我彷彿看到了持續集成的影子。
預知後事如何,請聽下回分解。