安裝 RPM 包或者安裝源碼包

2018-08-12 21:29 更新

安裝 RPM 包或者安裝源碼包

windows下安裝一個(gè)軟件很輕松,只要雙擊.exe的文件,安裝提示連續(xù)下一步即可,然而linux系統(tǒng)下安裝一個(gè)軟件似乎并不那么輕松了,因?yàn)槲覀儾皇窃趫D形界面下。所以你要學(xué)會(huì)如何在linux下安裝一個(gè)軟件

在前面的內(nèi)容中多次提到的yum,這個(gè)yumRedhat所特有的安裝RPM程序包的工具,使用起來相當(dāng)方便。因?yàn)槭褂?/span>RPM安裝某一個(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ī)器上編譯好并打包好的文件,安裝起來非??旖?/span>但是也有一些缺點(diǎn),比如安裝的環(huán)境必須與編譯時(shí)的環(huán)境一致或者相當(dāng);包與包之間存在著相互依賴的情況;卸載包時(shí)需要先把依賴的包卸載掉,如果依賴的包是系統(tǒng)所必須的,那就不能卸載這個(gè)包,否則會(huì)造成系統(tǒng)崩潰。

如果你的光驅(qū)中還有系統(tǒng)安裝盤的話,你可以通過”mount /dev/cdrom /mnt”命令把光驅(qū)掛載到/mnt目錄下,那么你會(huì)在/mnt/CentOS目錄下看到很多.rpm的文件,這就是RPM包了。

11_1.png.jpg

每一個(gè)rpm包的名稱都由”-“”.”分成了若干部分。就拿 a2ps-4.13b-57.2.el5.i386.rpm 這個(gè)包來解釋一下,a2ps 為包名;4.13b則為版本信息;57.2.el5為發(fā)布版本號;i386為運(yùn)行平臺其中運(yùn)行平臺常見的有i386, i586, i686, x86_64 ,需要你注意的是cpu目前是分32位和64位的,i386,i586i686都為32位平臺,x86_64則代表為64位的平臺。另外有些rpm包并沒有寫具體的平臺而是noarch,這代表這個(gè)rpm包沒有硬件平臺限制。例如 alacarte-0.10.0-1.fc6.noarch.rpm 。下面介紹一下rpm常用的命令。

1)安裝一個(gè)rpm

11_7.png.jpg

-i :安裝的意思

-v :可視化

-h :顯示安裝進(jìn)度

另外在安裝一個(gè)rpm包時(shí)常用的附帶參數(shù)有:

--force 強(qiáng)制安裝,即使覆蓋屬于其他包的文件也要安裝

--nodeps 當(dāng)要安裝的rpm包依賴其他包時(shí),即使其他包沒有安裝,也要安裝這個(gè)包

2)升級一個(gè)rpm

rpm -Uvh filename -U :即升級的意思

3)卸載一個(gè)rpm

rpm -e filename 這里的filename是通過rpm的查詢功能所查詢到的,稍后會(huì)作介紹。

11_8.png.jpg

卸載時(shí)后邊跟的filename和安裝時(shí)的是有區(qū)別的上面命令提到的 “|”linux系統(tǒng)中用的非常多也非常有用,它是一個(gè)管道符,用來把前面運(yùn)行的結(jié)果傳遞給后面的命令。以后會(huì)做詳細(xì)介紹,而后出現(xiàn)的grep命令則是用來過濾某個(gè)關(guān)鍵詞的工具,在后續(xù)章節(jié)中會(huì)做詳細(xì)介紹。

4)查詢一個(gè)包是否安裝

rpm -q rpm包名(這里的包名,是不帶有平臺信息以及后綴名的)

11_9.png.jpg

如果加上了平臺信息以及后綴名反而不能查出來。你還可以查詢當(dāng)前系統(tǒng)中所安裝的所有rpm。

11_10.png.jpg

因?yàn)樘啵怨P者列出前十個(gè)。

5)得到一個(gè)rpm包的相關(guān)信息

rpm -qi 包名(同樣不需要加平臺信息與后綴名)

11_11.png.jpg

6)列出一個(gè)rpm包安裝的文件

rpm -ql 包名

11_21.png.jpg

通過上面的命令可以看出vim是通過安裝vim-enhanced-7.0.109-6.el5這個(gè)rpm包得來的那么反過來如何通過一個(gè)文件去查找是由安裝哪個(gè)rpm包得來的?

7)列出某一個(gè)文件屬于哪個(gè)rpm

rpm -qf 文件的絕對路徑

11_22.png.jpg

前面講過如何查找一個(gè)文件(可執(zhí)行命令)的絕對路徑

11_23.png.jpg

所以你也可以把這兩條命令連起來寫

11_24.png.jpg

看到了嗎,which vim 這條命令是由兩個(gè)反引號引起來的,這代表引用反引號里面的命令所產(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 “

11_25.png.jpg

限于篇幅,筆者只列舉出來前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包已安裝但需要升級則顯示updates。

2)搜索一個(gè)rpm “yum search [相關(guān)關(guān)鍵詞]”

11_26.png.jpg

除了這樣搜索外,筆者常用的是利用grep來過濾

11_27.png.jpg

相信你也會(huì)喜歡用后者吧,這樣看起來簡明的多。

3)安裝一個(gè)rpm “yum install [-y] [rpm包名]”

如果不加-y選項(xiàng),則會(huì)以與用戶交互的方式安裝,首先是列出需要安裝的rpm包信息,然后會(huì)問用戶是否需要安裝,輸入y則安裝,輸入n則不安裝。而筆者嫌這樣太麻煩,所以直接加上-y選項(xiàng),這樣就省略掉了問用戶是否安裝的那一步11_28.png.jpg

4)卸載一個(gè)rpm “yum remove [-y] [rpm包名]”

11_29.png.jpg

卸載和安裝一樣,你也可以直接加上-y選項(xiàng)來省略掉和用戶交互的步驟。在這里筆者要提醒你一下,卸載某個(gè)rpm包一定要看清楚了,不要連其他重要的rpm包一起卸載了,以免影響正常的業(yè)務(wù)。

4)升級一個(gè)rpm “yum update [-y] [rpm]”

11_44.png.jpg

以上介紹了如何使用yum搜索、安裝、卸載以及升級一個(gè)rpm包,如果你掌握了這些那么你就已經(jīng)可以解決日常工作中遇到的與rpm包相關(guān)問題了當(dāng)然yum工具還有好多其他好用的命令,筆者不在列舉出來,如果你感興趣就去man一下吧。除此之外,筆者還會(huì)教你一些關(guān)于yum的小應(yīng)用

1 使用本地的光盤來制作一個(gè)yum

有時(shí)候你的linux系統(tǒng)不能聯(lián)網(wǎng),當(dāng)然就不能很便捷的使用聯(lián)網(wǎng)的yum源了,這時(shí)候就需要你自己會(huì)利用linux系統(tǒng)光盤制作一個(gè)yum具體步驟如下:

a.掛載光盤

[root@fortest Server]# mount -t iso9660 -o loop /dev/cdrom /mnt

b.刪除/etc/yum.repos.d目錄所有的repo文件

[root@fortest Server]# rm -rf /etc/yum.repos.d/*

c.創(chuàng)建新文件dvd.repo

[root@fortest Server]# vim /etc/yum.repos.d/dvd.repo

加入以下內(nèi)容:

[dvd]

name=install dvd

baseurl=file:///mnt

enabled=1

gpgcheck=0

d.刷新repos,生成緩存

[root@fortest Server]#yum makecache

然后就可以使用yum命令安裝你所需要的軟件包了

2 利用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

11_45.png.jpg

安裝源碼包

其實(shí),在linux下面安裝一個(gè)源碼包是最常用的,筆者在日常的管理工作中,大部分軟件都是通過源碼安裝的。安裝一個(gè)源碼包,是需要我們自己把源代碼編譯成二進(jìn)制的可執(zhí)行文件。如果你讀得懂這些源代碼,那么你就可以去修改這些源代碼自定義功能,然后再去編譯成你想要的。使用源碼包的好處除了可以自定義修改源代碼外還可以定制相關(guān)的功能,因?yàn)樵创a包在編譯的時(shí)候是可以附加額外的選項(xiàng)的。

源碼包的編譯用到了linux系統(tǒng)里的編譯器,常見的源碼包一般都是用C語言開發(fā)的,這也是因?yàn)?/span>C語言為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è)源碼包來幫你更深刻的去理解如何安裝源碼包。

1. 下載一個(gè)源碼包

11_46.png.jpg

這里要提一下,建議以后你把所有下載的源碼包放到/usr/local/src/目錄下,這個(gè)并不是必須的,只是一個(gè)約定。方便你和你的同事將來更好的去運(yùn)維這臺服務(wù)器。wget即為下載的命令,后邊跟源碼包的下載地址。該地址為筆者從網(wǎng)上找的一個(gè)apache的下載地址

2. 解壓源碼包

11_47.png.jpg

一般的源碼包都是一個(gè)壓縮包,如何解壓一個(gè).tar.gz的包上一章講過的

3. 配置相關(guān)的選項(xiàng),并生成Makefile

11_48.png.jpg

使用./config --help 可以查看可用的選項(xiàng)。一般常用的有”--prefix=PREFIX “ 這個(gè)選項(xiàng)的意思是定義軟件包安裝到哪里。到這里,筆者再提一個(gè)小小的約定,通常源碼包都是安裝在/usr/local/目錄下的比如,我們把apache安裝在/usr/local/apache2下,那么這里就應(yīng)該這樣寫” --prefix=/usr/local/apache2”。其他還有好多選項(xiàng),如果你有耐心你可以挨個(gè)去看一看都有什么作用

11_49.png.jpg

筆者在這里只定義了apache的安裝目錄,其他都是默認(rèn)。回車后,開始執(zhí)行check操作。

11_50.png.jpg

check結(jié)束后生成了Makefile文件

11_51.png.jpg

除了查看有沒有生成Makefile文件來判定有沒有完成./config 的操作外,還可以通過這個(gè)命令”echo $?”來判定,如果是0,則表示上一步操作成功完成,否則就是沒有成功

11_52.png.jpg

4. 進(jìn)行編譯

11_53.png.jpg

這一步操作,就是把源代碼編譯成二進(jìn)制的可執(zhí)行文件,這一步也是最漫長的一步,編譯時(shí)間的長短取決于源代碼的多少和機(jī)器配置。

5. 安裝

11_54.png.jpg

在安裝前,先確認(rèn)上一步操作是否成功完成

11_55.png.jpg

make install 會(huì)創(chuàng)建相應(yīng)的目錄以及文件。當(dāng)完成安裝后,會(huì)在/usr/local目錄下多了一個(gè)apache2目錄,這就是apache所安裝的目錄了。

11_56.png.jpg

其實(shí)在日常的源碼安裝工作中,并不是每個(gè)都像筆者這樣順利完成安裝的,遇到錯(cuò)誤不能完成安裝的情況是很多的。通常都是因?yàn)槿鄙倌骋粋€(gè)庫文件導(dǎo)致的。這就需要你仔細(xì)琢磨報(bào)錯(cuò)信息或者查看當(dāng)前目錄下的config.log去得到相關(guān)的信息。另外,如果自己不能解決那就去網(wǎng)上google一下吧,通常你會(huì)得到你想要的答案。

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號