使用yum安裝光碟內的套件


安裝完Linux 6.2之後,原本想用gcc編譯一個軟體,但是sh傳回無此指令,用rpm檢查一下:

# rpm -qa | grep gcc

沒有任何回傳值,所以是真的沒有安裝,於是放入光碟準備安裝套件。

# df -vh 
Filesystem            Size  Used Avail Use%     Mounted on
/dev/sda3              38G  5.5G   30G  16%     /
tmpfs                   497M         0   497M   0%  /dev/shm
/dev/sda1           291M   43M   233M  16% /boot

光碟沒有自動mount,必須先手動掛載

#  mount  /dev/cdrom  /media
mount: block device /dev/sr0 is write-protected, mounting read-only

安裝套件
# cd /media/Server/Packages
# rpm -ivh gcc-4.4.6-3.el6.x86_64.rpm

系統提示缺少部份的套件,原本想使用rpm一個一個安裝,但是相依性的問題又覺得太麻煩,
於是參考網路上高手用yum來安裝套件,解決套件相依性的問題。

設定完本機的yum,安裝gcc就變得很簡單了,# yum install -y gcc

以下是我的操作部份:

使用cp指令將光碟資料拷貝到硬碟存放,原本想只以光碟當yum的資料夾,以節省空間
但是因為後續的步驟會寫入檔案到yum的資料夾,所以就把光碟內容複製到硬碟上。

# mkdir /source_data
# mount /dev/cdrom /media
# cp -R /media/. /source_data

因為yum client會向資料的來源(Server、資料夾…)抓取repodata目錄內的XML作為套件檔案列表,
所以下一步驟,是用createrepo指令來產生repodata目錄與XML檔案,但是我一開始安裝時選擇Basic Server,
並沒有自動安裝createrepo的套件,必須先安裝createrepo的套件。

# rpm -ivh createrepo-0.9.8-4.el6.noarch.rpm
warning: createrepo-0.9.8-4.el6.noarch.rpm: Header V3 RSA/SHA256 Signature, key ID ec551f03: NOKEY
error: Failed dependencies:
     deltarpm is needed by createrepo-0.9.8-4.el6.noarch
     python-deltarpm is needed by createrepo-0.9.8-4.el6.noarch

有兩個相依性的套件必須先安裝

# rpm -ivh deltarpm-3.5-0.5.20090913git.el6.x86_64.rpm
warning: deltarpm-3.5-0.5.20090913git.el6.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID ec551f03: NOKEY
Preparing...                ########################################### [100%]
   1:deltarpm               ########################################### [100%]

# rpm -ivh python-deltarpm-3.5-0.5.20090913git.el6.x86_64.rpm
warning: python-deltarpm-3.5-0.5.20090913git.el6.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID ec551f03: NOKEY
Preparing...                ########################################### [100%]
   1:python-deltarpm        ########################################### [100%]

# rpm -ivh createrepo-0.9.8-4.el6.noarch.rpm
warning: createrepo-0.9.8-4.el6.noarch.rpm: Header V3 RSA/SHA256 Signature, key ID ec551f03: NOKEY
Preparing...                ########################################### [100%]
   1:createrepo             ########################################### [100%]

安裝完成後,使用指令createrepo來產生 repodata 目錄以及此目錄下 xml 檔案。

# createrepo /source_data

上述步驟需要一些時間,尤其我是以VirualBox來安裝Linux,花了更多的時間。

編輯新檔案test01.repo,檔案名稱自訂,但是副檔名必須是.repo。也可以加在/etc/yum.conf內

# vi /etc/yum.repos.d/test01.repo

[test01]
name=test01
baseurl=file:///source_data
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-oracle

參考文件上是設定gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release,但是我是安裝Oracle Linux,
在/etc/pki/rpm-gpg找不到該檔案,所以以RPM-GPG-KEY-oracle來使用。
「baseurl=file:///source_data」是指本機 /source_data 目錄下的檔案,第三個斜線的意義是「根目錄」
「enabled=1」表示啟字(1 啟用 0 停用)。
baseurl參數除了「file://」方式之外,還有「ftp://」與「http://」兩種方式,所以也可以指定外部的yum Server

執行yum list來試試看

# yum list
Loaded plugins: security
source_data                                                                            | 1.3 kB     00:00 ...
source_data/primary                                                                    |  11 MB     00:00 ...
source_data: [###############                                                                    ] 4107/21504


資料參考:
使用 yum 來做套件管理以及建置 yum Server
作者:徐秉義(Albert Hsu)

利用Plink替代Putty來建立Script