一、背景
由於最近想自己摸索一些linux下的東西,開始玩起了Linux系統,在安裝軟體的過程中有諸多的不解和困惑,現在終於搞明白了具體是怎麼樣的安裝步驟和過程,先分享給你們同時也方便自己複習查閱。
二、基本概述
1.RPM
RedHat Package Manager的簡稱,即RedHat包管理器。
以資料庫記錄的方式將軟體安裝到Liunx。
軟體包事先編譯好並且打包成RPM機制的檔案,類似於Windows的安裝程式。
軟體資訊記錄在本地資料庫,方便查詢、升級、解除安裝。
不允許自定義引數和設定,限制較多。
2.SRPM
Source RPM,附帶原始碼的RPM包,副檔名為src.rmp。
不可以直接安裝,需要通過編譯後再安裝。
可以修改引數檔案自定義配置項。
和RPM比較類似。
3.YUM
Yellow dog Updater,Modified的簡稱,基於RPM包管理。
能夠從指定的伺服器自動下載RPM包並且安裝,可以自動處理依賴關係,並且一次安裝所有依賴的軟體包,無需繁瑣的一次次下載、安裝。
使用簡單、方便。
三、安裝方式介紹
1.原始碼方式安裝linux軟體
下載原始碼包到/usr/local/src
解壓縮原始碼包
檢視install和readme檔案安裝相依性軟體
./configure安裝軟體到特定位置
make clean清除目標檔案
make編譯
make install
修改PATH
2.rpm方式安裝linux軟體
明確安裝包所在路徑或者網站(find /dirname–name ‘name*’)
查詢rpm庫中是否已經安裝 rpm -qa | grep 'softwareName'
安裝rpm –ivh /path/to/file.rpm
rpm常用引數
-i:安裝
-U:後接的軟體如果沒有安裝過則安裝,如果安裝過且版本較舊則更新
-F:後接的軟體如未安裝則不進行安裝,如果安裝過且版本較舊則更新
-v:檢視詳細安裝資訊
-h:檢視安裝進度
rpm常用的長選項
--nodeps:忽略相依性強制安裝
--replacepkgs:重複安裝已安裝過的軟體檔案
--force:強制安裝
--nosignature:忽略數字簽名認證
--prefix:指定安裝路徑
--relocate:改變安裝路徑
--justdb:完善RPM關於此軟體檔案的資料庫檔案
--initdb:初始化RPM資料庫
--rebuilddb:重建RPM資料庫
rpm查詢:RPM [options] [filename]
-q:查詢後面的軟體是否有安裝
-qa:列出此係統上已安裝的所有軟體
-ql:列出該軟體安裝後產生的所有檔案完整目錄列表
-qd:列出該軟體安裝後產生的所有man檔案完整目錄列表
-qf:列出該檔案所屬的已安裝軟體
-qi:列出該軟體的詳細資訊
-qR:列出與該軟體的相依軟體有關的檔案
-p:未安裝的軟體包
-e:移除某個軟體(要從相依性的頂層開始)
rpm升級:rpm –V[apf] [filename/dirname]
-V:後面加軟體名稱,顯示該軟體所含的被更動過的檔案
-Va:列出系統上所有被改動過的檔案
-Vf:列出某個檔案是否被更動過
rpm數字簽名驗證流程
獲取公鑰安裝包
安裝公鑰rpm --import /path/to/GPG-KEY
得到gpg-pubkey*檔案,包含簽章資訊
安裝原廠軟體時,rpm指令會去讀取簽章資訊,與已匯入的公鑰相比較。如果相同則安裝,不同則不允許安裝
3.SRPM安裝linux軟體
進行編譯源包:rpmbuild [options]
--rebuild:將***.src.rpm原始碼進行編譯,並打包成rpm包
--recompile:將***.src.rpm原始碼進行編譯、打包,並進行安裝
-ba:將資料編譯並同時產生RPM與SRPM
-bb:將資料僅編譯程RPM檔案
備註:SRPM包用rebuild建立成rpm包後,裡邊會有一個*.spec配置檔案
後面步驟和rpm相同
4.YUM進行安裝linux軟體
配置yum倉庫/etc/yum.repo.d/*
連線網路
yum install softwareName
yum clean all刪除所有yum倉庫中的資料
查詢:yum[list|info|search|provides|whatprovides]引數
search:查詢某個程式的名稱或是描述(yum search mysql)
list:列出目前所有的管理的軟體以及版本(rpm -qa)
info類似list,查詢軟體的功能、版本說明(rpm -qai)
provides:通過檔案查詢所屬軟體(rpm -qf)
安裝、升級,yum [install|update]程式名
install:安裝軟體
update:升級軟體、不指定名稱則升級整個系統
解除安裝程式:yum[remove]程式名稱
yum的配置
/etc/yum.repos.d/CentOS-Base.repo
yum clean[package|headers|all]
/var/cache/yum
四、總結
對於軟體技術來說,我覺得最重要的是分享和開源精神,因為這和分享快樂的原理相同,如果你有一份技術,我有一份技術,那我們彼此分享以後,每個人都變成了兩分技術,不但沒有減少,反而增加了,這不正是我們所希望看到的麼?何樂而不為呢?這也正是為什麼我喜歡抽出休息時間來孜孜不倦的寫技術部落格的原因。