軟件包管理工具—rpm命令總結

描述:

   RPM是RedHatPackageManager的縮寫,是由RedHat公司開發的軟件包安裝和管理程序,同Windows平臺上的Uninstaller比較類似。使用RPM,用戶可以自行安裝和管理Linux上的應用程序和系統工具。RPM可以讓用戶直接以binary方式安裝軟件包,并且可替用戶查詢是否已經安裝了有關的庫文件;在用RPM刪除程序時,它又會聰明地詢問用戶是否要刪除有關的程序。如果使用RPM來升級軟件,RPM會保留原先的配置文件,這樣用戶就不用重新配置新的軟件了。RPM保留一個數據庫,這個數據庫中包含了所有的軟件包的資料,通過這個數據庫,用戶可以進行軟件包的查詢.

功能:

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

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

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

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

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

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

使用權限:

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

包命名格式:

源碼包: name-VERSION.tar.gz|bz2|xz

      VERSION: major.minor.release

rpm包:name-version-arch.rpm | name-version-arch.src.rpm

wKioL1e9jNLiIPArAAB3CdBtKWg271.png

特殊標記:

1、fcXX,elXX:表示這個軟件包的發行商版本,bash-4.2.46-19.e17.x86_64.rpm表示這個軟件包是在RHEL 7.x(Red Hat Enterprise Linux)/CentOS 7.x下使用。

2、devel:表示這個RPM包是軟件的開發包,例如mysql-devel-5.1.52-1.el6_0.1.i686.rpm。

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

庫文件:

查看二進制程序所依賴的庫文件:

ldd /PATH/TO/BINARY_FILE

管理及查看本機裝載的庫文件:

ldconfig

/sbin/ldconfig -p: 顯示本機已經緩存的所有可用庫文件

名及文件路徑映射關系

配置文件: /etc/ld.so.conf, /etc/ld.so.conf.d/*.conf

緩存文件: /etc/ld.so.cache

程序包的來源

管理程序包的方式:

使用包管理器: rpm

使用前端工具: yum, dnf

獲取程序包的途徑:

(1) 系統發版的光盤或官方的服務器;

CentOS鏡像:

https://www.centos.org/download/

http://mirrors.aliyun.com

http://mirrors.sohu.com

http://mirrors.163.com

(2) 項目官方站點

(3) 第三方組織:

Fedora-EPEL:

Extra Packages for Enterprise Linux

Rpmforge:RHEL推薦,包很全

搜索引擎:

http://pkgs.org

http://rpmfind.net

http://rpm.pbone.net

https://sourceforge.net/

(4) 自己制作

注意:檢查其合法性: 來源合法性,程序包的完整性

常用命令組合:

 -ivh:安裝顯示安裝進度–install–verbose–hash

 -Uvh:升級軟件包–Update;

 -qpl:列出RPM軟件包內的文件信息[Query Package list];

 -qpi:列出RPM軟件包的描述信息[Query Package install package(s)];

 -qf:查找指定文件屬于哪個RPM軟件包[Query File];

 -Va:校驗所有的RPM軟件包,查找丟失的文件[View Lost];

 -e:刪除包

安裝:

rpm {-i|–install} [install-options] PACKAGE_FILE…

-v: verbose 詳細安裝過程

-h: 以#顯示程序包管理執行進度

rpm -ivh PACKAGE_FILE …

示例:

安裝html軟件包

wKiom1e6sSGxihbcAAAcWWsahRY196.png

rpm包安裝

[install-options]

–test: 測試安裝,但不真正執行安裝; dry run模式

wKiom1e6shjA03zlAAAxdKXNwSk308.png–nodeps:忽略依賴關系,不建議使用該選項

–replacepkgs | replacefiles

–nosignature: 不檢查來源合法性,不建議使用該選項

–nodigest:不檢查包完整性,不建議使用該選項

–noscipts:不執行程序包腳本片斷

%pre: 安裝前腳本; –nopre

%post: 安裝后腳本; –nopost

%preun: 卸載前腳本; –nopreun

%postun: 卸載后腳本; –nopostun

升級:

rpm {-U|–upgrade} [install-options] PACKAGE_FILE…

rpm {-F|–freshen} [install-options] PACKAGE_FILE…

upgrade:安裝有舊版程序包,則“升級”

如果不存在舊版程序包,則“安裝”

freshen:安裝有舊版程序包,則“升級”

如果不存在舊版程序包,則不執行升級操作

rpm -Uvh PACKAGE_FILE …

rpm -Fvh PACKAGE_FILE …

–oldpackage:降級

–force: 強行升級

升級注意項

(1) 不要對內核做升級操作; Linux支持多內核版本并存,因此,對直接安裝新版本內核

(2) 如果原程序包的配置文件安裝后曾被修改,升級時,新版本的提供的同一個配置文件并不會直接覆蓋老版本的配置文件,而把新版本的文件重命名(FILENAME.rpmnew)后保留

包查詢

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

[root@localhost Packages]# rpm -q tree    查詢tree包是否已安裝
tree-1.6.0-10.el7.x86_64

-a: 所有包

-f: 查看指定的文件由哪個程序包安裝生成

[root@localhost Packages]# rpm -qf /usr/share/doc/tree-1.6.0    
tree-1.6.0-10.el7.x86_64

-p rpmfile:針對尚未安裝的程序包文件做查詢操作;

–whatprovides CAPABILITY:查詢指定的CAPABILITY由哪個包所提供

–whatrequires CAPABILITY:查詢指定的CAPABILITY被哪個包所依賴

rpm2cpio 包文件|cpio –itv 預覽包內文件

rpm2cpio 包文件|cpio –id “ *.conf” 釋放包內文件

包查詢

[query-options]

–changelog:查詢rpm包的changelog

-c: 查詢程序的配置文件

-d: 查詢程序的文檔

-i: information

-l: 查看指定的程序包安裝后生成的所有文件;

–scripts:程序包自帶的腳本片斷

-R: 查詢指定的程序包所依賴的CAPABILITY;

–provides: 列出指定程序包所提供的CAPABILITY;

包查詢

查詢用法:

-qi PACKAGE, -qf FILE, -qc PACKAGE, -ql PACKAGE, -qd PACKAGE,-qpi PACKAGE_FILE, -qpl PACKAGE_FILE, …-qa

卸載:

rpm {-e|–erase} [–allmatches] [–nodeps] [–noscripts] [–notriggers] [-test]PACKAGE_NAME

包校驗

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

S file Size differs   文件的大小是否改變

M Mode differs (includes permissions and file type)  文件的類型或屬性是否改變

5 digest (formerly MD5 sum) differs   校驗碼的內容是否改變

D Device major/minor number mismatch  設備的主/次代碼是否改變

L readLink(2) path mismatch  Link路徑改變

U User ownership differs  文件的所有者是否改變

G Group ownership differs  文件的所屬組是否改變

T mTime differs   文件的創建時間是否改變

P capabilities differ 

包校驗

包來源合法性驗正及完整性驗正:

完整性驗正: SHA256

來源合法性驗正: RSA

公鑰加密:

對稱加密:加密、解密使用同一密鑰;

非對稱加密:密鑰是成對兒的

public key: 公鑰,公開所有人

secret key: 私鑰, 不能公開

導入所需要公鑰:

rpm -K|checksig rpmfile 檢查包的完整性和簽名

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

CentOS 7發行版光盤提供: RPM-GPG-KEY-CentOS-7

rpm -qa gpg-pubkey*

rpm數據庫

數據庫重建:

/var/lib/rpm

rpm {–initdb|–rebuilddb}

initdb: 初始化    如果事先不存在數據庫,則新建之否則,不執行任何操作

rebuilddb:重建    無論當前存在與否,直接重新創建數據庫

總結:

一、刪除rpm包后利用本地光盤恢復rpm包的實驗的步驟:(以CentOS 7為例,CentOS 6的方法類似)

1,rpm -e rpm –nodeps (在執行此操作前先做快照);reboot

2,光盤啟動,進入救援模式

   Centos 6

  df

  mkdir /mnt/cdrom  

  mount /dev/sr0 /mnt/cdrom  (執行此操作前確保光盤處于正在使用狀態)

   Cenots 7

3, df (查看光盤是否掛載)

4,rpm -ivh /run/../Package/rpm-4…*.rpm  –root=/mnt/sysimage

5,reboot

wKiom1e8SkyTsj-kAAAUTxvWDqg783.png

wKioL1e8SpLR9DB2AAAO2kdwqxI001.png

wKiom1e8SreyY_TXAAALMAHTpSA123.png

wKioL1e8SxiCWYtsAAAeo0PgNy8989.png

wKioL1e8SzuDwAcSAAA4c5ToDN0683.png

wKiom1e8S1-w29-BAAARt_7dBD0774.png

wKioL1e8S5bBuVSLAAAYOvHVJpY805.png

1,rpm解決不了軟件包之間的依賴性

2,常用組合選項:

  -ivh:安裝顯示安裝進度–install–verbose–hash

  -Uvh:升級軟件包–Update;

  -qpl:列出RPM軟件包內的文件信息[Query Package list];

  -qpi:列出RPM軟件包的描述信息[Query Package install package(s)];

  -qf:查找指定文件屬于哪個RPM軟件包[Query File];

  -Va:校驗所有的RPM軟件包,查找丟失的文件[View Lost];

  -e:刪除包

3,常用參數:

 Install/Upgrade/Erase options:

  -i, –install                     install package(s)

  -v, –verbose                     provide more detailed output

  -h, –hash                        print hash marks as package installs (good with -v)

  -e, –erase                       erase (uninstall) package

  -U, –upgrade=+      upgrade package(s)

  --replacepkge                    無論軟件包是否已被安裝,都強行安裝軟件包

  –test                            安裝測試,并不實際安裝

  –nodeps                          忽略軟件包的依賴關系強行安裝

  –force                           忽略軟件包及文件的沖突

 Query options (with -q or –query):

  -a, –all                         query/verify all packages

  -p, –package                     query/verify a package file

  -l, –list                        list files in package

  -d, –docfiles                    list all documentation files

  -f, –file                        query/verify package(s) owning file

作業:

1,刪除kernel包后,無法啟動,并恢復之 (CentOS 7為例)

wKioL1e8_bKSXZqEAAAQqgTjbxU591.png

wKioL1e8_bOi7DtbAAAOSwE_Vgk518.png

wKiom1e8_bOCZ2YfAAAN5Mon9jE053.png

wKioL1e8_bPxMp0HAAAN5gB5mSc565.png

wKiom1e8_bSQbjJxAAAW4Pl7aqg196.png

wKioL1e8_bSj3O1CAAAL5rH15U8252.png

wKiom1e8_bXT84mBAAAlpUpi_bg718.png

wKioL1e8_bXQE18TAAAUiQasjOA982.png

wKiom1e8_bWhDygKAAA0bOW53TA217.png

wKioL1e8_bbjCslUAAAW4H99nKw905.png

原創文章,作者:pingsky,如若轉載,請注明出處:http://www.www58058.com/41229

(0)
pingskypingsky
上一篇 2016-08-29 08:45
下一篇 2016-08-29 08:45

相關推薦

  • 馬哥教育網絡班22期+第3周課程練習

    1、列出當前系統上所有已經登錄的用戶的用戶名,注意:同一個用戶登錄多次,則只顯示一次即可。 [root@localhost ~]# w | tail -n+3 | cut -d" " -f1 | sort |&…

    Linux干貨 2016-08-29
  • linux下邏輯卷管理LVM

    LVM:邏輯卷管理 LVM這個技術就是把底層的存儲設備組成一個卷組,底層存儲設備的存儲空間會變成一個個PE(盤區,大小為2的n次方),這個卷組里就是一個個的PE,然后,這個卷組會重新分區,這些分區就為邏輯卷,這些邏輯卷都是由卷組里分配的PE組成。 關于LVM里的命令: pv的命令: pvcreate pvs pvdisplay pvscan pvremove…

    Linux干貨 2015-08-04
  • B-樹和B+樹的應用:數據搜索和數據庫索引

    B-樹 1 .B-樹定義 B-樹是一種平衡的多路查找樹,它在文件系統中很有用。 定義:一棵m 階的B-樹,或者為空樹,或為滿足下列特性的m 叉樹:⑴樹中每個結點至多有m 棵子樹;⑵若根結點不是葉子結點,則至少有兩棵子樹; ⑶除根結點之外的所有非終端結點至少有[m/2] 棵子樹;⑷所有的非終端結點中包含以下信息數據:    &nb…

    Linux干貨 2015-07-30
  • 第八周

    1、寫一個腳本,使用ping命令探測172.16.250.1-172.16.250.254之間的所有主機的在線狀態;      在線的主機使用綠色顯示;      不在線的主使用紅色顯示; #!/bin/bash # for i in 172.16.250.{…

    Linux干貨 2017-05-23
  • 用戶管理

    用戶管理 用戶通過uid來識別,用戶的uid是全局唯一,Linux用戶分三大類: 用戶類別可以分為 管理員 系統用戶 普通用戶 ——管理員的id為0,系統用戶的id為1-499,一般用戶的id為500- 組也是一樣(centos6.9和centos7.3 id編號有所不同)上述是centos6.9的id編號。 管理員賬戶:root,可…

    2017-06-01
  • 作業用戶和組管理

    1、創建用戶gentoo,附加組為bin和root,默認shell為 /bin/csh,注釋信息為"Gentoo Distribution" 首先來分析下題目,創建一個gentoo用戶,那我們這時候就想到了useradd命令,不錯,就是這個命令,創建用戶gentoo時會默認創建主組gentoo,那么想同時將用戶gentoo加到root,b…

    Linux干貨 2016-08-03
欧美性久久久久