rpm包管理

rpm包管理

由于 RPM 是透過預先編譯打包成為 RPM 文件格式后,再加以安裝的一種方式,還能夠進行數據庫的記載。 所以 RPM 有以下的優點:

  1. RPM 內含已經編譯過的程序與配置文件等數據,可以讓用戶免除重新編譯的困擾;

  2. RPM 在被安裝前,會先檢查系統的硬盤容量、操作系統版本等,可避免檔案被錯誤安裝;

  3. RPM 檔案本身提供軟件版本信息、相依屬性軟件名稱、軟件用途說明、軟件所含檔案等信息,便于了解軟件;

  4. RPM 管理的方式使用數據庫記錄 RPM 檔案的相關參數,便于升級、移除、查詢和驗證。

在CentOS系統上使用rpm命令管理程序包無外乎:安裝、升級卸載、查詢、校驗、數據庫維護。

安裝

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

一般選項:

  • -i :install的意思

  • -v : verbose

  • -vv : 查看更完整的安裝信息畫面

  • -h : 以安裝信息欄顯示安裝進度,以#顯示程序包管理執行進度

常用:rpm  -ivh  包文件名(可以多個用空格分開,也可以直接從網絡上安裝)

普通用法
[root@localhost Packages]# rpm -ivh tree-1.6.0-10.el7.x86_64.rpm 
準備中...                          ################################# [100%]
正在升級/安裝...
   1:tree-1.6.0-10.el7                ################################# [100%]

從網上直接安裝
[root@www ~]# rpm -ivh http://website.name/path/pkgname.rpm

其它選項:

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

  • –nodeps:忽略依賴關系

  • –replacepkgs | replacefiles

  • –nosignature: 不檢查來源合法性

  • –nodigest:不檢查包完整性

  • –noscripts:不執行程序包腳本

    • %pre: 安裝前腳本; –nopre

    • %post: 安裝后腳本; –nopost

    • %preun: 卸載前腳本; –nopreun

    • %postun: 卸載后腳本; –nopostun
      rpm包管理

升級

語法1:rpm {-U|–upgrade} [install-options] PACKAGE_FILE…

語法2:{-F|–freshen} [install-options] PACKAGE_FILE…

rpm包管理

**rpm -Uvh PACKAGE_FILE …
rpm -Fvh PACKAGE_FILE …

而外的選項:

  –oldpackage:降級
  –force: 強行升級

注意:

(1) 不要對內核做升級操作;Linux支持多內核版本并存,因此,對直接安裝新版本內核
(2) 如果原程序包的配置文件安裝后曾被修改,升級時,新版本的提供的同一個配置文件并不會直接覆蓋老版本的配置文件,而把新版本的文件重命名(FILENAME.rpmnew)后保留

查詢

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

如果軟件包未安裝要查詢的話用 -qp選項

查詢已安裝軟件的信息參數:

  • -q  :僅查詢,后面接的軟件名稱是否有安裝;

  • -qa :列出所有的,已經安裝在本機 Linux 系統上面的所有軟件名稱;

  • -qi :列出該軟件的詳細信息 (information),包開發商、版本說明等;

  • -ql :列出該軟件所有的安裝后生成的文件所在完整文件名 (list);

  • -qc :列出該軟件的所有配置文件 (找出在 /etc/ 底下對應的文件名而已)

  • -qd :列出該軟件的所有說明文件文檔 (找出與 man 有關的檔案而已)

  • -qR :列出不該軟件有關的相依軟件所屬的檔案 (Required 的意思)

  • -qf :由后面接的文件名,查看指定的文件由哪個程序包安裝生成;

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

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

  • -q –changelog:查詢rpm包的changelog(更新日志)

  • –provides: 列出指定程序包所提供的CAPABILITY(功能);

查詢某個 RPM 檔案內含有的信息:

  • -qp [ icdlR ]:注意 -qp 后面接的所有參數以上面的說明一致。但用途僅在于找出某個 RPM 檔案內的信息,而非已安裝的軟件信息!注意!

rpm -qa |grep "" 用法

一般常用用法:

查看以tr開頭的已安裝文件

    [root@localhost Packages]# rpm -qa |grep "^tr"
    trousers-0.3.13-1.el7.x86_64
    tree-1.6.0-10.el7.x86_64
    tracker-1.2.6-3.el7.x86_64
    traceroute-2.0.19-5.el7.x86_64


查看是否安裝某個文件包

    [root@localhost Packages]# rpm -q gcc
    gcc-4.8.5-4.el7.x86_64

查看程序的配置文件

    [root@localhost Packages]# rpm -qc bash
    /etc/skel/.bash_logout
    /etc/skel/.bash_profile
    /etc/skel/.bashrc

若要成功安裝某程序包需要的文件

    [root@localhost Packages]# rpm -qR tree
    libc.so.6()(64bit)
    libc.so.6(GLIBC_2.14)(64bit)
    libc.so.6(GLIBC_2.2.5)(64bit)

查看某文件屬于哪個軟件

    [root@localhost Packages]# rpm -qf /etc/passwd
    setup-2.8.71-6.el7.noarch
方法適用于誤刪了某個文件恢復時用到

卸載:

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

一般: 我們直接 rpm -e 包名  就可以卸載了

普通校驗

含義

作用的方式是『使用 /var/lib/rpm 底下的數據庫內容來比對目前Linux 系統的環境下的所有軟件檔案 』用這個簡單的方法來驗證一下原本的文件系統吧!好讓你了解這一陣子到底是修改到哪些檔案數據了!

選項:

  • -V  :后面加的是軟件名稱,若該軟件所噸的檔案被更改過,才會列出來;

  • -Va :列出目前系統上面所有可能被更改過的檔案;

  • -Vp :后面加的是文件名,列出該軟件內可能被更改過的檔案;

  • -Vf :列出某個檔案是否被更改過~

結果說明:

S :(file Size differs) 檔案的容量大小是否被改變
 M :(Mode differs) 檔案的類型戒檔案的屬性 (rwx) 是否被改變?如是否可執行等參數已被改變
 5 :(MD5 sum differs) MD5 這一種挃紋碼的內容已經丌同
 D :(Device major/minor number mis-match) 裝置的主/次代碼已經改變
 L :(readLink(2) path mis-match) Link 路徑已被改變
 U :(User ownership differs) 檔案的所屬人已被改變
 G :(Group ownership differs) 檔案的所屬群組已被改變
 T :(mTime differs) 檔案的建立時間已被改變

數字簽名校驗

WHY:*rpm -V 驗證只能驗證軟件內的信息不 /var/lib/rpm/ 里面的數據庫信息而已,如果該軟件檔案所提供的數據本身就有問題,我們可以透過數字簽名來檢驗軟件的來源的!

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

完整性驗正:SHA256
來源合法性驗正:RSA

公鑰加密:

對稱加密:加密、解密使用同一密鑰;
非對稱加密:密鑰是成對兒的
public key: 公鑰,公開所有人
secret key: 私鑰, 不能公開

安裝一個 RPM 檔案時*:

  1. 首先你必須要先安裝原廠釋出的公鑰檔案;

  2. 實際安裝原廠的 RPM 軟件時, rpm 指令會去讀取 RPM 檔案的簽章信息,與本機系統內的簽章信息比對,

  3. 若簽章相同則予以安裝,若找不到相關的簽章信息時,則給予警告并停止安裝喔。

CentOS 7 的數字簽名位于 /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

(其他centos版本把最后數字改一下就是了)

由于不同版本 GPG 密鑰檔案放置的位置可能不同,不過檔名大多是以 GPG-KEY 來說明的, 因此你可以簡單的使用 locate 或 find、
來找尋,如以下的方式來搜尋即可:

[root@www ~]# locate GPG-KEY
[root@www ~]# find /etc -name 'GPG-KEY'

導入所需要公鑰:

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

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

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

密鑰的內容基本上都是使用 pubkey 作為軟件的名稱的,查看方法

[root@www ~]# rpm -qa | grep pubkey    —–先列出密鑰軟件名稱
gpg-pubkey-e8562897-459f07a4
[root@www ~]# rpm -qi gpg-pubkey-e8562897-459f07a4  ————-再以 -qi 的方式來查詢看看該軟件的信息

rpm數據庫 : /var/lib/rpm

數據庫重建:

語法: rpm {–initdb|–rebuilddb}

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

  • –rebuilddb:重建已安裝的包頭的數據庫索引目錄(更少)

注意:破壞庫是不能恢復的雖然有命令可以重建但里面的數據就沒了?。?!不能這么做?。?!

rpm包管理
雖然用 –initdb 能恢復目錄 但也丟失了數據,用 –rebuilddb 過恢復的更少! 所以不能刪庫??!

其他

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

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

如果rpm軟件被誤刪除,也可以這么安裝

rpm包管理

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

(0)
qzxqzx
上一篇 2016-08-21 20:47
下一篇 2016-08-21 20:47

相關推薦

  • 命令組合

    1 取出當前已登陸的用戶名 2 取出最后登錄用戶的相關信息 3 取出默認shell最多的的類型   4 轉移    [redsun@jiange root]$ sort -t: -k3 -n -r  /etc/passwd | sed -n "1,+3p" | tr 'a-z' …

    Linux干貨 2016-11-13
  • 端口轉發實例

    什么是端口轉發?      端口轉發(Port forwarding),有時被叫做隧道,是安全殼(SSH) 為網絡安全通信使用的一種方法。端口轉發是轉發一個網絡端口從一個網絡節點到另一個網絡節點的行為,其使一個外部用戶從外部經過一個被激活的NAT路由器到達一個在私有內部IP地址(局域網內部)上的一個端口。 為什么需要端口轉發? …

    2017-04-13
  • 三次握手,四次揮手

    TCP/IP協議的詳細信息參看《TCP/IP協議詳解》三卷本。 在談及TCP建立連接和釋放連接過程,先來簡單認識一下TCP報文段首部格式的的幾個名詞(這里只是簡單說明,具體請查看相關教程)下面是TCP報文格式圖:     序列號seq:占4個字節,用來標記數據段的順序,TCP把連接中發送的所有數據字節都編上一個序號,第一個字節的…

    2017-09-03
  • 第十一周作業

    1、詳細描述一次加密通訊的過程,結合圖示最佳。 一次通信加密過程: 發送方: 1.使用單向加密算法提取生成數據特征碼; 2.使用自己的私鑰加密特征碼附加在數據后面; 3.生成用于對稱加密的臨時密鑰; 4.用此臨時密鑰加密數據和已經使用私鑰加密后的特征碼; 5.使用接受方的公鑰加密此臨時密鑰,附加在對稱密鑰后的數據后方; 接受方: 1.使用自己的私鑰解密加密的…

    2017-10-02
  • N21沉舟17周作業

    1、結合圖形描述LVS的工作原理; NAT模型 NAT模型其實就是通過網絡地址轉換來實現負載均衡的,它的工作方式幾乎跟iptables 中的DNAT一模一樣的,NAT模型的工作方式: 1.用戶請求VIP(也就是是CIP請求VIP) 2,Director Server 收到用戶的請求后,發現源地址為CIP請求的目標地址為VIP,那么Dorector Serve…

    Linux干貨 2016-11-14
  • 0803課堂練習與作業

    1、當用戶xiaoming對/testdir 目錄無執行權限時,意味著無法做哪些操作? 不能添加在/testdir中增刪改文件或目錄 2、當用戶xiaoqiang對/testdir 目錄無讀權限時,意味著無法做哪些操作? 不能查看文件中的文件列表 3、當用戶wangcai 對/testdir 目錄無寫權限時,該目錄下的只讀文件file1是否可修改和刪除? 不…

    Linux干貨 2016-08-04

評論列表(1條)

  • 馬哥教育
    馬哥教育 2016-08-22 09:12

    文章總結的很全面,rpm管理工具中的查詢語句是常用的操作需要重復練習,熟練掌握。

欧美性久久久久