欧美阿v视频在线大全_亚洲欧美中文日韩V在线观看_www性欧美日韩欧美91_亚洲欧美日韩久久精品

主頁 > 知識庫 > 全面講解RedHat系Linux中的rpm包管理系統

全面講解RedHat系Linux中的rpm包管理系統

熱門標簽:ai人工電話機器人 長沙人工外呼系統公司 河北機器人電銷 bs外呼系統 阿克蘇市地圖標注app 小藍鴿電話機器人 京東外呼系統怎么操作 常州云呼叫外呼系統 上海營銷外呼系統定制

在linux世界里流行兩種包管理方式,分別是redhat系的rpm和debian系的deb。其中rpm的使用更為廣泛,我打算接下來分多章詳細介紹一下rpm的包管理機制。
包管理是操作系統用來維護各組件版本的一種方式,對于軟件發行者來說,將自己的程序制作成標準的rpm格式也會使得程序的安裝、升級和卸載變得非常容易。因此linux下幾乎所有流行的程序都有rpm格式的包,有些是發行者自己打包,也有些第三方提供rpm包,例如redhat發行版里的rpm都是redhat自己打包,他們定期打patch,升級并且維護包之間的依賴關系,他們制作的rpm包是最可以信任的。除此之外,http://dag.wieers.com/rpm/這個網站也提供很多較新的rpm包,在redhat官方找不到的包很多在這里都可以找到。
在網上搜索rpm包最常用的方式是通過rpmfind.net進行搜索,它會提供各個發行版下的各個版本的包下載。注意一定要找到正確的發行版下對應的包,由于依賴底層庫和庫版本的不同,不同版本的發行版的包最好不要混裝。

RPM的安裝功能
先介紹rpm的安裝,基本的安裝命令如下

復制代碼
代碼如下:

rpm -ivh xxxxxxx.rpm

i代表安裝,e代表卸載,v代表顯示安裝過程,h代表顯示#號樣式的進度
下面看一個簡單的例子:

復制代碼
代碼如下:

[leconte@localhost soft]$ sudo rpm -ivh enca-1.9-4.el5.rf.i386.rpm
warning: enca-1.9-4.el5.rf.i386.rpm: Header V3 DSA signature: NOKEY, key ID 6b8d79e6
Preparing... ########################################### [100%]
1:enca ########################################### [100%]

rpm包這樣就裝上了,但是很多時候沒有這么順利,由于rpm包之間可能存在依賴關系,在依賴關系無法滿足的情況下默認是沒法繼續安裝的;再比如某個包已經安裝過,如果想再裝一次,也是無法繼續的。這種情況下可以通過一些參數來強制執行,但是強制執行的后果可能是裝的程序無法正常使用,因為它依賴的包你系統并沒有提供。
安裝時常用的參數如下:
--test 測試安裝,并不真實安裝而僅僅是測試能否安裝。
--nodeps 忽略依賴關系強行安裝
--force 強制替換現有版本
--noscripts 僅安裝文件不執行附加腳本
下面演示一個強行安裝的例子“

復制代碼
代碼如下:

[leconte@localhost soft]$ sudo rpm -ivh awstats-6.9-1.noarch.rpm
error: Failed dependencies:
perl(LWP::UserAgent) is needed by awstats-6.9-1.noarch
[leconte@localhost soft]$ sudo rpm -ivh awstats-6.9-1.noarch.rpm --nodeps
Preparing... ########################################### [100%]
1:awstats ########################################### [100%]

awstats依賴的PERL模塊LWP::UserAgent并沒有裝,因此默認是無法安裝的,但是通過nodeps可以強制安裝,而LWP::UserAgent可以通過cpan去后續安裝。也就是說,如果你明白你在做什么,那么強制安裝并不可怕。
需要注意的是,rpm包的安裝和卸載都需要在系統的rpm數據庫里保存信息,因此需要root權限。

RPM的查詢功能
接著介紹rpm的查詢功能,查詢是我們最常用的功能,例如查詢一個包里包含哪些文件、一個文件屬于哪個包、以及包之間的依賴關系等等。
rpm的-q參數是用來進行查詢的,需要明確的是rpm既可以對安裝在系統上的包進行查詢,也可以對一個未安裝的rpm包進行查詢。當一個rpm包安裝到系統上之后,安裝信息通常會保存在本地的/var/lib/rpm/目錄下,數據會以berkeley DB的方式保存。查看/var/lib/rpm/Packages文件的類型可以驗證這一點。

復制代碼
代碼如下:

[leconte@localhost rpm]$ file /var/lib/rpm/Packages
/var/lib/rpm/Packages: Berkeley DB (Hash, version 8, native byte-order)

這種情況下的查詢其實就是對bdb的讀訪問。而對一個未安裝的rpm包進行查詢,則是通過解讀rpm包本身而獲取信息,這一點是首先需要明確的。
下面我就簡單羅列一下rpm最常用的幾個查詢功能
1.rpm -qa 用來查詢系統安裝的所有包,a代表all
2.rpm -ql [包名] 用來查詢某個包里的文件列表,例如查詢包passwd里包含的內容

復制代碼
代碼如下:

[leconte@localhost rpm]$ rpm -ql passwd
/etc/pam.d/passwd
/usr/bin/passwd
/usr/share/man/man1/passwd.1.gz

3.rpm -qi [包名] 用來查詢包信息,其中包含包的介紹,作者,打包日期等重要信息。
4.rpm -qf [文件名] 用來查詢一個文件所屬的rpm包,例如:

復制代碼
代碼如下:

[leconte@localhost rpm]$ rpm -qf /etc/passwd
setup-2.5.58-4.el5

系統配置文件/etc/passwd是屬于setup這個包的。
5.rpm -qV [包名] 用來驗證某個包中安裝的各文件的狀態,如果當前文件的大小、md5和安裝時數據庫里保存的信息不一致,該命令則會將不一致的文件列出來。該命令對于系統出問題的情況下的故障排查很有幫助。
上面是幾個最常用的查詢命令,都是針對查詢系統rpm包情況的。如果要查詢未安裝的rpm包則只需要加上p參數和包路徑即可。例如查詢包perl-Git-1.5.5.6-4.el5.i386.rpm的信息:

復制代碼
代碼如下:

[leconte@localhost soft]$ rpm -qip perl-Git-1.5.5.6-4.el5.i386.rpm
warning: perl-Git-1.5.5.6-4.el5.i386.rpm: Header V3 DSA signature: NOKEY, key ID 217521f6
Name : perl-Git Relocations: (not relocatable)
Version : 1.5.5.6 Vendor: Fedora Project
Release : 4.el5 Build Date: 2009年06月19日 星期五 21時28分05秒
Install Date: (not installed) Build Host: xenbuilder2.fedora.redhat.com
Group : Development/Libraries Source RPM: git-1.5.5.6-4.el5.src.rpm
Size : 24878 License: GPL
Signature : DSA/SHA1, 2009年06月20日 星期六 04時07分18秒, Key ID 119cc036217521f6
Packager : Fedora Project
URL : http://kernel.org/pub/software/scm/git/
Summary : Perl interface to Git
Description :
Perl interface to Git.

RPM包的依賴關系
rpm包之間會維持依賴關系,這是包管理系統的特色。我們都經歷過安裝一個包而因為依賴缺失而裝不上的情況。后來yum的出現能一定程度解決這個問題,但我們仍然有必要了解rpm依賴關系背后的細節。
自己打過rpm包的人都知道,在包的spec配置文件往往要明確寫出此包所依賴的包名或文件名,同時也可能需要明確寫出此包所提供的內容。這個內容可能是動態庫也可能是其他一些名字,并不一定是文件名。各個包之間正是依靠這些內容來建立依賴關系的,每個包都提供一些內容同時依賴一些別的內容,整個系統就在這樣一種相互依賴中形成了。
在看具體的例子之前先介紹幾個指令:
rpm -qR [包名] 可以用來查詢指定包所依賴的內容
rpm -q –provides [包名] 可以用來查詢指定包所提供的內容
rpm -q –whatprovides [內容] 可以用來查詢哪個包提供了指定內容
rpm -q –whatrequires [內容] 可以用來查看哪些包依賴于指定內容
例如我們以time這個包為例進行查詢,結果如下:

復制代碼
代碼如下:

[leconte@localhost soft]$ rpm -qR time
/bin/sh
/bin/sh
/sbin/install-info
libc.so.6
libc.so.6(GLIBC_2.0)
libc.so.6(GLIBC_2.1)
libc.so.6(GLIBC_2.3.4)
rpmlib(CompressedFileNames) lt;= 3.0.4-1
rpmlib(PayloadFilesHavePrefix) lt;= 4.0-1
rtld(GNU_HASH)

可見,time這個包如果要安裝,上述內容必須已經存在,否則將會提示依賴缺失而無法安裝。我們以列表中的/bin/sh為例進行反查,可以看到系統中哪個包提供了/bin/sh

復制代碼
代碼如下:

[leconte@localhost soft]$ rpm -q --whatprovides "/bin/sh"
bash-3.2-24.el5

很明顯,bash這個包提供了/bin/sh,正是由于bash的安裝才滿足了time的安裝需求。
time依賴于bash等包,同時它也提供了一些內容,有可能被別的包依賴:

復制代碼
代碼如下:

[leconte@localhost soft]$ rpm -q --provides time
time = 1.7-27.2.2
[leconte@localhost soft]$ rpm -q --whatrequires 'time'
no package requires time

不幸的是系統中并沒有包依賴于time,因為它本身屬于較上層的包。
對于一些底層內容就會有很多包依賴它,例如之前碰到的/bin/sh:

復制代碼
代碼如下:

[leconte@localhost soft]$ rpm -q --whatrequires '/bin/sh'
bash-3.2-24.el5
bash-3.2-24.el5
info-4.8-14.el5
ncurses-5.5-24.20060715
libxml2-2.6.26-2.1.2.7
readline-5.1-1.1

......................省略n行
由于篇幅所限就不全列舉出來了,這種依賴關系應該可以一目了然了。
和上節類似,rpm -qR和rpm -q –provides這兩個查詢指令同樣可以加上-p參數應用到一個未安裝的rpm包,例如

復制代碼
代碼如下:

[leconte@localhost soft]$ rpm -qp --provides enca-1.9-4.el5.rf.i386.rpm
warning: enca-1.9-4.el5.rf.i386.rpm: Header V3 DSA signature: NOKEY, key ID 6b8d79e6
libenca.so.0
enca = 1.9-4.el5.rf

可以看到,enca這個rpm包提供了動態庫libenca.so.0和enca本身。
通過使用本節這四條依賴關系查詢指令基本可以了解到系統上眾多rpm包之間的耦合關系,明確了這一點,我們對rpm的理解也就更深了一步。


RPM包的卸載和升級
rpm包的卸載和升級的指令如下:
rpm -e [包名] 用來卸載一個rpm包
rpm -U [包文件] 用來升級一個現有的rpm
需要注意的是,如果要卸載的rpm包中的內容被別的rpm包依賴,那么則無法卸載,例如

復制代碼
代碼如下:

[leconte@localhost ~]$ rpm -e php-common
error: Failed dependencies:
php-common = 5.2.9-4 is needed by (installed) php-pdo-5.2.9-4.i386
php-common = 5.2.9-4 is needed by (installed) php-bcmath-5.2.9-4.i386
php-common = 5.2.9-4 is needed by (installed) php-curl-5.2.9-4.i386
php-common = 5.2.9-4 is needed by (installed) php-dba-5.2.9-4.i386
       
php-common由于被 php-pdo等包依賴而無法單獨卸載,php-pdo和php-common可以利用上節介紹過的依賴關系查詢指令查到:

復制代碼
代碼如下:

[leconte@localhost ~]$ rpm -qR php-pdo
config(php-pdo) = 5.2.9-4
libc.so.6
libc.so.6(GLIBC_2.0)
libc.so.6(GLIBC_2.1.3)
libc.so.6(GLIBC_2.3)
libc.so.6(GLIBC_2.4)
librt.so.1
libsqlite3.so.0
php-common = 5.2.9-4
..............
[leconte@localhost ~]$ rpm -q --whatrequires php-common
php-pdo-5.2.9-4
php-bcmath-5.2.9-4
php-curl-5.2.9-4
php-dba-5.2.9-4
php-gd-5.2.9-4
...............

這種情況下想要卸載php-common,只能將它依賴的所有包全部卸載掉。更暴力的方式是指定-nodeps忽略依賴關系限制,但是這樣造成的后果就是php-pdo等包將無法正常使用,因此這種方式一般不推薦。
rpm包的升級指的是rpm包的版本升級,這種情況下實際內部執行的動作分兩步,即先安裝新版本然后卸載老版本。此外,rpm也可以進行包的降級,只需要指定–oldpackages參數即可。
值得注意的是在卸載和升級的過程中,包中的配置文件會被妥善處理,rpm會根據一系列規則決定配置文件是否保留,即使被替換,舊的配置文件也會被重命名后保存起來,你之前對配置文件做過的修改不會因為rpm包的升級而丟失。

標簽:甘南 邢臺 周口 甘孜 銅仁 來賓 忻州 泉州

巨人網絡通訊聲明:本文標題《全面講解RedHat系Linux中的rpm包管理系統》,本文關鍵詞  全面,講解,RedHat,系,Linux,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《全面講解RedHat系Linux中的rpm包管理系統》相關的同類信息!
  • 本頁收集關于全面講解RedHat系Linux中的rpm包管理系統的相關信息資訊供網民參考!
  • 推薦文章
    欧美阿v视频在线大全_亚洲欧美中文日韩V在线观看_www性欧美日韩欧美91_亚洲欧美日韩久久精品
  • <rt id="w000q"><acronym id="w000q"></acronym></rt>
  • <abbr id="w000q"></abbr>
    <rt id="w000q"></rt>
    91精品国产麻豆国产自产在线 | 国产精品免费人成网站酒店| 欧美人牲a欧美精品| 自拍偷拍亚洲激情| 国产成人亚洲综合a∨婷婷图片| 中文字幕免费高清| 日韩精品一区二区三区中文精品| 亚洲福利视频一区二区| 9191在线视频| 欧美日韩精品是欧美日韩精品| 玉米视频成人免费看| 92精品国产成人观看免费| 国产精品 欧美激情| 中文字幕不卡在线播放| 国产精品一区二区果冻传媒| 日本黄色激情视频| 国产日产精品一区| 国产成人高清在线| 日本少妇高清视频| 亚洲精品国产第一综合99久久| av在线播放不卡| 日本丰满少妇一区二区三区| 综合久久一区二区三区| 99riav一区二区三区| 色88888久久久久久影院野外| 亚洲视频免费在线| 91美女蜜桃在线| 欧美少妇一区二区| 亚洲mv大片欧洲mv大片精品| 国产在线不卡av| 欧美一区午夜视频在线观看| 免费人成在线不卡| 黄色av免费播放| 国产精品美女久久久久久久| av中文字幕一区| 欧美另类z0zxhd电影| 天天色综合天天| 精品无码人妻一区二区免费蜜桃| 国产女主播一区| 暴力调教一区二区三区| 欧美日韩视频在线第一区| 日韩1区2区日韩1区2区| 一区二区三区伦理片| 国产精品国产三级国产普通话蜜臀| 菠萝蜜视频在线观看一区| 欧美视频你懂的| 免费成人在线观看视频| 老司机深夜福利网站| 亚洲日本va午夜在线影院| 性色av蜜臀av浪潮av老女人| 精品电影一区二区三区| 成人午夜在线视频| 精品视频免费看| 久久97超碰色| 色婷婷av一区| 视频一区二区三区入口| 青青青视频在线播放| 亚洲精品美腿丝袜| 九色porny自拍视频| 国产精品天美传媒沈樵| 少妇熟女视频一区二区三区 | 亚洲精品国产精品国自| 亚洲欧洲性图库| 精品1卡二卡三卡四卡老狼| xf在线a精品一区二区视频网站| 成人的网站免费观看| 91精品国产综合久久久久| 国产精品综合视频| 欧美日韩免费观看一区三区| 激情图片小说一区| 欧美视频在线一区二区三区 | 成人晚上爱看视频| 91精品午夜视频| 国产成人夜色高潮福利影视| 91麻豆精品91久久久久同性| 成人一区二区三区视频在线观看 | 欧美在线看片a免费观看| 麻豆国产欧美日韩综合精品二区| 午夜爱爱毛片xxxx视频免费看| 婷婷丁香久久五月婷婷| 成人在线观看免费完整| 免费观看30秒视频久久| 在线观看一区二区视频| 国产资源在线一区| 91精品国产色综合久久ai换脸| 成人小视频免费在线观看| 男人女人拔萝卜视频| 国产精品一区在线| 久久久久99精品成人| 亚洲一区二区三区四区五区黄 | 日韩av电影天堂| 91国偷自产一区二区三区成为亚洲经典 | 久久国产剧场电影| 欧美三级中文字| 国产成人免费xxxxxxxx| 日韩欧美视频一区| 国产女主播在线播放| 1区2区3区国产精品| 东方伊人免费在线观看| 丝袜国产日韩另类美女| 国产成人精品免费在线| 日韩欧美中文字幕公布| 制服下的诱惑暮生| 中文字幕一区二区三区不卡| 欧美性受xxxx黑人| 免费观看在线综合色| 欧美精品久久99| 91原创在线视频| 国产精品久久久久9999吃药| 国产美女免费网站| 老司机精品视频导航| 欧美一区二区三区小说| av电影在线播放| 亚洲一区二区黄色| 欧美午夜在线一二页| av在线综合网| 综合中文字幕亚洲| 色婷婷精品大在线视频 | 国产精品麻豆一区| 国产在线视频不卡二| 日韩美女天天操| 国产夫妻性爱视频| 婷婷久久综合九色国产成人 | 视频一区在线播放| 欧美日韩在线一区二区| 免费黄色在线播放| 亚洲一区免费在线观看| 欧美色综合网站| 91精品国产高清91久久久久久 | 精品视频在线免费看| 91免费观看视频| 亚洲最大的成人av| 欧美日韩中文字幕精品| 一级黄色免费视频| 亚洲va欧美va国产va天堂影院| 欧美日韩成人一区| 最近中文字幕无免费| 日本一道高清亚洲日美韩| 日韩三区在线观看| jizz欧美性20| 精品一区二区三区的国产在线播放 | 久久国产精品区| 久久久噜噜噜久久人人看| 久久久久久国产免费a片| 国产麻豆精品在线| 国产精品乱码妇女bbbb| 岛国毛片在线观看| 91麻豆蜜桃一区二区三区| 亚洲黄色免费网站| 91精品国产91热久久久做人人 | 激情国产一区二区| 日本一二三不卡| 丰满少妇高潮久久三区| 26uuu国产| 日本 国产 欧美色综合| 久久青草欧美一区二区三区| 正在播放国产对白害羞| 成人在线视频首页| 亚洲一区二区av在线| 欧美mv日韩mv国产网站| 免费黄色国产视频| 91视频一区二区三区| 午夜精品123| 久久久久国产成人精品亚洲午夜 | 国产精品美女久久久久aⅴ国产馆| 欧美视频一区二区在线| 99久久国产综合精品麻豆| 亚洲国产美国国产综合一区二区| 日韩美女天天操| 波多野结衣爱爱视频| 理论片大全免费理伦片| 韩国欧美国产1区| 自拍av一区二区三区| 555www色欧美视频| 免费精品在线视频| 岛国大片在线免费观看| 麻豆精品视频在线观看视频| 国产精品久久久久久久久动漫| 欧美日韩一级片在线观看| 瑟瑟视频在线观看| 99久久精品国产毛片| 三级久久三级久久| 国产精品视频一二| 欧美日韩国产天堂| 国产精品无码无卡无需播放器| 91亚洲国产成人精品一区二区三| 日精品一区二区三区| 中文字幕在线观看一区| 91精品国产色综合久久久蜜香臀| 亚洲一级理论片| 制服丝袜av在线| 国产99精品国产| 日韩精品三区四区| 综合在线观看色| 欧美精品一区二区三区蜜臀| 欧美日韩中文字幕精品| 日韩av片在线免费观看| 国产精品久久久久久亚洲色| 国产a久久麻豆| 日韩1区2区日韩1区2区|