RPM包管理功能全解

RPM包管理總結node

1、       簡介數據庫

RPM全名是redhatpackage manage ,是用來管理軟件的各類操做,包括安裝、更新、刪除、查詢、認證。它最大的特色是將軟件事先編譯,而後打包成爲RPM機制的包文件,而且包中記錄了此軟件在安裝時須要的其餘依賴軟件。在安裝時RPM會根據記錄比較本地主機數據庫中的記錄是否知足依賴,若知足則安裝,而且把此軟件的信息也寫入數據庫,不知足則不予安裝。centos

                                                 

2、       RPM包命名格式服務器

RPM包分爲主包和子功能包架構

主包:name-version-release.(os).arch.rpmide

子包:name-function-version-release.(os).arch.rpm測試

 

name:包名ui

version:源碼的版本號,version的格式爲major.minor.release,major源代碼的主版本號、minor爲次版本號、release爲源代碼的發行次數搜索引擎

release:rpm包的發行號阿里雲

os:操做系統(無關緊要)

arch:硬件架構,有i38六、i48六、i58六、i68六、x86_6四、powerpc等,其中noarch指無硬件架構限制

function:說明子包的功能特性

 

3、       RPM包的獲取途徑

一、系統光盤或者或者官方文件服務器或者各個鏡像站點

http://mirrors.aliyun.com       阿里雲鏡像

http://mirrors.sohu.com        搜狐鏡像

http://mirrors.163.com           網易鏡像

二、項目的官方站點

三、第三方組織

EPEL:ExtraPackages for Enterprise Linux(企業版Linux附加軟件包)

搜索引擎

        http://pkgs.org

        http://rpmfind.net

        http://rpm.pbone.net        

 

4、       rpm命令的使用

rpm命令按照用途能夠分爲 安裝、升級、卸載、查詢、校驗、數據庫維護這六個區塊,下面咱們就對各個區塊的經常使用使用方法進行說明

一、安裝

rpm {-i|--install} [install-option] PACKAGE_FILE(包完整文件名)…

-i或者—install爲安裝選項,通常會配合-v、-h參數一同使用。-v爲顯示具體的安裝信息,-h爲顯示安裝進度。

[install-option] 爲安裝選項下具體功能選項,經常使用的有

--nodeps

安裝時忽略軟件的依賴關係強制安裝

--nodigest

安裝時不驗證包數據的完整性

--nosignature

安裝時不驗證包的數字簽名即不驗證包的來源合法性

--noscripts

禁止軟件在安裝前或後自動執行某些腳本

--replacefiles

若是在安裝時遇到某個文件已經安裝,則覆蓋該文件

--replacepkgs

若是在安裝時遇到該軟件已經安裝,則覆蓋安裝

--force

強制安裝,--replacefiles和—replacepkgs的綜合體

--justdb

只更新軟件在數據庫中的信息

--test

不安裝只是測試軟件可否安裝到當前環境,若不能會給出提示

--prefix

將軟件安裝到想要的路徑中,後面接路徑名

 

二、更新

rpm {-U|--upgrade} [install-options]PACKAGE_FILE(包完整文件名) ...

rpm {-F|--freshen} [install-options]PACKAGE_FILE(包完整文件名) ...

同安裝同樣,更新也會和-h、-v選項一同使用

-Uvh

後面接的軟件若不存在,則予以安裝,存在則更新

-Fvh

後面接的軟件若不存在,則不安裝,存在則更新

 

三、卸載

rpm {-e|--erase} [erase-option] PACKAGE_NAME(已安裝的軟件名) ...

 

[erase-option]

--allmatches

卸載全部匹配後面接的軟件名的程序包

--nodeps

忽略依賴關係,強制卸載。但卸載後依賴此軟件的其餘軟件會不能使用

--noscripts

在卸載過程前或後不執行任何腳本

--test

只測試,不真正卸載

 

 

四、查詢

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

rpm在查詢時是查詢/var/lib/rpm這個數據庫中的信息,而且rpm還能夠查詢未安裝的rpm文件內的信息

 

[query-option]

-i

列出該軟件的詳細信息

-l

列出軟件安裝生成的全部文件列表

-c

列出該軟件的配置文件

-d

列出該軟件的說明文件

-R

查詢該軟件的依賴關係

-s

列出軟件包中全部文件的狀態

--provides

列出這個軟件包提供的功能

--scripts

列出這個軟件包在安裝或卸載先後能夠運行的腳本

--changelog

顯示軟件包的歷史更改信息

 

[select-options]

-a

列出全部已經安裝的軟件

-f FILE

後面接文件名,查詢該文件屬於哪一個程序

--whatprovides CAPABILITY

查詢指定的CAPABILITY由哪一個程序包提供

--whateequires CAPABILITY

查詢哪些程序包依賴此CAPABILITY

 

[root@jojohyj ~]# rpm-q --whatprovides zsh 由程序名查找rpm包名

zsh-4.3.11-4.el6.centos.2.x86_64

 

五、校驗

rpm {-V|--verify} [select-options] [verify-options]

 

[verify-options]

--nodeps

不驗證包的依賴關係

--nodigest

不驗證包的完整性

--nosignature

不驗證包的來源可靠性

-f FILE

驗證某個文件的完整性

 

通常咱們校驗時都最好都檢查下,因此直接使用rpm -V package_name 便可。

校驗後無任何顯示輸出,說明包的完整性;若是有變化,會顯示具體的變化項目

S:文件容量被改變

M:文件屬性被改變

5:MD5和被改變,即數據的內容被改變

D:設備的主、次代碼被改變

L:link路徑被改變

U:文件屬主被改變

G:文件屬組被改變

T:文件的修改時間被改變

P:功能被改變

 

[root@jojohyj ~]# rpm-V logrotate

..5....T.  c /etc/logrotate.conf

 顯示logrotate這個程序中的/etc/logrotate.conf這個文件的數據內容和修改時間有過變更

 

5、       rpm包來源合法性及包完整性驗證機制

rpm包的製做者經過單向加密技術提取出包數據的特徵碼,特徵碼用於確保包數據的完整性,若是包中數據被改動,那特徵碼也必定會發生改變。以後包製做者使用非對稱加密技術,利用其中的私鑰對以前產生的特徵碼進行加密,此加密被稱爲數字簽名,並公佈與私鑰對應的公鑰給下載者,因爲公鑰只能解密對應的私鑰,若數字簽名被改動,則公鑰不能解密,說明下載來源出現問題,從而保證了rpm包的來源合法性。以後下載者經過一樣的單向加密技術對rpm包提取特徵碼,若是提取出的特徵碼和原特徵碼一致,就說明rpm包中的數據沒有被改動過,從而保證了rpm包的數據完整性

 

導入包製做者的公鑰,這裏使用的是centos7的公鑰位置

rpm –import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

對於其餘版本的GPG密鑰位置,咱們能夠對GPG-KEY進行搜索位置來肯定後再安裝

find /etc -name 「*GPG-KEY*」 或者 locate GPG-KEY

導入完成後,咱們能夠查看密鑰的具體軟件名稱和它的基本信息

 [root@jojohyj ~]# rpm -qa | grep pubkey 查找安裝後的公鑰軟件名稱

gpg-pubkey-f4a80eb5-53a7ff4b

[root@jojohyj ~]# rpm -qigpg-pubkey-f4a80eb5-53a7ff4b  查詢公鑰軟件的信息

Name        : gpg-pubkey

Version     : f4a80eb5

Release     : 53a7ff4b

Architecture: (none)

Install Date: Tue 30 May 2017 08:23:05 PM CST

Group       : Public Keys

Size        : 0

License     : pubkey

Signature   : (none)

Source RPM  : (none)

Build Date  : Mon 23 Jun 201406:19:55 PM CST

Build Host  : localhost

Relocations : (not relocatable)

Packager    : CentOS-7 Key(CentOS 7 Official Signing Key) <security@centos.org>

Summary     : gpg(CentOS-7 Key(CentOS 7 Official Signing Key) <security@centos.org>)

 

咱們在安裝rpm包時,會自動執行驗證簽名,咱們也能夠手動驗證

rpm -K /path/to/rpmpackage_file

[root@jojohyj ~]# rpm -K zsh-5.0.2-28.el7.x86_64.rpm

zsh-5.0.2-28.el7.x86_64.rpm: rsa sha1 (md5) pgp md5 OK 簽名沒有問題

 

[root@jojohyj ~]# rpm -K zsh-4.3.11-4.el6.centos.2.x86_64.rpm

zsh-4.3.11-4.el6.centos.2.x86_64.rpm: RSA sha1 ((MD5) PGP) md5 NOT OK (MISSING KEYS:(MD5) PGP#c105b9de) 公鑰沒有安裝,因此檢查簽名有問題

 

 

6、       rpm數據庫重建

經過rpm 命令查詢一個rpm 包是否安裝了,也是要經過rpm 數據庫來完成的;有時rpm 系統出了問題,不能安裝和查詢,可能會是數據庫出現問題,可使用下面命令重建

rpm --initdb:若是事先沒有數據庫,則會新建一個,若是已經存在數據庫則不進行任何操做

rpm –rebuilddb:從新構建數據庫,會覆蓋原有數據庫

相關文章
相關標籤/搜索