在前面的內(nèi)容中多次提到的yum,這個(gè)yum是Redhat所特有的安裝RPM程序包的工具漆枚,使用起來相當(dāng)方便创译。因?yàn)槭褂肦PM安裝某一個(gè)程序包有可能會(huì)因?yàn)樵摮绦虬蕾嚵硪粋€(gè)程序包而無法安裝。而使用yum工具就可以連同依賴的程序包一起安裝墙基。當(dāng)然CentOS同樣可以使用yum工具软族,而且在CentOS中你可以免費(fèi)使用yum刷喜,但Redhat中只有當(dāng)你付費(fèi)后才能使用yum,默認(rèn)是無法使用yum的立砸。在介紹yum之前先說一說RPM相關(guān)的東西掖疮。
【RPM工具】
RPM是”Redhat Package Manager”的縮寫,根據(jù)名字也能猜到這是Redhat公司開發(fā)出來的颗祝。RPM 是以一種數(shù)據(jù)庫記錄的方式來將你所需要的套件安裝到你的Linux 主機(jī)的一套管理程序浊闪。也就是說,你的linux系統(tǒng)中存在著一個(gè)關(guān)于RPM的數(shù)據(jù)庫螺戳,它記錄了安裝的包以及包與包之間依賴相關(guān)性搁宾。RPM包是預(yù)先在linux機(jī)器上編譯好并打包好的文件,安裝起來非尘笥祝快捷盖腿。但是也有一些缺點(diǎn),比如安裝的環(huán)境必須與編譯時(shí)的環(huán)境一致或者相當(dāng)损同;包與包之間存在著相互依賴的情況奸忽;卸載包時(shí)需要先把依賴的包卸載掉,如果依賴的包是系統(tǒng)所必須的揖庄,那就不能卸載這個(gè)包,否則會(huì)造成系統(tǒng)崩潰欠雌。
每一個(gè)rpm包的名稱都由”-“和”.”分成了若干部分蹄梢。就拿 a2ps-4.13b-57.2.el5.i386.rpm 這個(gè)包來解釋一下,a2ps 為包名富俄;4.13b則為版本信息禁炒;57.2.el5為發(fā)布版本號(hào);i386為運(yùn)行平臺(tái)霍比。其中運(yùn)行平臺(tái)常見的有i386, i586, i686, x86_64 幕袱,需要你注意的是cpu目前是分32位和64位的,i386,i586和i686都為32位平臺(tái)悠瞬,x86_64則代表為64位的平臺(tái)们豌。另外有些rpm包并沒有寫具體的平臺(tái)而是noarch,這代表這個(gè)rpm包沒有硬件平臺(tái)限制浅妆。例如alacarte-0.10.0-1.fc6.noarch.rpm 望迎。下面介紹一下rpm常用的命令。
安裝一個(gè)rpm包:rpm -ivh alacarte-0.10.0-1.fc6.noarch.rpm
-i :安裝的意思
-v :可視化
-h :顯示安裝進(jìn)度
另外在安裝一個(gè)rpm包時(shí)常用的附帶參數(shù)有:
--force 強(qiáng)制安裝凌外,即使覆蓋屬于其他包的文件也要安裝
--nodeps 當(dāng)要安裝的rpm包依賴其他包時(shí)辩尊,即使其他包沒有安裝,也要安裝這個(gè)包
升級(jí)一個(gè)rpm包:rpm -Uvh filename
卸載一個(gè)rpm包:rpm -e filename
這里的filename是通過rpm的查詢功能所查詢到的康辑,如rpm -qa | grep alacarte摄欲。
注意的是轿亮,卸載時(shí)后邊跟的filename和安裝時(shí)的是有區(qū)別的。
查詢一個(gè)包是否安裝:rpm -q rpm包名
(這里的包名胸墙,是不帶有平臺(tái)信息以及后綴名的)
如果加上了平臺(tái)信息以及后綴名反而不能查出來我注。你還可以查詢當(dāng)前系統(tǒng)中所安裝的所有rpm包:rpm -qa | head
得到一個(gè)rpm包的相關(guān)信息:rpm -qi 包名
(同樣不需要加平臺(tái)信息與后綴名)
列出一個(gè)rpm包安裝的文件:rpm -ql 包名
列出某一個(gè)文件屬于哪個(gè)rpm包:rpm -qf 文件的[絕對(duì)路徑]
前面講過如何查找一個(gè)文件(可執(zhí)行命令)的[絕對(duì)路徑]
所以你也可以把這兩條命令連起來寫
看到了嗎,which vim 這條命令是由兩個(gè)反引號(hào)引起來的劳秋,這代表引用反引號(hào)里面的命令所產(chǎn)生的結(jié)果仓手。關(guān)于rpm工具的使用還有很多內(nèi)容,只要你掌握上面這些內(nèi)容玻淑,完全夠你平時(shí)工作用的了嗽冒。
【yum工具】
介紹完rpm工具后,還需要你掌握最常用的yum工具补履,這個(gè)工具比rpm工具好用多了添坊,當(dāng)然前提是你使用的linux系統(tǒng)是支持yum的。yum最大的優(yōu)勢在于可以聯(lián)網(wǎng)去下載所需要的rpm包箫锤,然后自動(dòng)安裝贬蛙,在這個(gè)工程中如果要安裝的rpm包有依賴關(guān)系沽瘦,yum會(huì)幫你解決掉這些依賴關(guān)系依次安裝所有rpm包忽妒。下面介紹常用的yum 命令跳纳。
1)列出所有可用的rpm包 “yum list “
限于篇幅嘱丢,筆者只列舉出來前7個(gè)包信息巍实。從上例中可以看到有”mirrors.163.com”信息出現(xiàn)舔庶,這是在告訴用戶谁尸,它是從mirrors.163.com這里下載到的rpm包資源谅年。如果你使用的是CentOS則你可以從/etc/yum.repos.d/CentOS-Base.repo這個(gè)文件下看到相關(guān)的配置信息括儒。從上面的例子中你還可以看到最左側(cè)是rpm包名字绕沈,中間是版本信息,最右側(cè)是安裝信息帮寻,如果安裝了就顯示installed乍狐,未安裝則顯示base或者extras,如果是該rpm包已安裝但需要升級(jí)則顯示updates固逗。
2)搜索一個(gè)rpm包 “yum search [相關(guān)關(guān)鍵詞]”
除了這樣搜索外浅蚪,筆者常用的是利用grep來過濾 yum list | grep vim
3)安裝一個(gè)rpm包 “yum install [-y] [rpm包名]”
如果不加-y選項(xiàng),則會(huì)以與用戶交互的方式安裝烫罩,首先是列出需要安裝的rpm包信息掘鄙,然后會(huì)問用戶是否需要安裝,輸入y則安裝嗡髓,輸入n則不安裝操漠。而筆者嫌這樣太麻煩,所以直接加上-y選項(xiàng),這樣就省略掉了問用戶是否安裝的那一步
4)卸載一個(gè)rpm包 “yum remove [-y] [rpm包名]”
注意的是卸載某個(gè)rpm包一定要看清楚了浊伙,不要連其他重要的rpm包一起卸載了撞秋,以免影響正常的業(yè)務(wù)。
4)升級(jí)一個(gè)rpm包 “yum update [-y] [rpm包]”
以上介紹了如何使用yum搜索嚣鄙、安裝吻贿、卸載以及升級(jí)一個(gè)rpm包,如果你掌握了這些那么你就已經(jīng)可以解決日常工作中遇到的與rpm包相關(guān)問題了哑子。當(dāng)然yum工具還有好多其他好用的命令舅列,筆者不在列舉出來,如果你感興趣就去man一下吧卧蜓。除此之外帐要,筆者還會(huì)教你一些關(guān)于yum的小應(yīng)用。
1 利用yum工具下載一個(gè)rpm包
有時(shí)弥奸,我們需要下載一個(gè)rpm包榨惠,只是下載下來,拷貝給其他機(jī)器使用盛霎,前面也介紹過yum安裝rpm包的時(shí)候赠橙,首先得下載這個(gè)rpm包然后再去安裝,所以使用yum完全可以做到只下載而不安裝愤炸。
a. 首選要安裝 yum-downloadonly
yum install -y yum-downloadonly.noarch
b. 下載一個(gè)rpm包而不安裝
yum install test.rpm -y --downloadonly //這樣雖然下載了期揪,但是并沒有保存到我們想要的目錄下,那么如何指定目錄呢规个?
c. 下載到指定目錄
yum install test.rpm -y --downloadonly --downloaddir=/usr/local/src
【安裝源碼包】
安裝一個(gè)源碼包横侦,是需要我們自己把源代碼編譯成二進(jìn)制的可執(zhí)行文件。如果你讀得懂這些源代碼绰姻,那么你就可以去修改這些源代碼自定義功能,然后再去編譯成你想要的引瀑。使用源碼包的好處除了可以自定義修改源代碼外還可以定制相關(guān)的功能狂芋,因?yàn)樵创a包在編譯的時(shí)候是可以附加額外的選項(xiàng)的。
源碼包的編譯用到了linux系統(tǒng)里的編譯器憨栽,常見的源碼包一般都是用C語言開發(fā)的帜矾,這也是因?yàn)镃語言為linux上最標(biāo)準(zhǔn)的程序語言。Linux上的C語言編譯器叫做gcc屑柔,利用它就可以把C語言變成可執(zhí)行的二進(jìn)制文件屡萤。所以如果你的機(jī)器上沒有安裝gcc就沒有辦法去編譯源碼。你可以使用 yum install -y gcc 來完成安裝掸宛。
安裝一個(gè)源碼包死陆,通常需要三個(gè)步驟:
1. ./config 在這一步可以定制功能,加上相應(yīng)的選項(xiàng)即可,具有有什么選項(xiàng)可以通過”./config --help ”命令來查看措译。在這一步會(huì)自動(dòng)檢測你的linux系統(tǒng)與相關(guān)的套件是否有編譯該源碼包時(shí)需要的庫别凤,因?yàn)橐坏┤鄙倌硞€(gè)庫就不能完成編譯。只有檢測通過后才會(huì)生成一個(gè)Makefile文件领虹。
2. make 使用這個(gè)命令會(huì)根據(jù)Makefile文件中預(yù)設(shè)的參數(shù)進(jìn)行編譯规哪,這一步其實(shí)就是gcc在工作了。
3. make install 安裝步驟塌衰,生成相關(guān)的軟件存放目錄和配置文件的過程诉稍。
上面介紹的3步并不是所有的源碼包軟件都一樣的,筆者以前也曾經(jīng)遇到過最疆,安裝步驟并不是這樣杯巨,也就是說源碼包的安裝并非具有一定的標(biāo)準(zhǔn)安裝步驟。這就需要你拿到源碼包解壓后肚菠,然后進(jìn)入到目錄找相關(guān)的幫助文檔舔箭,通常會(huì)以INSTALL或者README為文件名。所以蚊逢,你一定要去看一下层扶。下面筆者會(huì)編譯安裝一個(gè)源碼包來幫你更深刻的去理解如何安裝源碼包。
- 下載一個(gè)源碼包
這里要提一下烙荷,建議以后你把所有下載的源碼包放到/usr/local/src/目錄下镜会,這個(gè)并不是必須的,只是一個(gè)約定终抽。方便你和你的同事將來更好的去運(yùn)維這臺(tái)服務(wù)器戳表。wget即為下載的命令,后邊跟源碼包的下載地址昼伴。該地址為筆者從網(wǎng)上找的一個(gè)apache的下載地址匾旭。
- 解壓源碼包
一般的源碼包都是一個(gè)壓縮包,如何解壓一個(gè).tar.gz的包上一章講過的圃郊。
- 配置相關(guān)的選項(xiàng)价涝,并生成Makefile
使用./config --help 可以查看可用的選項(xiàng)。一般常用的有”--prefix=PREFIX “ 這個(gè)選項(xiàng)的意思是定義軟件包安裝到哪里持舆。到這里色瘩,筆者再提一個(gè)小小的約定,通常源碼包都是安裝在/usr/local/目錄下的逸寓。比如居兆,我們把a(bǔ)pache安裝在/usr/local/apache2下,那么這里就應(yīng)該這樣寫” --prefix=/usr/local/apache2”竹伸。其他還有好多選項(xiàng)泥栖,如果你有耐心你可以挨個(gè)去看一看都有什么作用。
筆者在這里只定義了apache的安裝目錄,其他都是默認(rèn)聊倔』薇校回車后,開始執(zhí)行check操作耙蔑。
等check結(jié)束后生成了Makefile文件
除了查看有沒有生成Makefile文件來判定有沒有完成./config 的操作外见妒,還可以通過這個(gè)命令”echo $?”來判定,如果是0甸陌,則表示上一步操作成功完成须揣,否則就是沒有成功。
- 進(jìn)行編譯
這一步操作钱豁,就是把源代碼編譯成二進(jìn)制的可執(zhí)行文件耻卡,這一步也是最漫長的一步,編譯時(shí)間的長短取決于源代碼的多少和機(jī)器配置牲尺。
- 安裝
在安裝前卵酪,先確認(rèn)上一步操作是否成功完成。
make install 會(huì)創(chuàng)建相應(yīng)的目錄以及文件谤碳。當(dāng)完成安裝后溃卡,會(huì)在/usr/local目錄下多了一個(gè)apache2目錄,這就是apache所安裝的目錄了蜒简。
其實(shí)在日常的源碼安裝工作中瘸羡,并不是每個(gè)都像筆者這樣順利完成安裝的,遇到錯(cuò)誤不能完成安裝的情況是很多的搓茬。通常都是因?yàn)槿鄙倌骋粋€(gè)庫文件導(dǎo)致的犹赖。這就需要你仔細(xì)琢磨報(bào)錯(cuò)信息或者查看當(dāng)前目錄下的config.log去得到相關(guān)的信息。另外卷仑,如果自己不能解決那就去網(wǎng)上google一下吧峻村,通常你會(huì)得到你想要的答案。