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

歡迎訪問 生活随笔!

生活随笔

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

linux

Linux下程序包管理工具RPM

發(fā)布時(shí)間:2025/4/9 linux 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Linux下程序包管理工具RPM 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

實(shí)驗(yàn)環(huán)境:

CentOS release 6.6 (Final) ?一臺(tái)

IP地址:172.16.249.230

?

RPM?是 Red Hat Package Manager 的縮寫,本意是Red Hat 軟件包管理,顧名思義是Red Hat 貢獻(xiàn)出來的軟件包管理;在CentOS 、Redhat、Fedora 、SuSE、YellowDog等主流發(fā)行版本,以及在這些版本基礎(chǔ)上二次開發(fā)出來的發(fā)行版采用;

?

?

一、RPM程序包管理的用途;

?

1、可以安裝、刪除、升級(jí)和管理軟件;當(dāng)然也支持在線安裝和升級(jí)軟件;

2、通過RPM包管理能知道軟件包包含哪些文件,也能知道系統(tǒng)中的某個(gè)文件屬于哪個(gè)軟件包;

3、可以在查詢系統(tǒng)中的軟件包是否安裝以及其版本;

4、作為開發(fā)者可以把自己的程序打包為RPM 包發(fā)布;

5、軟件包簽名GPG和MD5的導(dǎo)入、驗(yàn)證和簽名發(fā)布

6、依賴性的檢查,查看是否有軟件包由于不兼容而擾亂了系統(tǒng);

?

?

二、RPM 的使用權(quán)限

?

RPM軟件的安裝、刪除、更新只有root權(quán)限才能使用;對(duì)于查詢功能任何用戶都可以操作;如果普通用戶擁有安裝目錄的權(quán)限,也可以進(jìn)行安裝;

?

?

三、rpm 的一點(diǎn)簡(jiǎn)單用法;

?

我們除了軟件包管理器以外,還能通過rpm 命令來安裝;是不是所有的軟件包都能通過rpm 命令來安裝呢?不是的,文件以.rpm 后綴結(jié)尾的才行;有時(shí)我們?cè)谝恍┚W(wǎng)站上找到file.rpm ,都要用 rpm 來安裝;

?

一)初始化rpm 數(shù)據(jù)庫;

?

通過rpm 命令查詢一個(gè)rpm 包是否安裝了,也是要通過rpm 數(shù)據(jù)庫來完成的;所以我們要經(jīng)常用下面的兩個(gè)命令來初始化rpm 數(shù)據(jù)庫;

?

# rpm –initdb ? ? ?初始化數(shù)據(jù)庫

無論當(dāng)前是否已經(jīng)存在數(shù)據(jù)庫,都會(huì)直接重新建立和覆蓋現(xiàn)有數(shù)據(jù)庫

?

# rpm --rebuilddb ? 重新構(gòu)建 ? ?注:這個(gè)要花好長時(shí)間;

如果事先不存在數(shù)據(jù),則會(huì)新建,否則不會(huì)重建

注:這兩個(gè)參數(shù)是極為有用,有時(shí)rpm 系統(tǒng)出了問題,不能安裝和查詢,大多是這里出了問題;

?

二)RPM軟件包管理的查詢功能:

?

命令格式

1 rpm?{-q|--query}?[select-options]?[query-options]

?

RPM的查詢功能是極為強(qiáng)大,是極為重要的功能之一;舉幾個(gè)常用的例子,更為詳細(xì)的具體的,請(qǐng)參考#man rpm

?

1、對(duì)系統(tǒng)中已安裝軟件的查詢;

?

1)查詢系統(tǒng)已安裝的軟件;

語法:rpm -q 軟件名

舉例:

1 2 [root@LinuxHost?html]#?rpm?-q?zsh zsh-4.3.10-7.el6.x86_64

-q就是 --query ,中文意思是“問”,此命令表示的是,是不是系統(tǒng)安裝了zsh ;如果已安裝會(huì)有信息輸出;如果沒有安裝,會(huì)輸出zsh沒有安裝的信息;

?

查看系統(tǒng)中所有已經(jīng)安裝的包,要加 -a 參數(shù) ;

1 [root@LinuxHost?html]#?rpm?–qa

?

如果分頁查看,再加一個(gè)管道 |和more命令;

1 [root@LinuxHost?html]#?rpm?-qa?|more

在所有已經(jīng)安裝的軟件包中查找某個(gè)軟件,比如說 zsh ;可以用 grep 抽取出來;

1 2 [root@LinuxHost?html]#?rpm?-qa?|grep?zsh zsh-4.3.10-7.el6.x86_64

上面這條的功能和 rpm -q zsh 輸出的結(jié)果是一樣的;

?

2)查詢一個(gè)已經(jīng)安裝的文件屬于哪個(gè)軟件包;

語法 rpm -qf 文件名

注:文件名所在的絕對(duì)路徑要指出

舉例:

1 2 [root@LinuxHost?html]#?rpm?-qf?/bin/zsh zsh-4.3.10-7.el6.x86_64

?

3)查詢已安裝軟件包都安裝到何處;

語法:rpm -ql 軟件名 或 rpm rpmquery -ql 軟件名

舉例:

1 2 [root@LinuxHost?html]#?rpm?-ql?zsh? [root@LinuxHost?html]#?rpm?rpmquery?-ql?zsh

?

4)查詢一個(gè)已安裝軟件包的信息

語法格式: rpm -qi 軟件名

舉例:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 [root@LinuxHost?opt]#?rpm?-qi?zsh Name????????:?zsh??????????????????????????Relocations:?(not?relocatable) Version?????:?4.3.10????????????????????????????Vendor:?CentOS Release?????:?7.el6?????????????????????????Build?Date:?Mon?25?Nov?2013?01:40:59?AM?CST Install?Date:?Mon?24?Nov?2014?04:05:58?AM?CST??????Build?Host:?c6b9.bsys.dev.centos.org Group???????:?System?Environment/Shells?????Source?RPM:?zsh-4.3.10-7.el6.src.rpm Size????????:?5009102??????????????????????????License:?BSD Signature???:?RSA/SHA1,?Mon?25?Nov?2013?03:33:46?AM?CST,?Key?ID?0946fca2c105b9de Packager????:?CentOS?BuildSystem?<http://bugs.centos.org> URL?????????:?http://zsh.sunsite.dk/ Summary?????:?A?powerful?interactive?shell Description?: The?zsh?shell?is?a?command?interpreter?usable?as?an?interactive?login shell?and?as?a?shell?script?command?processor.??Zsh?resembles?the?ksh shell?(the?Korn?shell),?but?includes?many?enhancements.??Zsh?supports command?line?editing,?built-in?spelling?correction,?programmable command?completion,?shell?functions?(with?autoloading),?a?history mechanism,?and?more.

?

5)查看一下已安裝軟件的配置文件;

語法格式:rpm -qc 軟件名

舉例:

1 2 3 4 5 6 7 [root@LinuxHost?html]#?rpm?-qc?zsh /etc/skel/.zshrc /etc/zlogin /etc/zlogout /etc/zprofile /etc/zshenv /etc/zshrc

?

6)查看一個(gè)已經(jīng)安裝軟件的文檔安裝位置:

語法格式: rpm -qd 軟件名

舉例:

1 [root@LinuxHost?html]#?rpm?-qd?zsh

?

7)查看一下已安裝軟件所依賴的軟件包及文件;

語法格式: rpm -qR 軟件名

舉例:

1 [root@LinuxHost?html]#?rpm?-qR?zsh

?

查詢已安裝軟件的總結(jié):對(duì)于一個(gè)軟件包已經(jīng)安裝,我們可以把一系列的參數(shù)組合起來用;比如 rpm -qil ;比如:

1 [root@LinuxHost?html]#?rpm?-qil?zsh

?

?

2、對(duì)于未安裝的軟件包的查看:

?

查看的前提是您有一個(gè).rpm 的文件,也就是說對(duì)既有軟件file.rpm的查看等;

?

1)查看一個(gè)軟件包的用途、版本等信息;

語法: rpm -qpi file.rpm

舉例:

1 2 3 4 5 6 7 8 9 10 11 12 13 #?rpm?-qpi?SDL_image-1.2.12-1.x86_64.rpm? Name????????:?SDL_image????????????????????Relocations:?/usr? Version?????:?1.2.12????????????????????????????Vendor:?(none) Release?????:?1?????????????????????????????Build?Date:?Sat?21?Jan?2012?09:53:22?AM?CST Install?Date:?(not?installed)???????????????Build?Host:?localhost.localdomain Group???????:?System?Environment/Libraries???Source?RPM:?SDL_image-1.2.12-1.src.rpm Size????????:?246207???????????????????????????License:?LGPL Signature???:?(none) Packager????:?Hakan?Tandogan?<hakan@iconsult.com> Summary?????:?Simple?DirectMedia?Layer?-?Sample?Image?Loading?Library Description?: This?is?a?simple?library?to?load?images?of?various?formats?as?SDL?surfaces. This?library?supports?BMP,?PPM,?PCX,?GIF,?JPEG,?PNG,?and?TIFF?formats.

?

2)查看一件軟件包所包含的文件;

語法: rpm -qpl file.rpm

舉例:

1 2 3 4 5 6 7 [[root@LinuxHost?opt]#?rpm?-qpl?SDL_image-1.2.12-1.x86_64.rpm?? /usr/lib/libSDL_image-1.2.so.0 /usr/lib/libSDL_image-1.2.so.0.8.4 /usr/share/doc/SDL_image-1.2.12 /usr/share/doc/SDL_image-1.2.12/CHANGES /usr/share/doc/SDL_image-1.2.12/COPYING /usr/share/doc/SDL_image-1.2.12/README

3)查看軟件包的文檔所在的位置;

語法: rpm -qpd file.rpm

舉例:

1 2 3 4 [root@LinuxHost?opt]#?rpm?-qpd?SDL_image-1.2.12-1.x86_64.rpm /usr/share/doc/SDL_image-1.2.12/CHANGES /usr/share/doc/SDL_image-1.2.12/COPYING /usr/share/doc/SDL_image-1.2.12/README

?

?

三)軟件包的安裝、升級(jí)、刪除等;

?

1、安裝和升級(jí)一個(gè)rpm 包;

?

[root@LinuxHost opt]#rpm -vih file.rpm 注:這個(gè)是用來安裝一個(gè)新的rpm 包;

[root@LinuxHost opt]##rpm -Uvh file.rpm 注:這是用來升級(jí)一個(gè)rpm 包;

如果有依賴關(guān)系的,請(qǐng)解決依賴關(guān)系,其實(shí)軟件包管理器能很好的解決依賴關(guān)系,請(qǐng)看前面的軟件包管理器的介紹;如果您在軟件包管理器中也找不到依賴關(guān)系的包;那只能通過編譯他所依賴的包來解決依賴關(guān)系,或者強(qiáng)制安裝;

語法結(jié)構(gòu):

1 2 [root@LinuxHost?opt]#?rpm?-ivh?file.rpm?--nodeps?--force [root@LinuxHost?opt]#rpm?-Uvh?file.rpm?--nodeps?--force

更多的參數(shù),請(qǐng)查看#man rpm

?

安裝一個(gè)軟件程序包:

1 2 3 4 5 6 7 8 9 10 11 選項(xiàng)參數(shù): -h?????????顯示hash以#號(hào)顯示安裝速度 -v????????顯示安裝詳細(xì)信息,-vv??-vvv越多越詳細(xì) -i????????安裝包 --nodeps忽略依賴關(guān)系 --nodigest忽略完整性 --nosignature忽略來源合法性 --replacepkgs重新安裝包 --test????????測(cè)試安裝,而不執(zhí)行真正的安裝過程,dry?run模式 --prefix?NEWPATH指定程序安裝路徑(特定程序包) --oldpackeage降級(jí)安裝

?

舉例應(yīng)用:

安裝zsh:

1 2 3 [root@LinuxHost?Packages]#?rpm?-ivh?zsh-4.3.10-7.el6.x86_64.rpm? Preparing...????????????????###########################################?[100%] ????????package?zsh-4.3.10-7.el6.x86_64?is?already?installed

注:?--replacepkgs 參數(shù)是以已安裝的軟件再安裝一次;有時(shí)沒有太大的必要;

?

測(cè)試安裝參數(shù) --test ,用來檢查依賴關(guān)系;并不是真正的安裝;

1 2 3 [root@LinuxHost?Packages]#?rpm?-ivh?--test?zsh-4.3.10-7.el6.x86_64.rpm? Preparing...????????????????###########################################?[100%] ????????package?zsh-4.3.10-7.el6.x86_64?is?already?installed

?

重新安裝程序包:

1 2 3 [root@LinuxHost?Packages]#?rpm?-ivh?--replacepkgs?zsh-4.3.10-7.el6.x86_64.rpm? Preparing...????????????????###########################################?[100%] ???1:zsh????????????????????###########################################?[100%]

?

?

升級(jí)一個(gè)軟件程序包:

1 2 3 4 5 命令選項(xiàng) -U????????真正執(zhí)行升級(jí)操作,如果有較老程序則升級(jí),無包執(zhí)行安裝 -F????????如果有較老程序則升級(jí),否則,中止安裝 --oldpackage降級(jí)安裝 --force????????忽略沖突,強(qiáng)制執(zhí)行過程

?

升級(jí)一個(gè)程序包:

1 2 3 4 5 6 7 [root@LinuxHost?dvd]#?rpm?-qa?zsh zsh-4.3.10-7.el6.x86_64 [root@LinuxHost?dvd]#?rpm?-Uvh?zsh-4.3.10-8.el6_5.x86_64.rpm? Preparing...????????????????###########################################?[100%] ???1:zsh????????????????????###########################################?[100%] [root@LinuxHost?dvd]#?rpm?-qa?zsh zsh-4.3.10-8.el6_5.x86_64

?

由新版本降級(jí)為舊版本,要加 --oldpackage 參數(shù);

1 2 3 4 5 6 7 8 [root@LinuxHost?dvd]#?rpm?-qa?zsh zsh-4.3.10-8.el6_5.x86_64 [root@LinuxHost?dvd]#?cd?Packages/ [root@LinuxHost?Packages]#?rpm?-Uvh?--oldpackage?zsh-4.3.10-7.el6.x86_64.rpm? Preparing...????????????????###########################################?[100%] ???1:zsh???????????????????###########################################?[100%] [root@LinuxHost?Packages]#?rpm?-qa?zsh? zsh-4.3.10-7.el6.x86_64

?

注意:

1.不要對(duì)內(nèi)核執(zhí)行升級(jí)操作:Linux支持多版本內(nèi)核并存,因此,對(duì)新版本內(nèi)核可直接安裝。

2.如果源程序包的配置文件安裝后曾被改動(dòng),升級(jí)時(shí),新版本的配置文件并不會(huì)直接覆蓋老版本文件,而是把新版本的文件重命名(加后綴.rpmnew)后保留。

?

?

2、刪除一個(gè)rpm 包;

1 2 3 語法: rpm?{-e|--erase}?[--allmatches]?[--nodeps]?[--noscripts] [--notriggers]?[--test]?PACKAGE_NAME?...

?

首先您要學(xué)會(huì)查詢r(jià)pm 包 ;請(qǐng)看前面的說明;

[root@LinuxHost Packages]#rpm -e 軟件包名

?

舉例:我想移除zsh 包,完整的操作應(yīng)該是:

1 2 [root@LinuxHost?Packages]#?rpm?-e?zsh [root@LinuxHost?Packages]#?rpm?-qa?zsh

如果有依賴關(guān)系,您也可以用--nodeps 忽略依賴的檢查來刪除。但盡可能不要這么做,最好用軟件包管理器 systerm-config-packages 來刪除或者添加軟件;

1 [root@LinuxHost?Packages]#?rpm?-e?zsh?--nodeps

?

注意:如果包的配置文件安裝后曾被改動(dòng)過,卸載時(shí),此文件不會(huì)刪除,而是被重命名(原文件名加.rpmsave后綴)并保留。

?

?

四、導(dǎo)入簽名:

程序包來源合法性和完整性驗(yàn)證:

1 2 3 4 5 命令語法: rpm?--import?PUBKEY?... rpm?{-K|--checksig}?[--nosignature]?[--nodigest] PACKAGE_FILE?... [root@LinuxHost?Packages]#?rpm?--import?簽名文件

?

舉例:

獲取公鑰:RPM-GPG-KEY-CentOS-6

1 2 3 4 #rpm?--import?RPM-GPG-KEY-CentOS-6 #rpm??-K??Packages #?rpm?-K?zsh-4.3.10-7.el6.x86_64.rpm? zsh-4.3.10-7.el6.x86_64.rpm:?rsa?sha1?(md5)?pgp?md5?OK

關(guān)于RPM的簽名功能,詳情請(qǐng)參見 man rpm

?

五、RPM管理包管理器支持網(wǎng)絡(luò)安裝和查詢;

?

比如我們想通過 CentOS 6.6 的一個(gè)鏡像查詢、安裝軟件包;

地址:

http://mirrors.sohu.com/centos/6.6/os/x86_64/Packages/

舉例:

命令格式:

rpm 參數(shù) rpm包文件的http或者ftp的地址

查詢

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 [root@LinuxHost?Packages]#?rpm?-qpi?http://mirrors.sohu.com/centos/6.6/os/x86_64/Packages/zsh-html-4.3.10-7.el6.x86_64.rpm Name????????:?zsh-html?????????????????????Relocations:?(not?relocatable) Version?????:?4.3.10????????????????????????????Vendor:?CentOS Release?????:?7.el6?????????????????????????Build?Date:?Mon?25?Nov?2013?01:40:59?AM?CST Install?Date:?(not?installed)???????????????Build?Host:?c6b9.bsys.dev.centos.org Group???????:?System?Environment/Shells?????Source?RPM:?zsh-4.3.10-7.el6.src.rpm Size????????:?2993485??????????????????????????License:?BSD Signature???:?RSA/SHA1,?Mon?25?Nov?2013?03:33:46?AM?CST,?Key?ID?0946fca2c105b9de Packager????:?CentOS?BuildSystem?<http://bugs.centos.org> URL?????????:?http://zsh.sunsite.dk/ Summary?????:?Zsh?shell?manual?in?html?format Description?: The?zsh?shell?is?a?command?interpreter?usable?as?an?interactive?login shell?and?as?a?shell?script?command?processor.??Zsh?resembles?the?ksh shell?(the?Korn?shell),?but?includes?many?enhancements.??Zsh?supports command?line?editing,?built-in?spelling?correction,?programmable command?completion,?shell?functions?(with?autoloading),?a?history mechanism,?and?more. This?package?contains?the?Zsh?manual?in?html?format.

?

安裝

1 2 3 4 [root@LinuxHost?Packages]#?rpm?-ivh?http://mirrors.sohu.com/centos/6.6/os/x86_64/Packages/zsh-html-4.3.10-7.el6.x86_64.rpm Retrieving?http://mirrors.sohu.com/centos/6.6/os/x86_64/Packages/zsh-html-4.3.10-7.el6.x86_64.rpm Preparing...????????????????###########################################?[100%] ???1:zsh-html???????????????###########################################?[100%]

舉一反三吧;

?

六 、RPM包的命名規(guī)則和獲取途徑

命名規(guī)則

RPM包的一般格式為:

1 2 name-version-arch.rpm name-version-arch.src.rpm

?

name:軟件包名稱。

version:帶有主、次和修訂的軟件包版本。

arch:硬件平臺(tái)。硬件平臺(tái)包括了:i386、i486、i586、i686、x86_64、ppc、sparc、alpha

src.rpm:源代碼包。

?

以“openssl098e-0.9.8e-18.el6_5.2.x86_64.rpm”為例:

?

openssl098e:是軟件名稱。

0.9.8e:是軟件版本。

x86_64:是適用的硬件平臺(tái)。

?

其中還包含有特殊的名稱:

1、fcXX,elXX:表示這個(gè)軟件包的發(fā)行商版本,就像這里的fc18,說明這個(gè)軟件包是在Fedora 18下使用的。而openssl098e-0.9.8e-18.el6_5.2.x86_64.rpm表示這個(gè)軟件包是在RHEL 6.x(Red Hat Enterprise Linux)/CentOS 6.x下使用。

?

2、devel:表示這個(gè)RPM包是軟件的開發(fā)包,例如mysql-devel-5.1.73-3.el6_5.x86_64.rpm。

?

3、noarch:說明這樣的軟件包可以在任何平臺(tái)上安裝,不需要特定的硬件平臺(tái)。在任何硬件平臺(tái)上都可以運(yùn)行。

?

了解了RPM包的命名規(guī)則,看到一個(gè)RPM包就能知道它適用的環(huán)境了。

?

獲取包的途徑:按安全高低排名

1.系統(tǒng)發(fā)行版光盤或者官方站點(diǎn)服務(wù)器

鏡像站(sohu,163)

2.程序項(xiàng)目官方網(wǎng)站

3.第三方組織

Fedora-EPEL:epel

搜索引擎:

http://rpmfind.net

http://rpm.pbone.net

http://pkgs.org

4.自制程序包。

?

建議做包合法性驗(yàn)證:

來源合法性

包的完整性

?

轉(zhuǎn)載于:https://www.cnblogs.com/dyllove98/p/4123028.html

總結(jié)

以上是生活随笔為你收集整理的Linux下程序包管理工具RPM的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

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