Linux軟體管理(1)-軟體包介紹&RPM管理
技術標籤:Linux-基礎知識篇
一、前言
“滄海橫流,方顯英雄本色”
“夜深風雨歸何處,西月窺人到半窗”
“衣帶漸寬終不悔,為伊消得人憔悴”
“靜以修身,檢以養德”
二、軟體包介紹&RPM管理
軟體包的分類
原始碼包:
優點:
- 開源,可以自己修改原始碼
- 自由選擇自己需要的功能
- 編譯安裝,更加適合自己的系統,搞笑+穩定
- 那麼需要了解的就是什麼是編譯-->編譯就是,我們看的懂abc,機器看不懂,所以就需要從abc-->0101.....這種就是編譯的過程
- 解除安裝直接刪除目錄-->方便
缺點:
- 安裝過程步驟比較多,原始碼編譯LNMP環境搭建,容易出現錯誤
- 編譯的時間過長,
- 報錯複雜,對於新手不容易排錯
- 排錯過程-->百度-->谷歌-->專業技術問題的效率需要提高
- 看官方文件-->換環境
二進位制包:
DPKG包:debian、ubuntu等、需要使用的包
RPM包:rhel紅帽開發的包管理系統,我們主要學的就是RPM包
優點:
- 包管理簡單,幾個命令解決,安裝、升級、查詢和解除安裝
- 安裝速度比較快
缺點:
- 經過編譯,看不到原始碼
- 功能選擇有預設-->不利於自己查詢適合的功能
- 依賴性強-->需要解決依賴關係
問題1:什麼是模組依賴?
#測試rpm安裝apache服務-->
[[email protected] ~]# mount /dev/cdrom /mnt/cdrom/
mount: block device /dev/sr0 is write-protected, mounting read-only
[ [email protected] ~]# cd /mnt/cdrom/Packages/
#安裝-->
rpm 命令 ivh選項 軟體包名
[[email protected] Packages]# rpm -ivh httpd-2.2.15-53.el6.centos.x86_64.rpm
warning: httpd-2.2.15-53.el6.centos.x86_64.rpm: Header V3 RSA/SHA1 Signature, key ID c105b9de: NOKEY
error: Failed dependencies:
apr-util-ldap is needed by httpd-2.2.15-53.el6.centos.x86_64
httpd-tools = 2.2.15-53.el6.centos is needed by httpd-2.2.15-53.el6.centos.x86_64
libapr-1.so.0()(64bit) is needed by httpd-2.2.15-53.el6.centos.x86_64
libaprutil-1.so.0()(64bit) is needed by httpd-2.2.15-53.el6.centos.x86_64
[ [email protected]
#這裡直接報錯,error:失敗的依賴關係-->下面就是依賴的模組或者庫,需要自己手動安裝
問題2:如何查詢libapr-1.so.0這種函式庫檔案?
藉助網站:www.rpmfind.net這個網站
直接搜尋-->依賴庫
搜尋出來結果就是我們需要下載安裝的包,包中就會有這種函式庫檔案
問題3:如何選擇軟體包的安裝方式?
原始碼包:如果服務是給大量使用者提供訪問的,建議使用原始碼包,原始碼包好管理,效率高;
RPM包:如果程式是給少量使用者訪問,或者本地使用的,建議使用RPM包,因為RPM包管理方便
rpm包講解
rpm包的命名規則
httpd-2.2.15-53.el6.centos.x86_64.rpm
- httpd:軟體包名
- 2.2.15:軟體版本
- 15:釋出的次數
- el6:適合rhel系統使用
- x86_:適合x86_64的平臺架構
- rpm:rpm包的副檔名
安裝的時候需要注意:
包全名:如果操作的是未安裝的包,需要使用包全名,並且是絕對路徑;
包名:如果是已經安裝的包的,使用包名即可,系統生成RPM包的資料庫,直接搜尋資料庫;(資料庫在/var/lib/rpm/目錄下)
rpm命令:
作用:查詢或者安裝rpm包
語法:
rpm 【選項】 包全名
注意安裝包全名的絕對路徑
選項:
-ivh:安裝,i:安裝;v:顯示詳細資訊;h:列印安裝進度
-Uvh:升級安裝
--nodeps:不檢測依賴關係,一般也不用,強行安裝
--force:強制安裝通常與--replacepkgs這個替換軟體包安裝
--test:測試,實際不會安裝
--prefix:指定路徑
-e:解除安裝
注意:rpm命令常用語查詢功能
rpm -qa 包名 查詢系統是否安裝了這個包
rpm -qa:檢視系統所有的包
rpm -qi:查詢包名的資訊
rpm -ql:檢視包的檔案列表(包括配置檔案)
rpm -qf:查詢檔案屬於哪個包
rpm -qR:查詢軟體包的依賴性
rpm -Va:校驗已安裝的所有軟體包
rpm -qpi:查詢未安裝的包的資訊,需要跟的是包全名
rpm -qpl:檢視沒有安裝的包的檔案列表需要包全名
rpm -qRp:查詢未安裝包的依賴性
#查詢
[[email protected] Packages]# rpm -qa httpd
httpd-2.2.15-53.el6.centos.x86_64
[[email protected] Packages]# rpm -qa | grep httpd
httpd-devel-2.2.15-53.el6.centos.x86_64
httpd-tools-2.2.15-53.el6.centos.x86_64
httpd-manual-2.2.15-53.el6.centos.noarch
httpd-2.2.15-53.el6.centos.x86_64
#查詢包的詳細資訊
[[email protected] Packages]# rpm -qi httpd
Name : httpd Relocations: (not relocatable)
Version : 2.2.15 Vendor: CentOS
Release : 53.el6.centos Build Date: 2016年05月12日 星期四 03時29分17秒
Install Date: 2021年01月15日 星期五 00時19分20秒 Build Host: worker1.bsys.centos.org
Group : System Environment/Daemons Source RPM: httpd-2.2.15-53.el6.centos.src.rpm
Size : 3133738 License: ASL 2.0
Signature : RSA/SHA1, 2016年05月12日 星期四 18時52分29秒, Key ID 0946fca2c105b9de
Packager : CentOS BuildSystem <http://bugs.centos.org>
URL : http://httpd.apache.org/
Summary : Apache HTTP Server
Description :
The Apache HTTP Server is a powerful, efficient, and extensible
web server.
#查詢包的檔案列表
[[email protected] ~]# rpm -ql httpd
/etc/httpd
/etc/httpd/conf
/etc/httpd/conf.d
.......................
#查詢檔案屬於哪個包
[[email protected] ~]# rpm -qf /etc/issue
centos-release-6-8.el6.centos.12.3.x86_64
#查詢包的依賴關係
[[email protected] ~]# rpm -qR httpd
/bin/bash
/bin/sh
/bin/sh
........
問題1:如何檢視包檔案是否被修改過?
使用到rpm -V 包名
詳細的分析如下:
[[email protected] ~]# rpm -V httpd
S.5....T. c /etc/httpd/conf/httpd.conf
S:檔案大小是否改變
M:檔案的型別或者檔案的許可權是否被改變
5:檔案的MD5校驗是否改變
D:裝置的主從程式碼是否改變
L:檔案路徑是否改變
U:檔案的屬主是否改變
G:檔案的屬組是否改變
T:檔案的修改時間是否改變
c:普通的配置檔案
d:普通文件
g:鬼違建
l:授權檔案
r:描述檔案
#什麼是MD5?
這個是完整性校驗,是一種加密的演算法;
只要內容不變,MD5碼就不變,如果內容改變,則MD5碼就會改變
問題2:如何匯入數字證書
什麼是數字證書?
數字證書用來校驗包檔案是否有修改
rhel:光碟數字證書,/etc/pki/rpm-gpg/rpm-gpg-key-CentOS-6
#匯入數字證書
[[email protected] ~]# rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
[[email protected] ~]# rpm -qa | grep gpg-pubkey
gpg-pubkey-c105b9de-4e0fd3a3
服務啟動:
service 服務名 start|stop|restat|status
啟動、停止、重啟、狀態
原始碼包安裝是不能加入service這條命令來使用的
service搜尋的檔案目錄是:/etc/rc.d/init.d/目錄下
#啟動httpd
[[email protected] Packages]# service httpd start
#停止httpd
[[email protected] Packages]# service httpd stop
#重啟httpd
[[email protected] Packages]# service httpd restart
#檢視httpd的狀態
[[email protected] Packages]# service httpd status
httpd (pid 1909) 正在執行...
RPM包檔案提取實驗
cpio命令:--->這個備份還原--->一般不用,作為擴充套件瞭解
作用:從包中提取需要的命令
語法:
cpio 【選項】 檔案| 裝置名
選項:
-o:copy-out 模式,備份
-v:顯示過程
-c:使用較新的儲存方式
-B:設定輸入輸出塊為5120bytes
-i:copy-in模式,還原
-v:顯示過程
-c:使用較新的儲存方式
-d:還原時建立新目錄
-u:自動使用較新的檔案覆蓋舊檔案
rpm2cpio 包全名 |cpio -idv . 檔案絕對路徑
rpm2cpio:將rpm包轉換成cipo格式
cpio:標準工具,用於建立文件檔案和從文件檔案中提取檔案
實驗過程:
#移走ls命令
[[email protected] ~]# mv /bin/ls /tmp/
[[email protected] ~]# ls
-bash: /bin/ls: 沒有那個檔案或目錄
#檢視一下ls由哪個包提供
[[email protected] ~]# rpm -qf /bin/ls
coreutils-8.4-43.el6.x86_64
#從光碟中提起
[[email protected] ~]# rpm2cpio /mnt/cdrom/Packages/coreutils-8.4-43.el6.x86_64.rpm | cpio -idv ./bin/ls
./bin/ls
25240 塊
[[email protected] ~]# cp /root/bin/ls /bin/
#驗證
[[email protected] ~]# ls
bin install.log install.log.syslog
三、結束
“當別人休息時,你仍在努力;當別人放棄時,你仍然堅持。當別人困惑時,你的眼睛是堅定的。當別人開心的時候,你選擇學習。當別人躺在床上時,你已經在旅行了。當別人懈怠時,你挑戰記錄。當別人沉默時,你表現出熱情;當別人祝賀你時,你用眼淚感謝他們。當別人奮鬥的時候,你已經成功了!”
“一個人的成就不在於他的光環,而在於他的經歷。”
“生活不能太平淡,平淡的生活註定會錯過生活的樂趣”
“如果生命是一片海,那麼期待大海會有暴風雨,在淺灘我最喜歡的1句勵志上的航行永遠不會到達美麗的海岸”
“如果生活是一座山,那就期待這座山有多高,而在山腳下爬山永遠不會欣賞到美麗的風景”
“如果生活是一片草原,那就期待風雨吧,荒原邊緣的遊牧者永遠也不會創造出壯麗的戰鬥”
互勉~!