RPM包管理和YUM倉庫的總結

1,軟件運行和編譯
2,RPM包使用于管理
3,YUM倉庫創建與管理

1,軟件運行和編譯

程序源代碼 –> 預處理 –> 編譯 –> 匯編 –> 鏈接

靜態編譯: .a

動態編譯: .so

 

庫文件

查看二進制程序所依賴的庫文件? 如:

ldd? /bin/ls

管理及查看本機裝載的庫文件

ldconfig -p? 顯示本機已經緩存的所有可用庫文件名及文件路徑映射關系

配置文件: /etc/ld.so.conf, /etc/ld.so.conf.d/*.conf

緩存文件: /etc/ld.so.cache

 

誤刪除了庫文件可以進入救援模式修復。

救援模式:

如果某些重要文件被刪除,導致系統某些重要功能失效出錯,可以進入救援模式修復,首先掛載好光盤,

然后用光驅啟動,選擇救援模式進入,系統會變成由光盤加載的shell的小系統,可以執行各種命令。需要

注意的是,在救援模式下,系統的根目錄/會變成/mnt/sysimage/。

在救援模式下建立軟鏈接,必須考慮路徑問題,推薦用相對路徑,直接進入文件目錄建立鏈接較好。

 

2,包管理器 RPM

 

二進制應用程序的組成部分:

二進制文件、庫文件、配置文件、幫助文件

RPM包能解決軟件安裝的問題,但解決不了軟件依賴性的問題。

RPM包格式:

ftp-0.17-54.el6.x86_64.rpm

ftp:軟件名稱

0:軟件的主版本號

17:軟件的次版本號

54:軟件編譯次數

x86_64:軟件適合的硬件平臺

 

rpm?? -options??? PACKAGE_FILE…

-i 就是install

-v? 就是過程可視化

-h 就是#表示安裝進度

–test:不執行真正安裝,僅報告依賴關系和沖突信息等

–force :強制安裝

–nodeps:忽略依賴關系安裝

–replacepkgs:覆蓋安裝–重新安裝并覆蓋原有的文件

-U 升級或安裝? 不存在就安裝

-F 升級???? 不存在則不安裝

-e 卸載????? package_name

-e –allmatches 如果一個程序包有多個版本,則一次全部卸載

(如果包配置文件曾經被修改,則刪除時會被重命名(加后綴.rpmsave)后留存。

 

注意:

1.一定不要對內核執行升級;Linux允許多內核共存,如果需要可以直接安裝不同版本內核?。ㄈ绻_實要

新內核可以用安裝的方法進行 RPM -ivh ,這樣系統啟動會有兩個內核選擇,在充分測試后確認新內核穩定

的情況下,再卸載舊內核)

2.如果程序包配置文件安裝后曾被更改,升級時,新版本配置文件不會覆蓋舊配置文件,而把新版本配置文

件重命名(加后綴.rpmnew)后保存。

 

包查詢

rpm???? -q??? package_file?????? 查詢某些包是否已經安裝

-qa? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 查詢所有已經安裝的包

-qf???? path/to/file? ? ? ? ? ? ? ? ? 查詢某個文件是由哪些包安裝生成

-qpi?? filename? ? ? ? ? ? ? ? ? ? ? ? 查尚未安裝包文件的相關信息文件列表,跟的是文件名而不是包名

-qi??? package_file? ? ? ? ? ? ? ? ? 查詢某包簡要信息,比較詳細

-ql???? package_file? ? ? ? ? ? ? ? ?查詢某包安裝生成的文件列表

-qc??? ??package_file? ? ? ? ? ? ? ?查詢某包安裝生成的所有配置文件

-q?? –whatprovides???? Capability??? 查詢指定的能力由哪個包所提供

-q??? –whatrequires??? Capability? ? ?查詢指定的能力被哪些包所依賴

-q??? –scripts? ? ? ? ? ? ? ? ? ? ? ? ? 查詢腳本

 

常見用法

1.rpm -q? vsftpd &> /dev/null || rpm -ivh /misc/cd/packages/vsftpd-2…? &> /dev/null

2.rpm -qa? | grep? 你要找的包名

3.誤刪除了/usr/bin/tree 但是不知道這個文件來自于哪個安裝包可以用命令

rpm -qf? ? /usr/bin/tree

4.rpm2cpio 恢復文件方法

rpm2cpio?? /media/CentOS_6.9_Final/Packages/tree…..x86_64.rpm | cpio -tv 查看包包含哪些文件,要

恢復的是哪個文件。

rpm2cpio?? /media/CentOS_6.9_Final/Packages/tree…..x86_64.rpm | cpio -idv ./usr/bin/tree?? 解壓需要

恢復的文件,注意是在當前目錄。

然后再用cp或者mv命令把文件恢復到原路徑位置即可

缺點:有可能會改變文件屬性,例如所有者所屬組和權限問題

 

包校驗

rpm? -V??? package_name??? 校驗包安裝之后生成的文件是否發生改變

(S M 5 D L U G T P)

rpm? -K? package_name????? 檢查包的來源及完整型 后面跟的是包完整名字

要先導入合法的KEY文件:

rpm –import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

rpm –import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6

或者直接只光盤里導????? /run/media/root/Centos/……./x86_64/RPM-GPG-KEY-…

卸載密鑰用

rpm -qa “gpg-pubkey*”?????? 查詢現有的key

rpm? -e gpg-pubkey-….??????? 卸載現有的key

注意:以上功能都依賴rpm數據庫,里面含有各種已經安裝的rpm包信息,建議備份,否則連裝了什么都

不知道,無法安裝和卸載。

/var/lib/rpm

注意:如果刪除了整個rpm命令文件怎么辦??

例如: rpm -e rpm –nodeps

進入救援模式(光盤模式啟動)

1,建一個臨時的文件夾

mkdir?? /mnt/cdrom

2,掛光盤

mount? /dev/sr0?? /mnt/cdrom

3,安裝rpm

rpm -ivh /mnt/cdrom/Packages/rpm-…..??? –root=/mnt/sysimage/

4,可以直接在救援模式下切換到根下測試下效果

chroot /mnt/sysimage/

5,rpm 可用則可以重啟

 

3,YUM倉庫的創建與管理

 

yum可以解決各軟件的依賴關系問題,但底層依然是rpm,實際上是對rpm的二次封裝。

yum cache 儲存 meta data

yum安裝完成文件后默認會刪除安裝包

緩存的默認路徑可以在/etc/yum.conf里查看

/var/cache/yum….

yum cache 的信息過舊就必須清除

yum clean all?????? 清除緩存

yum出故障一般是這2個問題

1) 配置文件格式或者參數寫錯

2)? yum cache 數據過舊

 

配置yum

1)準備配置文件

主配置文件:

/etc/yum.conf

選項

keepcache=1????????????????????????????? 保留安裝包

logfile=/var/log/yum.log?????? yum使用記錄

gpgcheck=0?????????????????????????????? 不檢查包的可靠性

 

配置自己的yum端:

一、光盤源:

1.移動默認到bak/目錄下,沒有則mkdir創建

2.在指定目錄下創建.repo后綴的文件

/etc/yum.repos.d/*.repo

一般源為光盤默認叫base.repo

vim base.repo

[base]????????????????????????????????????????????????????? repoid?? 不要帶空格

name=centos cdrom? ? ? ? ? ? ? ? ? ? ? ? ? ? ?描述信息

baseurl=file:///mnt/cdrom? ? ? ? ? ? ? ?源路徑為repodata的父目錄,其他看以下注意

gpgkey=file:///mnt/cdrom/RPM-GPG…????? 為了安全要校驗,路徑可以直接光盤導入

#gpgcheck=0? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?不校驗簽名,一般不推薦,可以刪除

#enabled=0??????????????????????????????????????????? 禁用源,啟用則用1

#failovermethod=priority? ? ? ? ? ? ? ? ? ? 源為多路徑時,按順序訪問,roundrobin隨機

#cost=?????????????????????????????????????????????????????? 默認1000?? ,多倉庫時,靠cost值判斷優先級,越小越優先

 

注意:

1.倉庫路徑最好不要帶空格,由于默認光盤目錄repodata父目錄有空格,所以最好不要用。用:

mkdir??? /mnt/cdrom

mount? /dev/sr0?? /mnt/cdrom

 

2.倉庫路徑為多路徑時,可以把多路徑寫入一文件,例如:

創建文件baselist

baseurl=file:///mnt/cdrom

http://172.20.0.1/centos/7/

修改base.repo的baseurl為

mirrorlist=file:///root/baselist即可

 

二、網絡源

例如添加epel源

內容可以直接在原文件base.repo下添加,或者另外建立新文件配置

[epel]

name =centos 7 epel

baseurl=https://mirrors.aliyun.com/epel/7/x86_64/??????????????? 這里的是阿里的epel源

gpgkey=https://mirrors.aliyun.com/epel/RPM-GPG-KEY-EPEL-7 ??????阿里的key

#enabled=0??????????????????????????????????????????? 禁用源,啟用則用1

 

如果做了上述操作后發現源沒有更新,那么要清理緩存

yum? clean all

 

徹底點可以直接執行

rm -rf /var/cache/yum

yum repolist?????????? 列出已經配置的所有啟用倉庫源

yum repolist??? all??? 列出所有倉庫包括已經禁用的倉庫源

yum? repolist??? disable??? 只列禁用倉庫

yum list

倉庫里所有的包,讀取的是緩存里的數據

yum list? ‘*ftp*’

 

centos7下掛載光盤工具包

yum install? autofs

systemctl start autofs

systemctl? enable autofs

/misc/cd? 可掛載光盤

另可用yum-config-manager 來直接生成repo文件

yum-config-manager –add-repo=//172.20.0.1/centos/7/

 

yum倉庫管理

 

yum repolist???????????????????????????? ?????列出已經配置的所有可用倉庫

yum clean all???????????????????????? ????????清除緩存

yum install? packagename????????? ?安裝

yum? remove packagename? ? ? ? ?卸載

yum? reinstall? packagename????? ?重裝,可以用于修復被損壞的功能

yum -y? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 自動回答yes

yum search? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 支持模糊搜索

yum info? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?查詢信息

yum deplist? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 查詢某個包所依賴的能力

yum?? –nogpgcheck? ? ? ? ? ? ? ? ? ? ? ? 禁止進行gpg check

 

yum history? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?查看歷史

yum history?? info? 7

yum history?? undo? 7? ???????????????????????直接撤銷 如果包含n個程序,也會一并刪除

yum history?? redo 7????? ????????????????????重做

 

注意:

1.只需要提供包名

2.如果某包由再不同倉庫中有多個不同版本,則默認安裝最新版本

3.如果要指定安裝版本:install PACKAGE-VERSION

4.如果要刪除某個帶有依賴其他包的包,可以查詢history,通過undo相關編號就可以實際刪除包以及所依

賴的相關包。

 

包組

需要安裝某些較多套件的包,例如安裝圖形界面,就必須涉及到包組

yum? grouplist??????????? 查看包組清單

yum? groupinstall?????? 安裝包組

yum? groupremove??? 卸載包組

yum? groupinfo????????? 包組信息

 

注意:

1.安裝包組名帶空格的包要加引號

yum groupinstall? “Development Tools”

2.靜默并自動選擇卸載httpd

yum -y -q remove? httpd

 

創建自定義yum倉庫

如生產環境中打包的新軟件需要放上yum,則可在放rpm包目錄下運行命令,例如把/data建成yum倉庫

createrepo? /data

創建yum數據,創建完后當前文件夾/data有repodata目錄,只要建立或修改相應的repo文件下的baseurl添

加此路徑就可以創建成功安裝了。

 

創建yum倉庫服務器

這里以7.4服務器做為6.9和7.4兩個版本的yum倉庫服務器

1.安裝httpd

systemctl???? start?? httpd???????? 啟動httpd服務

systemctl enable httpd?????????? 設置開機自動啟動

2.關閉防火墻

centos 6

service iptables stop

chkconfig iptables off

centos 7

systemctl stop firewalld

systemctl disable firewalld

3.打開瀏覽器,輸入ip就可訪問網頁,同時在系統編輯內容

cd?? /var/www/html

echo welcome to? Max Page > index.html

mkdir? -p?? centos/{7,6}/os/x86_64/???????????????? 建立了2個目錄

4.增加光驅,掛載光盤

在虛擬機軟件增加光驅然后執行

echo ?‘- – -‘ > /sys/class/scsi_host/host2/scan ??????執行磁盤掃描命令

不行則重啟…..

掛載光盤

mount /dev/sr0???? centos/7/os/x86_64/

mount /dev/sr1??????? centos/6/os/x86_64/

 

注意:

1,可能會顯示錯誤,可以用mount命令檢查是否成功

2, cat?? centos/7/os/x86_64/ 檢查防止掛反了

4,記得修改原repo文件的baseurl路徑

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

本文來自投稿,不代表Linux運維部落立場,如若轉載,請注明出處:http://www.www58058.com/96647

(0)
MaxMax
上一篇 2018-04-20 17:49
下一篇 2018-04-20 18:39

相關推薦

欧美性久久久久