日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

Linux下程序包管理工具RPM

發布時間:2025/4/9 52 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Linux下程序包管理工具RPM 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

實驗環境:

CentOS release 6.6 (Final) ?一臺

IP地址:172.16.249.230

?

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

?

?

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

?

1、可以安裝、刪除、升級和管理軟件;當然也支持在線安裝和升級軟件;

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

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

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

5、軟件包簽名GPG和MD5的導入、驗證和簽名發布

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

?

?

二、RPM 的使用權限

?

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

?

?

三、rpm 的一點簡單用法;

?

我們除了軟件包管理器以外,還能通過rpm 命令來安裝;是不是所有的軟件包都能通過rpm 命令來安裝呢?不是的,文件以.rpm 后綴結尾的才行;有時我們在一些網站上找到file.rpm ,都要用 rpm 來安裝;

?

一)初始化rpm 數據庫;

?

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

?

# rpm –initdb ? ? ?初始化數據庫

無論當前是否已經存在數據庫,都會直接重新建立和覆蓋現有數據庫

?

# rpm --rebuilddb ? 重新構建 ? ?注:這個要花好長時間;

如果事先不存在數據,則會新建,否則不會重建

注:這兩個參數是極為有用,有時rpm 系統出了問題,不能安裝和查詢,大多是這里出了問題;

?

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

?

命令格式

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

?

RPM的查詢功能是極為強大,是極為重要的功能之一;舉幾個常用的例子,更為詳細的具體的,請參考#man rpm

?

1、對系統中已安裝軟件的查詢;

?

1)查詢系統已安裝的軟件;

語法:rpm -q 軟件名

舉例:

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

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

?

查看系統中所有已經安裝的包,要加 -a 參數 ;

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

?

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

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

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

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

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

?

2)查詢一個已經安裝的文件屬于哪個軟件包;

語法 rpm -qf 文件名

注:文件名所在的絕對路徑要指出

舉例:

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)查詢一個已安裝軟件包的信息

語法格式: 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)查看一個已經安裝軟件的文檔安裝位置:

語法格式: rpm -qd 軟件名

舉例:

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

?

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

語法格式: rpm -qR 軟件名

舉例:

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

?

查詢已安裝軟件的總結:對于一個軟件包已經安裝,我們可以把一系列的參數組合起來用;比如 rpm -qil ;比如:

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

?

?

2、對于未安裝的軟件包的查看:

?

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

?

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

語法: 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

?

?

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

?

1、安裝和升級一個rpm 包;

?

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

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

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

語法結構:

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

更多的參數,請查看#man rpm

?

安裝一個軟件程序包:

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

?

舉例應用:

安裝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 參數是以已安裝的軟件再安裝一次;有時沒有太大的必要;

?

測試安裝參數 --test ,用來檢查依賴關系;并不是真正的安裝;

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%]

?

?

升級一個軟件程序包:

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

?

升級一個程序包:

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

?

由新版本降級為舊版本,要加 --oldpackage 參數;

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.不要對內核執行升級操作:Linux支持多版本內核并存,因此,對新版本內核可直接安裝。

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

?

?

2、刪除一個rpm 包;

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

?

首先您要學會查詢rpm 包 ;請看前面的說明;

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

?

舉例:我想移除zsh 包,完整的操作應該是:

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

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

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

?

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

?

?

四、導入簽名:

程序包來源合法性和完整性驗證:

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

關于RPM的簽名功能,詳情請參見 man rpm

?

五、RPM管理包管理器支持網絡安裝和查詢;

?

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

地址:

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

舉例:

命令格式:

rpm 參數 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包的命名規則和獲取途徑

命名規則

RPM包的一般格式為:

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

?

name:軟件包名稱。

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

arch:硬件平臺。硬件平臺包括了: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:是適用的硬件平臺。

?

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

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

?

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

?

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

?

了解了RPM包的命名規則,看到一個RPM包就能知道它適用的環境了。

?

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

1.系統發行版光盤或者官方站點服務器

鏡像站(sohu,163)

2.程序項目官方網站

3.第三方組織

Fedora-EPEL:epel

搜索引擎:

http://rpmfind.net

http://rpm.pbone.net

http://pkgs.org

4.自制程序包。

?

建議做包合法性驗證:

來源合法性

包的完整性

?

轉載于:https://www.cnblogs.com/dyllove98/p/4123028.html

總結

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

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。