日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > linux >内容正文

linux

linux软件包管理详解

發(fā)布時間:2025/6/15 linux 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 linux软件包管理详解 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

?????????????????????????????????linux軟件包管理

??? 在windows下安裝軟件很簡單,大多數(shù)軟件都只需要按照提示完成安裝操作。但是,在linux下安裝軟件稍微復(fù)雜了一點,需要用到命令行工具。下面通過在Red Hat Enterprise Linux 5下安裝RPM軟件包來了解Linux下的安裝

??1.使用rpm命令。

????RPM 全稱為(Redhat Package Manager),最早由 Red Hat 公司制定實施,隨后被 GNU 開源操作系統(tǒng)接受并成為很多 Linux 系統(tǒng) (RHEL) 的既定軟件標(biāo)準(zhǔn)。由此,Red Hat Enterprise Linux5 也內(nèi)置了這個命令行小工具,用它來管理RPM軟件包。可以使用rpm來查詢已經(jīng)安裝的軟件包、安裝軟件、升級軟件和卸載軟件等信息。

????RPM 命令常用參數(shù)

?? -q 在系統(tǒng)中查詢軟件或查詢指定 rpm 包的內(nèi)容信息

?? -i 在系統(tǒng)中安裝軟件

?? -U 在系統(tǒng)中升級軟件

?? -e 在系統(tǒng)中卸載軟件

?? -h 用 #(hash) 符顯示 rpm 安裝過程

?? -v 詳述安裝過程

?? -p 表明對 RPM 包進行查詢,通常和其它參數(shù)同時使用,如:

??? ?-qlp 查詢某個 RPM 包中的所有文件列表

??? ?-qip 查詢某個 RPM 包的內(nèi)容信息

?

??2.RPM 命令參數(shù)使用方法

?? 以上參數(shù)有些需要組合使用,比如說 rpm -h package.rpm 是沒有意義的,但 rpm -ih package.rpm 即表示安裝 package 并用 # 符顯示安裝進度。?

??? ?? 安裝 RPM 包?:???????????????

??? ?# rpm -ivh package.rpm

??? ?? 升級 RPM 包命令?:?????????????

??? ?# rpm -Uvh package.rpm

??? ???卸載 RPM 包命令?:????? ?????????

??? ?# rpm -ev package

??? ?? 查詢 RPM 包中包含的文件列表命令:?

??? ?# rpm -qlp package

??? ?? 查詢 RPM 包中包含的文件列表命令:

??? ?# rpm -qlp package

??? ?? 查詢 RPM 包中包含的內(nèi)容信息命令:

?? ? # rpm -qip package

???? ? 查詢系統(tǒng)中所有已安裝 RPM 包?:???

??? ?# rpm -qa

?

???3.RPM 包管理示例

??? 以下步驟描述了一個普通用戶安裝 IBM Lotus Notes V85 ( 以下簡稱 Notes) 的典型操作過程。 Notes 的 RPM 包名為 ibm_lotus_notes-8.5.i586.rpm 。

?

??? 01.首先查詢是否該軟件是否已經(jīng)在系統(tǒng)中存在??????
????# rpm -qa | grep ibm_lotus_notes

? ??: 如果返回信息為空那么說明該軟件還未被安裝。

?

??? 02.查詢 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 ..

?

??? 03.安裝 Notes:??????
??? # rpm -ivh ibm_lotus_notes-8.5.i586.rpm

??? 返回信息 :
??????
?? ?Preparing...?????????????########################################### [100%]
?? ?1:ibm_lotus_notes??????? ########################################### [100%]


??? 04.升級 Notes:
??? 若今后需要基于該版本升級至更高版本的 Notes( 縫 .0 - ibm_lotus_notes-9.0.i586.rpm),則使用 -U 參數(shù):

?? ?# rpm -Uvh ibm_lotus_notes-8.5.i586.rpm?
?? ?注:在該步驟中如果使用 -i 則系統(tǒng)通常會報文件沖突錯誤,無法正常安裝。

?

?? ?05.卸載 Notes
? ? 注意:卸載軟件使用軟件名稱,而不是包文件名:

?? ?# rpm -ev ibm_lotus_notes

???

???4.軟件包依賴性關(guān)系

??? 由于開源的多態(tài)性,Linux 操作系統(tǒng)中的軟件之間的依賴性關(guān)系處理一直令用戶感到頭疼。如果 package_a 依賴于 package_b,那么在一個沒有安裝 package_b 的系統(tǒng)中,package_a 是不被系統(tǒng)推薦安裝的,強制安裝很可能會導(dǎo)致軟件無法正常工作。

????基于以上 package_a 和 package_b 的關(guān)系,在一個干凈的系統(tǒng)中 ( 未安裝 package_a 或 package_b),欲安裝 package_a,錯誤通常會表現(xiàn)為:

??? RHEL 5.2
????
??? # rpm -ivh package_a.rpm

??? error: Failed dependencies:
??????? pacakge_b = version info is needed by package_a

?

??? 查詢 RPM 包的依賴關(guān)系,?? 使用 rpm -qRp:
????
??? # rpm -qRp package_a.rpm

?? ?package_b = version_info
? 或
?? ?package_b >= version_info
? 或
??? package_b <= version_info?

?

?

?

??? 對于 package_a,正確的安裝方法應(yīng)該是:
????##RPM
??? ?# rpm -ivh package_b.rpm
?? ??# rpm -ivh package_a.rpm

?

??5.嵌套的依賴關(guān)系

如上示例為最理想的依賴關(guān)系,實際應(yīng)用中往往最令用戶頭疼的是 package_a 依賴于 package_b/c/d/e/f 等多個包 , 而 package_b/c/d/e/f 等包又依賴于 package_b1,b2,b3/c1,c2/d1,d2/e1,e2/f1,f2 等等 ... ... 為保證軟件的正常使用,必須找到所有依賴包以及子依賴包并且安裝。過多的依賴關(guān)系大大降低了 Linux 軟件安裝的用戶友好性。所以針對此類問題,使用了更高級的包管理策略去解決 - Yum/APT 。

??

?? ?更友好的包管理軟件 - YUM

?? YUM 基于 RPM 包管理工具,能夠從指定的源空間(服務(wù)器,本地目錄等)自動下載目標(biāo) RPM 包并且安裝,可以自動處理依賴性關(guān)系并進行下載、安裝,無須繁瑣地手動下載、安裝每一個需要的依賴包。此外,YUM 的另一個功能是進行系統(tǒng)中所有軟件的升級。如上所述,YUM 的 RPM 包來源于源空間,在 RHEL 中由 /etc/yum.repos.d/ 目錄中的 .repo 文件配置指定,如 rhel-debuginfo.repo 的內(nèi)容:

?? ?rhel-debuginfo.repo
?? ?[rhel-debuginfo]
?? ?name=Red Hat Enterprise Linux 5Client - i386 - Debug
?? ?baseurl=ftp://ftp.redhat.com/pub/redhat/linux/enterprise/5Client/en/os/i386/Debuginfo/
?? ?enabled=0
?? ?gpgcheck=1
?? ?gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release

?

??? YUM 的系統(tǒng)配置文件位于 /etc/yum.conf,內(nèi)容如:
????[main]
??? cachedir=/var/cache/yum
?? ?keepcache=1
?? ?debuglevel=2
?? ?pkgpolicy=newest
?? ?logfile=/var/log/yum.log
?? ?distroverpkg=redhat-release
?? ?tolerant=1
?? ?exactarch=1
?? ?obsoletes=1
?? ?gpgcheck=1
??? plugins=1
??? exclude= firefox gftp


??? 配置文件用來定義用戶期望的 yum 行為,比如,gpgcheck? 表明安裝時不進行 gpg 驗證,exclued=firefox gftp 表明進行系統(tǒng)全軟件升級時不升級 firefox 和 gftp 。

??? YUM 常用命令

??? 安裝指定軟件 :?????????????????? ??

? ??# yum -y install package-name

??? 列出系統(tǒng)中已安裝軟件?:????????????

????# yum list

??? 列出系統(tǒng)中可升級的所有軟件?:????? ?

? ??# yum check-update

??? 升級系統(tǒng)中可升級的所有軟件?:??????

????# yum update

??? 升級指定軟件??:??????????????????

????# yum update package-name

??? 在升級過程中接受所有互動問答?:???

??? # yum -y update

??? 卸載指定軟件??:??????????????????

??? # yum remove package-name

??

???6.常見問題列表

??? 01.可以手動強制不進行 RPM的依賴性關(guān)系檢查嗎?

??? RPM 可以。使用 --nodeps 輔助參數(shù),則安裝過程將不理會依賴性關(guān)系限制,強制安裝目標(biāo)包,

??? 如:# rpm -i --nodeps package_a.rpm

?? ?02.RPM 中的 --force 是干什么用的?

??? RPM 中的默認(rèn)安裝規(guī)則是不允許同一個包多次安裝的,也不允許降級安裝。使用 --force 輔助參數(shù)將不考慮以上

因素,強制安裝 RPM 包。但是,--force 無法強制安裝一個不滿足系統(tǒng)依賴性關(guān)系的包 ( 此時需要用到 --nodeps

參數(shù) ) 。使用方法如:
???? # rpm -i --force package_a.rpm

?? ?03.RPM支持遠程安裝嗎?

??? RPM 是。 RPM 支持 HTTP 和 FTP 協(xié)議,如:# rpm -Uvh ftp://user:pass@ftpserver/package.rpm
??? 04.RPM提供包安裝成功的驗證機制嗎?

??? RPM 是。 可以使用 -V 參數(shù)進行驗證。
?? ?05.RPM提供包安全簽名嗎?

? ? RPM 是。可以使用 --import 導(dǎo)入與軟件同時發(fā)布的 GPG KEY, 接著使用 -K 命令來驗證包的安全性,如:
??? # 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ù)庫損壞,RPM 還能使用嗎?

?? ?RPM 如果底層數(shù)據(jù)庫損壞,RPM 將無法正常使用。此時最常用的解決方法是重構(gòu)數(shù)據(jù)庫:
?? ?# rm -f /var/lib/rpm/__* ; rpm -vv --rebuilddb

?? ?07.可以查詢系統(tǒng)中已經(jīng)安裝的某個文件屬于哪個 RPM 包嗎?

?? ?RPM? 可以。使用 -qf 參數(shù) , 如在安裝了 Notes8.5 的系統(tǒng)中:
?? ?# rpm -qf /opt/ibm/lotus/notes/notes 返回信息 : Ibm_lotus_notes-8.5-20081211.1920

?? ?08.可以查詢 RPM 包的安裝時間嗎?

?? ?RPM 可以。可使用 --last 查詢。如:
?? ?# rpm -qa --last 返回信息 : 系統(tǒng)中所有軟件的安裝時間。

?

?

?????????????????????????????????????????????????????????????? ????? 結(jié)束

?????????????????????????????????????????????????????????????????? ??......

?


????表明 package_a.rpm 依賴于 version_info 版的 package_b,或者任何高于并包括 version_info 版的 package_b,亦或低于或包括 version_info 版的 package_b 。所以 package_b.rpm 必須在 package_a 之前安裝于系統(tǒng)中。

轉(zhuǎn)載于:https://blog.51cto.com/yangdong/540891

《新程序員》:云原生和全面數(shù)字化實踐50位技術(shù)專家共同創(chuàng)作,文字、視頻、音頻交互閱讀

總結(jié)

以上是生活随笔為你收集整理的linux软件包管理详解的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。