在linux中分為rpm包和二進制包安裝,yum安裝也屬于rpm包安裝的一種。
rpm包名原則
rpm包依賴性
樹形依賴:a -> b -> c
環形依賴:a -> b-> c -> a
子產品依賴:查詢網站 www.rpmfind.net
子產品依賴的執行個體報錯:(實驗機器為 centos6.3 x64)
通過挂載第一張CD光牒後,進入CD光牒中的package目錄,安裝 mysql-connector-odbc 這個包,報錯如下
報錯中說的很清楚,缺少libltdl.so.7這個軟體包。
先解釋一下libltdl.so.7 這個是啥?在linux中以 ".so.數字" 結尾的檔案都是軟體包組,這是某一個軟體包中的一個軟體,如要解決這個依賴,
需要在 www.rpmfind.net 中查找對應的軟體包安裝。
在指令行模式中,rpm包還有包名和包全名之分,在不同的情況下用不同的名字。
包名:以最上面的rpm包名原則那張圖為例:包名就是 httpd
包全名:從頭到尾就是包全名了~
當操作對象為已安裝的軟體那麼接包名,若操作對象為未安裝軟體時則需要接包全名,除了安裝和更新是需要用包全名,大多數時候使用包名即可。
rpm安裝
# rpm ivh 包全名
選項: -i (install) 安裝
-v (verbose) 顯示詳細資訊
-h(hash) 顯示進度
--nodeps 不檢測依賴性
rpm包更新
# rpm uvh 包全名
選項: -u (upgrade) 更新
rpm解除安裝
# rpm e 包名
選項:-e (erase) 解除安裝
查詢是否安裝rpm包
# rpm q 包名 查詢該包是否安裝
# rpm -qa 包名 查詢所有已經安裝的rpm包
-q 查詢
-a 所有
查詢軟體包詳細資訊
# rpm qi 包名
選項: -i 查詢軟體資訊
-l 清單(查詢軟體包的安裝位置)
-p 查新未安裝包資訊
# rpm -qip zip-3.0-1.el6.x86_64.rpm 查詢未安裝軟體的軟體包的詳細資訊,因為操作對象是未安裝的軟體,是以接包全名
# rpm -qlp zlib-devel-1.2.3-27.el6.x86_64.rpm 查詢未安裝軟體準備安裝的位置
查詢系統檔案屬于哪個rpm包
# rpm qf 系統檔案名
選項: -f 查詢系統檔案屬于哪個軟體包
查詢軟體包的依賴性
# rpm qf 系統檔案名
選項:-r 查詢軟體包的依賴性
-p 查詢未安裝包資訊
rpm包校驗
# rpm v 已安裝的包名
選項:-v 校驗指定rpm包中的檔案
rpm包中檔案提取
# rpm2cpio 包全名 | cpio idv .檔案絕對路徑
rpm2cpio 将rpm包轉換為cpio格式的指令
cpio是一個标準工具,它用于建立軟體檔案檔案和從檔案檔案中提取檔案
提取檔案執行個體
[root@nfs-server ~]# rpm -qf /bin/ls 首先檢視 ls 指令屬于哪個軟體包
coreutils-8.4-19.el6.x86_64
[root@nfs-server ~]# mv /bin/ls /tmp 造成ls指令誤删除
[root@nfs-server ~]# ls ls指令失效
-bash: /bin/ls: no such file or directory
[root@nfs-server ~]# rpm2cpio /mnt/packages/coreutils-8.4-19.el6.x86_64.rpm | cpio -idv ./bin/ls
./bin/ls 提取rpm包中ls指令到目前目錄的 /bin/ls下
25190 blocks
[root@nfs-server ~]# cp /root/bin/ls /bin 把ls指令複制到 /bin/ls 目錄,修複檔案丢失
[root@nfs-server ~]# ls ls指令恢複
anaconda-ks.cfg bin install.log install.log.syslog