1. 程式人生 > 其它 >Linux軟體管理(1)-軟體包介紹&RPM管理

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句勵志上的航行永遠不會到達美麗的海岸”

“如果生活是一座山,那就期待這座山有多高,而在山腳下爬山永遠不會欣賞到美麗的風景”

“如果生活是一片草原,那就期待風雨吧,荒原邊緣的遊牧者永遠也不會創造出壯麗的戰鬥”

互勉~!