2014年3月5日

yum使用CentOS光碟離線安裝套件


 
yum 這個工具主要是在 RedHat 及其衍生版本(RHEL, CentOS, Fedora)安裝套件使用,
通常透過 yum 會自動在網路 mirror 上自動下載更新套件 rpm,
同時會判斷相依套件非常方便!

然而在某些環境可能無法透過網路連外(如公司內部或隔離環境),
若要自行下載所有套件上傳到CentOS上安裝,光下載所有相依套件就煩死人了。
其實大多數的套件 rpm 都已包含在 CentOS release 的光碟中,
只要將 yum 的安裝來源指向 cdrom中的光碟 (或是已掛載的 iso亦可),
這樣就同樣能透過 yum 指令自動從安裝光碟中找到所需套件囉!


以下所使用的環境是 CentOS 6.5,
在安裝之前讓我們來看看 yum 預設的 media repository 裡頭設定長怎樣:
[root@demo ~]# cat /etc/yum.repos.d/CentOS-Media.repo 
# CentOS-Media.repo
#
#  This repo can be used with mounted DVD media, verify the mount point for
#  CentOS-6.  You can use this repo and yum to install items directly off the
#  DVD ISO that we release.
#
# To use this repo, put in your DVD and use it with the other repos too:
#  yum --enablerepo=c6-media [command]
#  
# or for ONLY the media repo, do this:
#
#  yum --disablerepo=\* --enablerepo=c6-media [command]
 
[c6-media]
name=CentOS-$releasever - Media
baseurl=file:///media/CentOS/
        file:///media/cdrom/
        file:///media/cdrecorder/
gpgcheck=1
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
[root@demo ~]# 

由上面很清楚看得出來,c6-media 這個 repository 包含了下面幾個路徑,
只要我們把光碟掛載到這些路徑底下就可以了,下面會以標紅色的/media/cdrom/為例,
  • file:///media/CentOS/
  • file:///media/cdrom/
  • file:///media/cdrecorder/
另外因為 enabled=0 預設是不啟用,所以如果要啟用,
一種方式是把他改為 enabled=1,這樣之後應該可以直接下一般的yum指令,
若只是想暫時啟用,就可以照著上面的文字指示輸入指令:
# To use this repo, put in your DVD and use it with the other repos too:
#  yum --enablerepo=c6-media [command]
#  
# or for ONLY the media repo, do this:
#
#  yum --disablerepo=\* --enablerepo=c6-media [command]

既然會用到光碟來安裝套件,那麼通常就是因為網路不通才這麼麻煩,
所以我們都是用第二個指令,不使用其他網路 repository 而只用 c6-media 這個 repository。

步驟一:掛載光碟至 /media/cdrom 路徑底下,若路徑不存在記得先 mkdir
[root@demo ~]# mkdir /media/cdrom
[root@demo ~]# mount /dev/cdrom /media/cdrom
mount: block device /dev/xvdd1 is write-protected, mounting read-only
[root@demo ~]#

步驟二:輸入指令安裝所需套件,這邊的範例是安裝 lynx,
從下面可以看得出來套件都是從 c6-media 中抓到的。
[root@demo ~]# yum --disablerepo=\* --enablerepo=c6-media install lynx
Loaded plugins: fastestmirror
Trying other mirror.
c6-media                                                     | 4.0 kB     00:00 ... 
c6-media/primary_db                                          | 4.4 MB     00:00 ... 
Setting up Install Process
Resolving Dependencies
--> Running transaction check
---> Package lynx.x86_64 0:2.8.6-27.el6 will be installed
--> Processing Dependency: redhat-indexhtml for package: lynx-2.8.6-27.el6.x86_64
--> Running transaction check
---> Package centos-indexhtml.noarch 0:6-1.el6.centos will be installed
--> Finished Dependency Resolution

Dependencies Resolved

===================================================================================
 Package            Arch            Version                Repository         Size
===================================================================================
Installing:
 lynx               x86_64          2.8.6-27.el6           c6-media          1.3 M
Installing for dependencies:
 centos-indexhtml   noarch          6-1.el6.centos         c6-media           70 k

Transaction Summary
===================================================================================
Install       2 Package(s)

Total download size: 1.4 M
Installed size: 4.8 M
Is this ok [y/N]: y
Downloading Packages:
-----------------------------------------------------------------------------------
Total                                                    11 MB/s | 1.4 MB     00:00     
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
  Installing : centos-indexhtml-6-1.el6.centos.noarch                           1/2 
  Installing : lynx-2.8.6-27.el6.x86_64                                         2/2 
  Verifying  : lynx-2.8.6-27.el6.x86_64                                         1/2 
  Verifying  : centos-indexhtml-6-1.el6.centos.noarch                           2/2 

Installed:
  lynx.x86_64 0:2.8.6-27.el6                                                                            

Dependency Installed:
  centos-indexhtml.noarch 0:6-1.el6.centos                                                              

Complete!
[root@demo ~]# 

如果是 CentOS 5 的步驟也都一樣,只要把 c6-media 改成 c5-media即可:
#  yum --disablerepo=\* --enablerepo=c5-media [command]

透過上面簡單的步驟,只要修改光碟掛載的路徑,並把 yum 的安裝指令改一下,
就可以直接使用 CentOS 的安裝光碟離線安裝所需套件啦,是不是很簡單呢?
若有下載舊版 rpm 或 iso 的需求,可以參考我先前寫過的文章:
舊版 CentOS 光碟映像檔 ISO、套件下載
若有指令但不知道該下載哪個套件,可以參考這篇:
使用 rpm.find 找指令、套件教學

本文出自符碼記憶,請勿全文轉載,部份轉載請註明出處 關鍵字:yum, install, CentOS, 5, 6, CD, DVD, rom, 光碟, 離線, 安裝, 套件, package, repository
參考資料:


更多精選推薦文章