天天看點

Linux RPM管理RPM管理

文章目錄

  • RPM管理
    • Linux軟體包介紹
      • Linux軟體包的種類
      • 源碼包
        • 源碼包缺點
        • 安裝位置
      • 二進制包
        • RPM包優點
        • RPM缺點
        • 安裝預設位置
    • RPM軟體包簡介
    • RPM文法
    • RPM軟體包管理
      • 安裝RPM軟體包
        • 安裝軟體包
        • 安裝軟體并顯示詳細資訊和水準進度條
        • 測試安裝,并不實際安裝
        • 安裝以soft開頭的軟體包
        • 在已經安裝了的情況下,依舊重新安裝軟體包
        • 忽略軟體包的依賴關系,安裝軟體包
        • 忽略軟體包的依賴關系,強制安裝軟體包
        • 直接從HTTP網絡位址中安裝軟體包
      • 查詢軟體包
        • 檢視系統中所有安裝的軟體包
        • 查詢系統中是否已經安裝指定的軟體包
        • 查找是否安裝soft相關的軟體包
        • 檢視一個檔案屬于哪個PRM包
        • 擷取RPM包的說明資訊
        • 查詢指定該軟體包所包含的檔案清單
      • 更新RPM包和重新整理RPM軟體包
        • 更新軟體包
        • 重新整理軟體包
      • 解除安裝RPM軟體包
        • 解除安裝指定軟體包
        • 删除軟體包及其軟體包依賴項
      • RPM資料庫
        • 初始化RPM資料庫
        • 從安裝軟體中重建RPM資料資訊
    • 雜項

RPM管理

Linux軟體包介紹

在linux系統中,如果要完成一些功能,則需要安裝軟體來支援,安裝軟體就需要軟體包,接下來筆者帶你了解什麼是軟體包!

Linux軟體包的種類

在Linux中使用的軟體包大緻分為兩類,一類是二進制的軟體包,還有一類是含有源碼的軟體包;

  • 源碼包

    :源碼包是程式設計人員寫的程式代碼檔案,不能夠直接在計算機上運作;源碼包需要進行編譯,程式設計二進制的軟體包後才能安裝使用;源碼包一般是壓縮後的檔案;源碼包不能直接執行,需編譯,可對源碼進行修改;
  • 二進制包

    (CentOS系統中一般指rpm包): 二進制包指的是已經安裝好了的軟體包,隻需要直接安裝就可以使用;二進制包不需要編譯,直接下載下傳即可使用;二進制包需要根據自己的計算機CPU和作業系統去選擇合适的包來安裝;二進制包可以直接執行,不需要編譯;

源碼包

源碼包是程式設計人員寫的程式代碼檔案,不能夠直接在計算機上運作;源碼包需要進行編譯,程式設計二進制的軟體包後才能安裝使用;源碼包一般是壓縮後的檔案;源碼包不能直接執行,需編譯,可對源碼進行修改;

####源碼包優點

  • 開源,源碼可見,且可以修改
  • 配置更加靈活,可以自由選擇所需的功能
  • 軟體是編譯安裝,是以更加适合自己的系統,更加穩定和高效
  • 解除安裝友善,隻要将配置的安裝的檔案夾删掉即可,不能殘留任何垃圾

源碼包缺點

  • 安裝過程步驟較多,尤其安裝較大的軟體集合時,容易出現拼寫錯誤
  • 編譯時間長
  • 因為是編譯安裝,安裝過程中一旦報錯新手很難解決

安裝位置

安裝在指定位置,一般是 /usr/local/軟體名/

二進制包

(CentOS系統中一般指rpm包): 二進制包指的是已經安裝好了的軟體包,隻需要直接安裝就可以使用;二進制包不需要編譯,直接下載下傳即可使用;二進制包需要根據自己的計算機CPU和作業系統去選擇合适的包來安裝;二進制包可以直接執行,不需要編譯;

RPM包優點

  • 管理簡單,安裝、查詢、解除安裝簡單
  • 安裝速度快

RPM缺點

  • 不可以看到源代碼
  • 功能選擇不如源碼包靈活
  • 依賴性:有可能軟體包之間依賴關系比較複雜,安裝A需要依賴B和C,隻有先安裝B和C後,才能安裝A

安裝預設位置

  • /etc

    :配置檔案安裝目錄
  • /usr/bin/

    :可執行指令安裝目錄
  • /usr/lib/

    :程式所使用的函數庫儲存位置
  • /usr/share/doc/

    :基本的軟體使用手冊儲存位置
  • /usr/share/man/

    :幫助文檔儲存位置

RPM軟體包簡介

RPM

Red-Hat Package Manager

(RPM軟體包管理器)的縮寫,rpm工具用于管理

.rpm

格式的軟體包,這一檔案格式名稱雖然打上了RedHat的标志,但是其原始設計理念是開放式的,現在包括OpenLinux、S.u.S.E.以及Turbo Linux等Linux的分發版本都有采用,可以算是公認的行業标準了

RPM 是以一種資料庫記錄的方式來将你所需要的套件安裝到你的Linux 主機的一套管理程式。也就是說,你的linux系統中存在着一個關于RPM的資料庫,它記錄了安裝的包以及包與包之間依賴相關性。RPM包是預先在linux機器上編譯好并打包好的檔案,安裝起來非常快捷。但是也有一些缺點,比如安裝的環境必須與編譯時的環境一緻或者相當;包與包之間存在着互相依賴的情況;解除安裝包時需要先把依賴的包解除安裝掉,如果依賴的包是系統所必須的,那就不能解除安裝這個包,否則會造成系統崩潰。

RPM文法

功能說明:安裝、删除、更新、重新整理、查詢

文法:

選項及參數

  • -a

    :查詢所有軟體;
  • -b<完成階段><軟體包>+或-t <完成階段><軟體包>+

    :設定包裝軟體的完成階段,并指定軟體包的檔案名稱;
  • -c

    :隻列出組态配置檔案,本參數需配合"-l"參數使用;
  • -d

    :隻列出文本檔案,本參數需配合"-l"參數使用;
  • -e<軟體包>或--erase<軟體包>

    :删除指定的軟體;
  • -f<檔案>+

    :查詢擁有指定檔案的軟體;
  • -h或--hash

    :軟體安裝時列出标記;
  • -i

    :顯示軟體的相關資訊;
  • -i<軟體包>或--install<軟體包>

    :安裝指定的軟體包;
  • -l

    :顯示軟體的檔案清單;
  • -p<軟體包>+

    :查詢指定的RPM軟體包;
  • -q

    :使用詢問模式,當遇到任何問題時,rpm指令會先詢問使用者;
  • -R

    :顯示軟體的關聯性資訊;
  • -s

    :顯示檔案狀态,本參數需配合"-l"參數使用;
  • -U<軟體包>或--upgrade<軟體包>

    :更新指定的軟體包;
  • -v

    :顯示指令執行過程;
  • -vv

    :詳細顯示指令執行過程,便于排錯。
  • addsign<軟體包>+

    :在指定的軟體裡加上新的簽名認證
  • --allfiles

    :安裝所有元件
  • --allmatches

    :删除符合指定的軟體所包含的檔案
  • --badreloc

    :發生錯誤時,重新配置檔案
  • --buildroot<根目錄>

    :設定産生軟體時,欲當做根目錄的目錄
  • --changelog

    :顯示軟體的更改記錄
  • --checksig<軟體包>+

    :驗證該軟體的簽名認證
  • --clean

    :完成軟體的包裝後,删除包裝過程中所建立的目錄
  • --dbpath<資料庫目錄>

    :設定欲存放RPM資料庫的目錄
  • --dump

    :顯示每個檔案的驗證資訊。本參數需配合-l參數使用
  • --excludedocs

    :安裝軟體時,不要安裝檔案
  • --excludepath<排除目錄>

    :忽略在指定目錄裡的所有檔案
  • --force

    :強行置換軟體或檔案
  • --ftpproxy<主機名稱或IP位址>

    :指定FTP代理伺服器
  • --ftpport<通信端口>

    :設定FTP伺服器或代理伺服器使用的通信端口
  • --httpproxy<主機名稱或IP位址>

    :指定HTTP代理伺服器
  • --httpport<通信端口>

    :設定HTTP伺服器或代理伺服器使用的通信端口
  • --ignorearch

    :不驗證軟體包的結構正确性
  • --ignoreos

    :不驗證軟體包的結構正确性
  • --ignoresize

    :安裝前不檢查磁盤空間是否足夠
  • --includedocs

    :安裝軟體時,一并安裝檔案
  • --initdb

    :确認有正确的資料庫可以使用
  • --justdb

    :更新資料庫,當不變動任何檔案
  • --nobulid

    :不執行任何完成階段
  • --nodeps

    :不驗證軟體包的互相關聯性
  • --nofiles

    :不驗證檔案的屬性
  • --nogpg

    :略過所有GPG的簽名認證
  • --nomd5

    :不使用MD5編碼演算确認檔案的大小與正确性
  • --nopgp

    :略過所有PGP的簽名認證
  • --noorder

    :不重新編排軟體的安裝順序,以便滿足其彼此間的關聯性
  • --noscripts

    :不執行任何安裝script檔案
  • --notriggers

    :不執行該軟體包裝内的任何script檔案
  • --oldpackage

    :更新成舊版本的軟體
  • --percent

    :安裝軟體時顯示完成度百分比
  • --pipe<執行指令>

    :建立管道,把輸出結果轉為該執行指令的輸入資料
  • --prefix<目的目錄>

    :若重新配置檔案,就把檔案放到指定的目錄下
  • --provides

    :查詢該軟體所提供的相容度
  • --queryformat<檔頭格式>

    :設定檔頭的表示方式
  • --querytags

    :列出可用于檔頭格式的标簽
  • --rcfile<配置檔案>

    :使用指定的配置檔案
  • --rebulid<軟體包>

    :安裝原始代碼軟體,重新産生二進制檔案的軟體
  • --rebuliddb

    :以現有的資料庫為主,重建一份資料庫
  • --recompile<軟體包>

    :此參數的效果和指定

    --rebulid

    參數類似,當不産生軟體包
  • --relocate<原目錄>=<新目錄>

    :把本來會放到原目錄下的檔案改放到新目錄
  • --replacefiles

    :強行置換檔案
  • --replacepkgs

    :強行置換軟體
  • --requires

    :查詢該軟體所需要的相容度
  • --resing<軟體包>+

    :删除現有認證,重新産生簽名認證
  • --rmsource

    :完成軟體的包裝後,删除原始代碼
  • --rmsource<檔案>

    :删除原始代碼和指定的檔案
  • --root<根目錄>

    :設定欲當做根目錄的目錄
  • --scripts

    :列出安裝軟體的script的變量
  • --setperms

    :設定檔案的權限
  • --setugids

    :設定檔案的擁有者和所屬群組
  • --short-circuit

    :直接略過指定完成階段的步驟
  • --sign

    :産生PGP或GPG的簽名認證
  • --target=<安裝平台>+

    :設定産生的軟體的安裝平台
  • --test

    :僅做測試,并不真的安裝軟體
  • --timecheck<檢查秒數>

    :設定檢查時間的計時秒數
  • --triggeredby<軟體包>

    :查詢該軟體的包裝者
  • --triggers

    :展示軟體包内的包裝Script
  • --verify

    :此參數的效果和指定

    -q

    參數相同
  • --whatprovides<功能特性>

    :查詢該軟體對指定的功能特性所提供的相容度
  • --whatrequires<功能特性>

    :查詢該軟體對指定的功能特性所需要的相容度

RPM軟體包管理

RPM軟體包管理主要有安裝、删除、更新、重新整理、查詢這五種基本操作模式

安裝RPM軟體包

使用

rpm -i

指令可以在Linux系統中安裝RPM軟體包

rpm安裝軟體常用參數說明

  • -i

    :安裝軟體包
  • -v

    :安裝軟體時顯示指令的執行過程
  • -h

    :安裝軟體時輸出hash記号:#

安裝軟體包

安裝軟體并顯示詳細資訊和水準進度條

####強制安裝軟體包

測試安裝,并不實際安裝

安裝以soft開頭的軟體包

通過以下方式可以一次安裝多個軟體包

在已經安裝了的情況下,依舊重新安裝軟體包

忽略軟體包的依賴關系,安裝軟體包

忽略軟體包的依賴關系,強制安裝軟體包

直接從HTTP網絡位址中安裝軟體包

查詢軟體包

使用

rpm -q

指令可以在Linux系統中查詢RPM軟體包

rpm檢視軟體常用參數說明

  • -q

    :查詢軟體包
  • -p

    :查詢軟體包的檔案
  • -l

    :顯示軟體包中的檔案清單
  • -a

    :顯示安裝的所有軟體清單
  • -f<檔案>

    :查詢擁有指定檔案的軟體包;
  • -R

    :顯示軟體的依賴性(關聯性)資訊;

檢視系統中所有安裝的軟體包

查詢系統中是否已經安裝指定的軟體包

查找是否安裝soft相關的軟體包

檢視一個檔案屬于哪個PRM包

擷取RPM包的說明資訊

查詢指定該軟體包所包含的檔案清單

更新RPM包和重新整理RPM軟體包

更新/重新整理軟體rpm常用參數說明

  • -U

    :更新指定的軟體
  • -F

    :重新整理指定的軟體
  • -v

    :更新/重新整理軟體時顯示指令的執行過程
  • -h

    :更新/重新整理軟體時輸出hash記号:#

更新和重新整理的差別

-U

表示更新或安裝,如果沒有老版本,就進行安裝。如果有老版本,更新之後删除老版本

-F

表示重新整理,前提是有老版本,有新版本就更新,沒有新版本就更新,如果沒有安裝該軟體則不會安裝台軟體

更新軟體包

重新整理軟體包

解除安裝RPM軟體包

使用

rpm -e

指令可以在Linux系統中解除安裝RPM軟體包

解除安裝軟體包參數常用說明

  • -e

    :從系統中移除指定的軟體包

解除安裝指定軟體包

删除軟體包及其軟體包依賴項

RPM資料庫

參數

  • --initdb

    :确認有正确的資料庫可以使用
  • --justdb

    :更新資料庫,當不變動任何檔案
  • --rebuliddb

    :以現有的資料庫為主,重建一份資料庫

初始化RPM資料庫

從安裝軟體中重建RPM資料資訊

雜項

rpm -ivh package.rpm 安裝一個rpm包
rpm -ivh --nodeeps package.rpm 安裝一個rpm包而忽略依賴關系警告
rpm -U package.rpm 更新一個rpm包但不改變其配置檔案
rpm -F package.rpm 更新一個确定已經安裝的rpm包
rpm -e package_name.rpm 删除一個rpm包
rpm -qa 顯示系統中所有已經安裝的rpm包
rpm -qa | grep httpd 顯示所有名稱中包含 "httpd" 字樣的rpm包
rpm -qi package_name 擷取一個已安裝包的特殊資訊
rpm -qg "System Environment/Daemons" 顯示一個元件的rpm包
rpm -ql package_name 顯示一個已經安裝的rpm包提供的檔案清單
rpm -qc package_name 顯示一個已經安裝的rpm包提供的配置檔案清單
rpm -q package_name --whatrequires 顯示與一個rpm包存在依賴關系的清單
rpm -q package_name --whatprovides 顯示一個rpm包所占的體積
rpm -q package_name --scripts 顯示在安裝/删除期間所執行的腳本l
rpm -q package_name --changelog 顯示一個rpm包的修改曆史
rpm -qf /etc/httpd/conf/httpd.conf 确認所給的檔案由哪個rpm包所提供
rpm -qp package.rpm -l 顯示由一個尚未安裝的rpm包提供的檔案清單
rpm --import /media/cdrom/RPM-GPG-KEY 導入公鑰數字證書
rpm --checksig package.rpm 确認一個rpm包的完整性
rpm -qa gpg-pubkey 确認已安裝的所有rpm包的完整性
rpm -V package_name 檢查檔案尺寸、 許可、類型、所有者、群組、MD5檢查以及最後修改時間
rpm -Va 檢查系統中所有已安裝的rpm包- 小心使用
rpm -Vp package.rpm 确認一個rpm包還未安裝
rpm2cpio package.rpm | cpio --extract --make-directories *bin* 從一個rpm包運作可執行檔案
rpm -ivh /usr/src/redhat/RPMS/`arch`/package.rpm 從一個rpm源碼安裝一個建構好的包
rpmbuild --rebuild package_name.src.rpm 從一個rpm源碼建構一個 rpm 包