linux源码包编译安装与rpm安装方法介绍
????????????????????????? ? linux下的軟件包安裝
?????linux下安裝軟件包有兩種方法:源文件編譯安裝(source)和 rpm 安裝。
?1.源文件包安裝的通用方法。
??? 一般安裝源代碼的程序你得要看它的README,一般在它的目錄下都有的。
?01.配置:
??? 構(gòu)建應(yīng)用的第一步就是執(zhí)行configure腳本,該腳本位于程式源文件的主目錄下:
?? ?[root@localhost~]#?./configure
??? 該腳本將掃描系統(tǒng),以確保程式所需的所有庫(kù)文件業(yè)已存在,并做好文件路徑及其他所需的設(shè)置工作。如果程式所需的庫(kù)文件不完全,該設(shè)置腳本就會(huì)退出,并告訴你還需要哪些庫(kù)文件或是哪些版本太舊需要更新。
??? 如果遇見(jiàn)這種情況,僅弄到含有該庫(kù)文件的軟件包還是不夠的,同時(shí)還要找到具有該庫(kù)文件所有頭文件的研發(fā)包,在linux中,這樣的包一般以-dev作為文件名的結(jié)尾。安裝好所有需要的庫(kù)文件后,重新運(yùn)行設(shè)置腳本,直到?jīng)]有錯(cuò)誤提示為止,這說(shuō)明需要的庫(kù)文件已全部安裝妥當(dāng)了即滿足了依賴(lài)關(guān)系。
?02.編譯:
??? 當(dāng)設(shè)置腳本成功退出后,接下來(lái)要做的就是編譯代碼了。具體操作為在源文件的主目錄中運(yùn)行make命令:
????[root@localhost~]#??make
??? 注:這時(shí),你會(huì)看到一串編譯輸出數(shù)據(jù)迅速?gòu)钠聊簧蠞L過(guò),如果正常的話,系統(tǒng)會(huì)返回的提示符狀態(tài)。然而,如果編譯過(guò)程中出現(xiàn)錯(cuò)誤的話,排錯(cuò)的過(guò)程可就不像設(shè)置步驟那么簡(jiǎn)單了。因?yàn)?#xff0c;這通常要涉及到原始碼的調(diào)試,可能原始碼有語(yǔ)法錯(cuò)誤,或其他錯(cuò)誤等等。怎么辦?
??? 你是編程高手,那就自己調(diào)試吧!否則,檢查該軟件的郵件列表等支持渠道,看看是不是已知的bug,如果是就看看別人是怎么解決的,不是就提交一份bug報(bào)告吧,也許不久就會(huì)有解決辦法。
?03.安裝:
??? 當(dāng)軟件成功編譯后,最后一步就是將他們安裝到系統(tǒng)上。大部分程式的makefile文件中都會(huì)有一個(gè)用于安裝的函數(shù)。需要注意的是,大多時(shí)候我們必須作為root用戶(hù)來(lái)安裝程式,這樣程式就把文件安裝到/usr或其他只有終極用戶(hù)才有寫(xiě)權(quán)限的目錄中。依舊是在源文件的主目錄下,執(zhí)行如下命令:
???[root@localhost~]#??make install
????注:這樣程序就會(huì)安裝到你的計(jì)算機(jī)上了。
?
?04.另外,當(dāng)你不再使用該程序時(shí),能使用軟件所帶的卸載功能,一般程序都會(huì)具有此功能。轉(zhuǎn)換至源文件的主目錄下,執(zhí)行以下命令即可:????
???[root@localhost~]#??make uninstall
?06.? 多數(shù)情況下,利用上面介紹的方法安裝的程式,都位于/usr/local下面,編譯安裝源碼包還有一個(gè)特點(diǎn)就是我們可以自己指定安裝位置,這需要在配置時(shí)指定安裝文件夾下,通常我們會(huì)裝在/opt下,命令如下:
???[root@localhost~]#??./configure --prefix = /opt/
??? 注:當(dāng)然有時(shí)候也有例外,有些程序根本就不理會(huì)你指定的文件夾,它會(huì)自己指定文件夾進(jìn)行安裝。
?
2.rpm安裝軟件包的方法。
??01. 命令參數(shù)使用方法
?? 以上參數(shù)有些需要組合使用,比如說(shuō) rpm -h package.rpm 是沒(méi)有意義的,但 rpm -ih package.rpm 即表示安裝 package 并用 # 符顯示安裝進(jìn)度。?
??? ?? 安裝 RPM 包?:???????????????
??? ?# rpm -ivh package.rpm
??? ?? 升級(jí) RPM 包命令?:?????????????
??? ?# rpm -Uvh package.rpm
??? ???卸載 RPM 包命令?:????? ?????????
??? ?# rpm -ev package
??? ?? 查詢(xún) RPM 包中包含的文件列表命令:?
??? ?# rpm -qlp package
??? ?? 查詢(xún) RPM 包中包含的文件列表命令:
??? ?# rpm -qlp package
??? ?? 查詢(xún) RPM 包中包含的內(nèi)容信息命令:
?? ? # rpm -qip package
???? ? 查詢(xún)系統(tǒng)中所有已安裝 RPM 包?:???
??? ?# rpm -qa
?
??02. 包管理示例
??? 以下步驟描述了一個(gè)普通用戶(hù)安裝 IBM Lotus Notes V85 ( 以下簡(jiǎn)稱(chēng) Notes) 的典型操作過(guò)程。 Notes 的 RPM 包名為 ibm_lotus_notes-8.5.i586.rpm 。
?
??? 1.首先查詢(xún)是否該軟件是否已經(jīng)在系統(tǒng)中存在??????
????# rpm -qa | grep ibm_lotus_notes
? ??注: 如果返回信息為空那么說(shuō)明該軟件還未被安裝。
?
??? 2.查詢(xún) Notes 軟件包內(nèi)容:??
??? # rpm -qip ibm_lotus_notes-8.5.i586.rpm?
????Name??????? : ibm_lotus_notes?????????? Relocations: /opt/ibm/lotus/notes
??? Version???? : 8.5?????????????????????????????? Vendor: IBM?
????Release???? : 20081211.1925???????????? Build Date: Sat 13 Dec 2008 09:38:55 AM CST
??? Install Date: (not installed)?????????????? Build Host: dithers.notesdev.ibm.com
?? ?Group?????? : Applications/Office??????????
?? ?Source RPM: ibm_lotus_notes-8.5-20081211.1925.src.rpm
?? ?Size??????? : 603779427??????????????????????? License: Commercial
?? ?Signature?? : DSA/SHA1, Sat 13 Dec 2008 09:43:02 AM CST, Key ID 314c8c6534f9ae75
?? ?Summary???? : IBM Lotus Notes
??? Description :
?? ?IBM Lotus Notes software provides a robust ..
?
??? 3.安裝 Notes:??????
??? # rpm -ivh ibm_lotus_notes-8.5.i586.rpm
??? 返回信息 :
??????
?? ?Preparing...?????????????########################################### [100%]
?? ?1:ibm_lotus_notes??????? ########################################### [100%]
??? 4.升級(jí) Notes:
??? 若今后需要基于該版本升級(jí)至更高版本的 Notes( 縫 .0 - ibm_lotus_notes-9.0.i586.rpm),則使用 -U 參數(shù):
?? ?# rpm -Uvh ibm_lotus_notes-8.5.i586.rpm?
?? ?注:在該步驟中如果使用 -i 則系統(tǒng)通常會(huì)報(bào)文件沖突錯(cuò)誤,無(wú)法正常安裝。
?
????5.卸載 Notes
? ? 注意:卸載軟件使用軟件名稱(chēng),而不是包文件名:
?? ?# rpm -ev ibm_lotus_notes
???
??03.軟件包依賴(lài)性關(guān)系
??? 由于開(kāi)源的多態(tài)性,Linux 操作系統(tǒng)中的軟件之間的依賴(lài)性關(guān)系處理一直令用戶(hù)感到頭疼。如果 package_a 依賴(lài)于 package_b,那么在一個(gè)沒(méi)有安裝 package_b 的系統(tǒng)中,package_a 是不被系統(tǒng)推薦安裝的,強(qiáng)制安裝很可能會(huì)導(dǎo)致軟件無(wú)法正常工作。
????基于以上 package_a 和 package_b 的關(guān)系,在一個(gè)干凈的系統(tǒng)中 ( 未安裝 package_a 或 package_b),欲安裝 package_a,錯(cuò)誤通常會(huì)表現(xiàn)為:
??? RHEL 5.2
????
??? # rpm -ivh package_a.rpm
??? error: Failed dependencies:
??????? pacakge_b = version info is needed by package_a
?
??? 查詢(xún) RPM 包的依賴(lài)關(guān)系,?? 使用 rpm -qRp:
????
??? # rpm -qRp package_a.rpm
?? ?package_b = version_info
? 或
?? ?package_b >= version_info
? 或
??? package_b <= version_info?
????表明 package_a.rpm 依賴(lài)于 version_info 版的 package_b,或者任何高于并包括 version_info 版的 package_b,亦或低于或包括 version_info 版的 package_b 。所以 package_b.rpm 必須在 package_a 之前安裝于系統(tǒng)中。
??? 對(duì)于 package_a,正確的安裝方法應(yīng)該是:
????##RPM
??? ?# rpm -ivh package_b.rpm
?? ??# rpm -ivh package_a.rpm
?
??常見(jiàn)問(wèn)題列表
??? 01.可以手動(dòng)強(qiáng)制不進(jìn)行 RPM的依賴(lài)性關(guān)系檢查嗎?
??? RPM 可以。使用 --nodeps 輔助參數(shù),則安裝過(guò)程將不理會(huì)依賴(lài)性關(guān)系限制,強(qiáng)制安裝目標(biāo)包,
??? 如:# rpm -i --nodeps package_a.rpm
?? ?02.RPM 中的 --force 是干什么用的?
??? RPM 中的默認(rèn)安裝規(guī)則是不允許同一個(gè)包多次安裝的,也不允許降級(jí)安裝。使用 --force 輔助參數(shù)將不考慮以上
因素,強(qiáng)制安裝 RPM 包。但是,--force 無(wú)法強(qiáng)制安裝一個(gè)不滿足系統(tǒng)依賴(lài)性關(guān)系的包 ( 此時(shí)需要用到 --nodeps
參數(shù) ) 。使用方法如:
???? # rpm -i --force package_a.rpm
?? ?03.RPM支持遠(yuǎn)程安裝嗎?
??? RPM 是。 RPM 支持 HTTP 和 FTP 協(xié)議,如:# rpm -Uvh ftp://user:pass@ftpserver/package.rpm
??? 04.RPM提供包安裝成功的驗(yàn)證機(jī)制嗎?
??? RPM 是。 可以使用 -V 參數(shù)進(jìn)行驗(yàn)證。
?? ?05.RPM提供包安全簽名嗎?
? ? RPM 是。可以使用 --import 導(dǎo)入與軟件同時(shí)發(fā)布的 GPG KEY, 接著使用 -K 命令來(lái)驗(yàn)證包的安全性,如:
??? # rpm --import pub_ibm_lotus_notes.gpg # rpm -K ibm_lotus_notes-8.5.i586.rpm 返回信息 :? ibm_lotus_notes-
?8.5.i586.rpm: (sha1) dsa sha1 md5 gpg OK
?? ?06.如果 RPM 的底層數(shù)據(jù)庫(kù)損壞,RPM 還能使用嗎?
?? ?RPM 如果底層數(shù)據(jù)庫(kù)損壞,RPM 將無(wú)法正常使用。此時(shí)最常用的解決方法是重構(gòu)數(shù)據(jù)庫(kù):
?? ?# rm -f /var/lib/rpm/__* ; rpm -vv --rebuilddb
?? ?07.可以查詢(xún)系統(tǒng)中已經(jīng)安裝的某個(gè)文件屬于哪個(gè) RPM 包嗎?
?? ?RPM? 可以。使用 -qf 參數(shù) , 如在安裝了 Notes8.5 的系統(tǒng)中:
?? ?# rpm -qf /opt/ibm/lotus/notes/notes 返回信息 : Ibm_lotus_notes-8.5-20081211.1920
?? ?08.可以查詢(xún) RPM 包的安裝時(shí)間嗎?
?? ?RPM 可以。可使用 --last 查詢(xún)。如:
?? ?# rpm -qa --last 返回信息 : 系統(tǒng)中所有軟件的安裝時(shí)間。
轉(zhuǎn)載于:https://blog.51cto.com/yangdong/540888
總結(jié)
以上是生活随笔為你收集整理的linux源码包编译安装与rpm安装方法介绍的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: linux线程-sysconf系统变量
- 下一篇: linux查找替换grep以及正则表达式