Linux 筆記分享十三:RPM 命令管理

yuanshang發表於2019-01-08

1、關於光碟中rpm包的位置

Linux安裝光碟基本以rpm包進行系統安裝

  • 位置
/mnt/cdrom/Packages

2、命令規則

httpd-2.2.15-15.el6.centos.i686.rpm

httpd: 軟體包名

2.2.15: 軟體版本

15: 軟體釋出次數

el6.centos: 適合的Linux平臺

i686: 適合的硬體平臺

rpm: rpm副檔名

3、RPM包的依賴性

  • 樹形依賴: a->b->c

安裝順序,c->b->a

  • 環形依賴:a->b->c->a

安裝方法,把a、b、c全部放到一個shell命令中安裝

  • 模組依賴

就是一個rpm包依賴另一個rpm包裡面的某個檔案

不知道另一個rpm包叫什麼哦

想知道另一個rpm包叫什麼,查下面的網站

www.rpmfind.net

1、包全名和包名

  • 包全名

操作的包是沒有安裝的軟體包時,使用包全名。而且要注意路徑

  • 包名

操作已經安裝的軟體包時,使用包名,是搜尋/var/lib/rpm/中的資料庫

2、安裝

rpm -ivh 包全名
  • 選項

-i: 安裝

-v: 顯示詳細資訊

-h: 顯示進度

  • 操蛋

rpm安裝真尼瑪扯,打死也不用

雖然用yum代替rpm安裝挺好,但是沒有查詢和校驗命令,所以rpm還是有存在理由的

yum是rpm的線上安裝,解決了依賴問題

1、升級

rpm -Uvh 包全名
  • 選項

-U: 升級

其實和安裝沒什麼區別

2、解除安裝

rpm -e 包名
  • 選項

-e: 解除安裝

  • 注意

這時候打包名,就不需要路徑了

解除安裝也需要依賴性

1、查詢包是否安裝

rpm -q 包名

2、查詢所有已經安裝的rpm包

rpm -qa

例如:

rpm -qa | grep httpd

3、查詢安裝包的詳細資訊

rpm -qi 包名

4、查詢未安裝包的詳細資訊

rpm -qip 包全名

5、查詢包中檔案的位置

rpm -ql 包名

6、RPM包預設安裝位置

路徑 檔案型別
/etc/ 配置檔案安裝目錄
/usr/bin/ 可執行的命令安裝目錄
/usr/lib/ 程式所用的函式庫儲存位置
/usr/share/doc 基本的軟體使用手冊儲存位置
/usr/share/man 幫助檔案儲存位置

7、查詢未安裝包將要安裝的位置

rpm -qlp 包全名

8、查詢系統某個檔案屬於哪個rpm包

rpm -qf 系統檔名

9、查詢安裝包的依賴

rpm -qR 包名

10、查詢未安裝包的依賴

rpm -qRp 包全名

1、校驗

rpm -V 包名

例如:

rpm -V httpd
  • 關於返回格式

httpd的配置檔案被修改時的返回格式

S.5....T.  c  /etc/httpd/conf/httpd.conf
  • S.5....T.的含義

S: 檔案大小是否被改變

M: 檔案型別或檔案的許可權是否被改變

5: 檔案MD5校驗是否有改變(可以看成檔案內容是否改變)

D: 裝置主從程式碼是否改變

L: 檔案路徑是否改變

U: 檔案的屬主(所有者)是否改變

G: 檔案的屬組是否被改變

T: 檔案的修改時間是否改變

  • c的含義

c: 配置檔案

d: 普通檔案

g: 鬼檔案,很少見,就是該檔案不應該被包含在rpm包中

L: 授權檔案

r: 描述檔案

2、RPM包中檔案提取

rpm2cpio 包全名 | cpio -idv .檔案絕對路徑
  • 解釋

rpm2cpio: 將rpm包轉換為cpio格式的命令

cpio: 是一個標準工具,它用於建立軟體檔案檔案和從檔案檔案中提取檔案

3、cpio

cpio 選項 < [檔案|裝置]
  • 選項

-i: copy-in模式,還原

-d: 還原時自動建立目錄

-v: 顯示還原過程

4、一個場景,假設ls命令不小心刪掉了

  • 第一、在其它系統中,查ls屬於哪個包
rpm -qf /bin/ls
  • 第二、提取檔案(在家目錄中提取)
rpm2cpio /mnt/cdrom/Packages/coreutils-8.4-19.el6.i686.rpm | cpio -idv ./bin/ls
  • 第三步、在家目錄下把檔案放入原位置
cp /root/bin/ls /bin/
本作品採用《CC 協議》,轉載必須註明作者和本文連結
我們是一群被時空壓迫的孩子。 ---- 愛因斯坦

相關文章