文章目錄
- 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 <完成階段><軟體包>+
-
:隻列出組态配置檔案,本參數需配合"-l"參數使用;-c
-
:隻列出文本檔案,本參數需配合"-l"參數使用;-d
-
:删除指定的軟體;-e<軟體包>或--erase<軟體包>
-
:查詢擁有指定檔案的軟體;-f<檔案>+
-
:軟體安裝時列出标記;-h或--hash
-
:顯示軟體的相關資訊;-i
-
:安裝指定的軟體包;-i<軟體包>或--install<軟體包>
-
:顯示軟體的檔案清單;-l
-
:查詢指定的RPM軟體包;-p<軟體包>+
-
:使用詢問模式,當遇到任何問題時,rpm指令會先詢問使用者;-q
-
:顯示軟體的關聯性資訊;-R
-
:顯示檔案狀态,本參數需配合"-l"參數使用;-s
-
:更新指定的軟體包;-U<軟體包>或--upgrade<軟體包>
-
:顯示指令執行過程;-v
-
:詳細顯示指令執行過程,便于排錯。-vv
-
:在指定的軟體裡加上新的簽名認證addsign<軟體包>+
-
:安裝所有元件--allfiles
-
:删除符合指定的軟體所包含的檔案--allmatches
-
:發生錯誤時,重新配置檔案--badreloc
-
:設定産生軟體時,欲當做根目錄的目錄--buildroot<根目錄>
-
:顯示軟體的更改記錄--changelog
-
:驗證該軟體的簽名認證--checksig<軟體包>+
-
:完成軟體的包裝後,删除包裝過程中所建立的目錄--clean
-
:設定欲存放RPM資料庫的目錄--dbpath<資料庫目錄>
-
:顯示每個檔案的驗證資訊。本參數需配合-l參數使用--dump
-
:安裝軟體時,不要安裝檔案--excludedocs
-
:忽略在指定目錄裡的所有檔案--excludepath<排除目錄>
-
:強行置換軟體或檔案--force
-
:指定FTP代理伺服器--ftpproxy<主機名稱或IP位址>
-
:設定FTP伺服器或代理伺服器使用的通信端口--ftpport<通信端口>
-
:指定HTTP代理伺服器--httpproxy<主機名稱或IP位址>
-
:設定HTTP伺服器或代理伺服器使用的通信端口--httpport<通信端口>
-
:不驗證軟體包的結構正确性--ignorearch
-
:不驗證軟體包的結構正确性--ignoreos
-
:安裝前不檢查磁盤空間是否足夠--ignoresize
-
:安裝軟體時,一并安裝檔案--includedocs
-
:确認有正确的資料庫可以使用--initdb
-
:更新資料庫,當不變動任何檔案--justdb
-
:不執行任何完成階段--nobulid
-
:不驗證軟體包的互相關聯性--nodeps
-
:不驗證檔案的屬性--nofiles
-
:略過所有GPG的簽名認證--nogpg
-
:不使用MD5編碼演算确認檔案的大小與正确性--nomd5
-
:略過所有PGP的簽名認證--nopgp
-
:不重新編排軟體的安裝順序,以便滿足其彼此間的關聯性--noorder
-
:不執行任何安裝script檔案--noscripts
-
:不執行該軟體包裝内的任何script檔案--notriggers
-
:更新成舊版本的軟體--oldpackage
-
:安裝軟體時顯示完成度百分比--percent
-
:建立管道,把輸出結果轉為該執行指令的輸入資料--pipe<執行指令>
-
:若重新配置檔案,就把檔案放到指定的目錄下--prefix<目的目錄>
-
:查詢該軟體所提供的相容度--provides
-
:設定檔頭的表示方式--queryformat<檔頭格式>
-
:列出可用于檔頭格式的标簽--querytags
-
:使用指定的配置檔案--rcfile<配置檔案>
-
:安裝原始代碼軟體,重新産生二進制檔案的軟體--rebulid<軟體包>
-
:以現有的資料庫為主,重建一份資料庫--rebuliddb
-
:此參數的效果和指定--recompile<軟體包>
參數類似,當不産生軟體包--rebulid
-
:把本來會放到原目錄下的檔案改放到新目錄--relocate<原目錄>=<新目錄>
-
:強行置換檔案--replacefiles
-
:強行置換軟體--replacepkgs
-
:查詢該軟體所需要的相容度--requires
-
:删除現有認證,重新産生簽名認證--resing<軟體包>+
-
:完成軟體的包裝後,删除原始代碼--rmsource
-
:删除原始代碼和指定的檔案--rmsource<檔案>
-
:設定欲當做根目錄的目錄--root<根目錄>
-
:列出安裝軟體的script的變量--scripts
-
:設定檔案的權限--setperms
-
:設定檔案的擁有者和所屬群組--setugids
-
:直接略過指定完成階段的步驟--short-circuit
-
:産生PGP或GPG的簽名認證--sign
-
:設定産生的軟體的安裝平台--target=<安裝平台>+
-
:僅做測試,并不真的安裝軟體--test
-
:設定檢查時間的計時秒數--timecheck<檢查秒數>
-
:查詢該軟體的包裝者--triggeredby<軟體包>
-
:展示軟體包内的包裝Script--triggers
-
:此參數的效果和指定--verify
參數相同-q
-
:查詢該軟體對指定的功能特性所提供的相容度--whatprovides<功能特性>
-
:查詢該軟體對指定的功能特性所需要的相容度--whatrequires<功能特性>
RPM軟體包管理
RPM軟體包管理主要有安裝、删除、更新、重新整理、查詢這五種基本操作模式
安裝RPM軟體包
使用
rpm -i
指令可以在Linux系統中安裝RPM軟體包
rpm安裝軟體常用參數說明
-
:安裝軟體包-i
-
:安裝軟體時顯示指令的執行過程-v
-
:安裝軟體時輸出hash記号:#-h
安裝軟體包
安裝軟體并顯示詳細資訊和水準進度條
####強制安裝軟體包
測試安裝,并不實際安裝
安裝以soft開頭的軟體包
通過以下方式可以一次安裝多個軟體包
在已經安裝了的情況下,依舊重新安裝軟體包
忽略軟體包的依賴關系,安裝軟體包
忽略軟體包的依賴關系,強制安裝軟體包
直接從HTTP網絡位址中安裝軟體包
查詢軟體包
使用
rpm -q
指令可以在Linux系統中查詢RPM軟體包
rpm檢視軟體常用參數說明
-
:查詢軟體包-q
-
:查詢軟體包的檔案-p
-
:顯示軟體包中的檔案清單-l
-
:顯示安裝的所有軟體清單-a
-
:查詢擁有指定檔案的軟體包;-f<檔案>
-
:顯示軟體的依賴性(關聯性)資訊;-R
檢視系統中所有安裝的軟體包
查詢系統中是否已經安裝指定的軟體包
查找是否安裝soft相關的軟體包
檢視一個檔案屬于哪個PRM包
擷取RPM包的說明資訊
查詢指定該軟體包所包含的檔案清單
更新RPM包和重新整理RPM軟體包
更新/重新整理軟體rpm常用參數說明
-
:更新指定的軟體-U
-
:重新整理指定的軟體-F
-
:更新/重新整理軟體時顯示指令的執行過程-v
-
:更新/重新整理軟體時輸出hash記号:#-h
更新和重新整理的差別
-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 包