rpm與yum及dnf


 

前言:關於rpm、yum及dnf

rpm:為了解決在安裝、升級、卸載服務程序時還要考慮到其他程序、庫的依賴關系,rpm機制應運而生。但是rpm機制也只能幫助運維人員查詢缺少的依賴關系,安裝還是需要自己來進行。這是yum軟件倉庫就來了。

yum:底層為rpm包,搭建的一套基於rpm包的yum軟件倉庫。即Yum方式下載的包都是rpm包,而yum的好處在於在下載指定的rpm包時,會在自己的Yum軟件倉庫中自動尋找其所有依賴包,並進行統一安裝,節省了運維人員的時間。且yum軟件倉庫,可以是基於官方的、也可以是基於第三方的,還可以是自己搭建的。

dnf:在yum機制如此優秀的情況下,仍然存在一些問題,如分析不准確,占用內存量大,不能多人同時安裝軟件等硬傷。因此在隨着Fedora 22系統的發布,紅帽又給了我們一個新的選擇—DNF,即DNF實際上就是yum的升級版,也稱為yum v4版本。且在使用上面,dnf也是和yum命令方式一樣,都是同樣的使用方式,只需把yum換為dnf即可。

 


 

包之間:可能存在依賴關系,甚至循環依賴
解決依賴包的管理工具:
  yum:rpm包管理器的前端工具
  apt-get:deb包管理器前端工具
  zypper:suse上的rpm前端管理工具
  dnf:Fedora 18+ rpm包管理器前端管理工具
管理程序包的方式:
  使用包管理器:rpm
  使用前端工具:yum,dnf
查看二進制程序所依賴的庫文件
  #ldd /PATH/TO/BINARY_FILE
管理及查看本機裝載的庫文件
  #ldconfig -v 加載正在使用的庫文件
  /sbin/ldconfig -p :顯示本機已經緩存的所有可用庫文件名及文件路徑映射關系
配置文件:/etc/ld.so.conf(主配置文件),/etc/ld.so.conf.d/*.conf
緩存文件:/etc/ld.so.cache

rpm命令使用
 
安裝
-i(安裝)
#rpm {-i | --install} [install-option]  PACKAGE_FILE....
如:
    #rpm -ivh  包.rpm(安裝並顯示詳細過程,以#顯示程序包管理執行進度)
    #rpm -ivh --force  包.rpm(強制安裝包,忽略錯誤輸出)

 

解壓縮rpm包

#rpm2cpio   包名.rpm  |cpio  -tv   

 

升級

#rpm  {-U | --upgrade} [install -options] PACKAGE_FILE...
   -U,upgrade:安裝有舊版程序包,則“升級”
                        如果不存在舊版程序包,則“安裝”

#rpm  {-F | --freshen} [install-options] PACKAG_FILE     
   -F,freshen:安裝有舊版程序包,則“升級”
                      如果不存在舊版程序包,則不執行升級操作。

即#rpm  -Uvh  PACKAGE_FILE
   #rpm  -Fvh  PACKAGE_FILE
                 --oldpackage:降級
                 --force:強制安裝        

內核:一般不建議隨便換內核;除非遇到重大情況,出bug等。
建議用ivh安裝新的內核版本,新版本和舊版本共存,使用新版本一段時間后,若機器穩定運行,再卸載舊版本rpm包即可(# rpm  -e ),這樣安全。
若出問題,則換回舊版本的內核繼續使用.(重啟使用舊的內核版本)

 

包查詢、卸載
-q(查詢)
#rpm -qa  (列出所有包)
#rpm -qpi filename.rpm    查詢軟件描述信息
#rpm -qpl filename.rpm    列出軟件文件信息(查看未安裝的該rpm包內的文件(即預覽包內文件))
#rpm -qf  filename    查詢文件屬於哪個RPM
#rpm  -q  --scripts  bash (查詢安裝后自帶的所有腳本,都有)
#rpm  -qp --scripts bash(查詢安裝前自帶的所有腳本,都有)

-e(卸載)
#rpm -e filename.rpm    卸載軟件
#rpm2cpio  包文件|cpio  -itv  預覽包內文件
#rpm2cpio  包文件|cpio  -id  "*.conf" 釋放包內文件

 


 yum命令使用

 

①yum:yellowdog Update Modifier ,rpm的前端程序,可解決軟件包相關依賴性,可在多個庫之間定位軟件包,up2date的替代工具。
②yum repository:yum repo,存儲了眾多rpm包, 以及包的相關元數據文件(放置於特定目錄repodata下)。
③yum的配置文件:/etc/yum.conf,但是yum倉庫配置文件需要在/etc/yum.repos.d/名字.repo;
④yum安裝相同軟件包的高級版本,會完成自動更新;
⑤當rpm或yum下載的程序包,文件后來丟失時,可用rpm -ivh ..rpm --replacepkgs 或 yum reinstall -y 程序包名,重新安裝更新文件,解決。
⑥日志:/var/log/yum.log
 
yum配置文件解析
其中配置文件
/etc/yum.conf:為所有倉庫提供公共配置
/etc/yum.repos.d/*.repo:為倉庫的指向提供配置


yum軟件倉庫配置
#vim /etc/yum.repos.d/*.repo
[name]
name=關於repository的描述
baseurl=路徑
     #baseurl=file:///mnt/cdrom(本地base源)
     #baseurl=http://mirrors.aliyun.com/epel/7/$basearch    
enbaled=1|0  開啟或關閉
gpgcheck=1|0 是否開啟檢驗
gpgkey=file://mnt/cdrom/RPM-GPG-KEY-EPEL-7(若開啟檢驗,則該參數寫上對應公鑰的路徑)

注意:在自己寫的repo文件中,若不寫gpgcheck參數,則默認按/etc/yum.conf配置文件中的gpgcheck參數執行;

 

yum命令的用法

yum命令的用法:
   #yum  [options]  [command] [package ...]

顯示倉庫列表:
    #yum  repolist  [all |enabled | disabled]

顯示程序包:
    #yum  list
    #yum  list  [all |glob_exp1 ] [glob_exp2] [...]
    #yum  list  {available | installed | updates } [glob_exp1] [ ...]

安裝程序包:
    #yum  install  package1  [package2] [...]
    #yum  reinstall  package1  [package2] [.... ] (重新安裝)

yum-config-manager,生成172.16.0.1_cobbler_ks_mirror_centos-x-x86_64_.repo
    #yum-config-manager --add repo=http://172.16.0.1/cobbler/ks_mirror/7/(即baseurl的路況):自動在/etc/yum.repos.d/生成repo文件,缺點是沒有gpg參數。

啟用|禁用倉庫
  #yum-config-manager --disable "倉庫名"  :禁用倉庫(enable=0)
  #yum-config-manager --enable  "倉庫名"  :啟用倉庫(enable=1)

升級程序包:
    #yum  update [package1] [package2][...]   升級(不加參數,默認升級所有rpm包)
    #yum  downgrade  package1 [package2] [...]  降級

檢查可用升級
    #yum  check-update

卸載程序包
    #yum  remove  | erase  package1 [package2] [...]

查看程序包information:
    #yum  info  [...]  信息沒有#rpm  -qi  [...] 詳細

查看指定的特性(可以是某文件)是由哪個程序包所提供:
    #yum  provides | whatprovides  feature1 [feature2] [...]

清理本地緩存:
清除/var/cache/yum/$basearch/$releasever緩存
    #yum  clean [packages | metadata| expire-cache | rpmdb | plugins | all ]

構建緩存:
    #yum makecache

搜索:以指定的關鍵字搜索程序包名及summary(說明)信息
    #yum search  string1 [string2] ..

查看指定包所依賴的capabilities:
  #yum  deplist  package1 [package2] [..]

查看yum事務歷史:
    #yum  history [ info | list | packages-list | packages-info | summary | addon-info | redo | undo| rollback |  new | sync | stats ]
    #yum history
    #yum  history  info 6(即#yum history的ID,查看該ID步驟的詳細信息)
    #yum history  undo 6(撤銷ID步驟的動作 )
    #yum history  redo 6  (重做ID步驟的動作)

 


 

yumdownloader命令

 

作用:利用yum命令只下載rpm包不安裝(方便從外網機復制包到內網機)

 

yumdownloader命令下載

1.首先需要yum下載yum-utils(該包本地yum源即可,epel也有)
未下載前:

 

下載后:多出來的為yum系列命令的其它插件

 

 

2..yumdownloader使用方法

#yumdownloader --resolve(可選,意為下依賴包) --destdir=軟件存放位置 (可選) +軟件包名
例:
#yumdownloader --resolve --destdir=/homt/nethogs nethogs   下載nethogs命令包(yum倉庫由許多rpm包組成,用來解決rpm包之間的依賴關系)

rpm包安裝:

#rpm -ivh --force nethogs-0.8.5-1.el7.x86_64.rpm 忽略報錯,強制直接安裝
或可以直接使用yum安裝該包,同時也方便查找並安裝解決該rpm報的依賴問題。若內網沒有,則肯定還需要再將依賴包一起下載。

 

 


 

 dnf命令使用

①在centos7中,默認還未安裝dnf命令,使用的還是yum;使用dnf命令,還需下載。

②在centos8中,已自動安裝了dnf命令,同時yum命令也可使用。

③dnf命令使用與yum命令使用方式一致,只需將yum改為dnf。

 

centos7中,dnf命令的下載

1.啟動epel-release依賴

使用命令
  # yum install epel-release
 2.使用 epel-release 依賴中的 YUM 命令來安裝 DNF 包。在系統中執行以下命令:
下載dnf命令包
# yum install dnf

 >....關於dnf命令,我在自己的centos7環境下下載失敗,包環境不夠,之后還未測試,因此關於該dnf塊的實驗,可不看。

 >....后續了解到centos8后,再補充。

 
 
 
 
 
 
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM