1. 程式人生 > >centos在沒有網路連線的情況下安裝rpm包

centos在沒有網路連線的情況下安裝rpm包

因為沒有網路連線,所以yum使用不了,這是我在手動安裝時遇到的一些問題及其解決辦法

一. 首先想到的方法應該是掛載centos ios映象,因為裡面的packages有本版本的所有rpm包,最好是本機安裝的映象。步驟如下:

1、先把光碟掛上

mount  -o loop /mnt/iso/CentOS5.iso /mnt/cdrom

2、理解個道理

CentOS有兩個yum源,它們在/etc/yum.repos.d/下面有兩個檔案:CentOS-Base.repo和CentOS-Media.repo。但這兩個源不是同時使用的,預設使用的是採用網際網路升級的CentOS-Base.repo源(這檔案裡都是網址,你可以自己看看),除非我們手動修改讓系統使用Media源,而Media源就是指計算機本地的源,就包含我們方才掛上的本地光碟。

3、開始操作

首先,把CentOS-Base.repo檔案改名,讓系統找不到該檔案,從而不能使用網際網路的更新方式:

mv CentOS-Base.repo CentOS-Base.repo.bak

然後,

cpCentOS-Media.repoCentOS-Media.repo.bak
vi CentOS-Media.repo

把以下三行的後兩行刪除
baseurl=file:///media/CentOS/
     file:///media/cdrom/
     file:///media/cdrecorder/

第一行修改為掛載光碟的路徑,如下:

baseurl=file:////mnt/cdrom/

然後,找到這個屬性,將值改成1,這樣就打開了本地原始檔的使能開關。
enabled=0

改成 
enabled=1

儲存即可。

然後可以通過yum check-update 或者yum install * 來測試源是否成功和生效。

但是這樣做有個問題,就是你的這個源和你係統的源有可能不同,這就需要你掛載裝機的iso映象。如果不是的話,你在yum安裝時,會出現依賴包版本不一,仍然無法安裝,不知道能不能將其依賴包也更新?

二.手動安裝。

如果實在找不到源的話,只能自己手動安裝了,缺少哪個包就google裡搜尋哪個包,當然不是隨便下載,需要找對版本,因為其依賴包可能已經安裝,需要下載和其依賴包相同的版本。如果運氣不好的話,依賴-依賴-依賴-依賴,這個棧要有好幾層。下面是常用的下載包的網址:

http://rpmfind.net/linux/RPM/index.html

http://vault.centos.org/         

http://mirror.centos.org/centos/

這裡面有每個版本具體包下載,其中http://vault.centos.org/ 中的包是最全的,官方不贊成使用某些包,原因是

This directory (and version of CentOS) is deprecated.  For normal users,
you should use /6/ and not /6.6/ in your path. Please see this FAQ
concerning the CentOS release scheme:

https://wiki.centos.org/FAQ/General

If you know what you are doing, and absolutely want to remain at the 6.6
level, go to http://vault.centos.org/ for packages. 

Please keep in mind that 6.0, 6.1, 6.2, 6.3, 6.4 , 6.5 and 6.6 no longer gets any updates, nor
any security fix's.

下面記錄下我手動安裝包時的順序:

mpfr-2.4.1-6.el6.x86_64.rpm
cpp-4.4.7-4.el6.x86_64.rpm
ppl-0.10.2-11.el6.x86_64.rpm
cloog-ppl-0.15.7-1.2.el6.x86_64.rpm
gcc-4.4.7-4.el6.x86_64.rpm
libstdc++-4.4.7-4.el6.i686.rpm
libstdc++-devel-4.4.7-4.el6.i686.rpm
gcc-c++-4.4.7-4.el6.x86_64.rpm
rpm -ivh compat-libstdc++-33-3.2.3-69.el6.i686.rpm
elfutils-libelf-devel-0.152-1.el6.x86_64.rpm
glibc-devel-2.12-1.132.el6.i686.rpm
libaio-devel-0.3.107-10.el6.i686.rpm
libaio-devel-0.3.107-10.el6.x86_64.rpm
libaio-0.3.107-10.el6.i686.rpm
unixODBC-2.2.14-14.el6.x86_64.rpm
unixODBC-devel-2.2.14-14.el6.x86_64.rpm

下面是安裝過程中遇到的一些問題:

1. 包衝突的問題

file /usr/lib64/libstdc++.so.6from installof lib64stdc++6-4.6.1-2.x86_64 conflictswithfile from package libstdc++-4.4.7-11.el6.x86_64file /usr/lib64/libstdc++.so.6from install of lib64stdc++6-4.6.1-2.i686 conflictswithfile from package libstdc++-4.4.7-11.el6.i686

一般情況下直接

yum-yremovelibstdc++-4.4.7-11.el6.i686

yum-yremovelibstdc++-4.4.7-11.el6.x86_64

但是這樣有可能將依賴包全部解除安裝,使事情更糟糕

2. 互相依賴的問題

如果手動安裝rpm包的話,很多情況下會出現兩個包互相依賴

# rpm -ivh elfutils-devel-0.125-3.el5.i386.rpm

warning: elfutils-devel-0.125-3.el5.i386.rpm: Header V3 DSA signature: NOKEY, key ID 37017186

error: Failed dependencies:

       elfutils-devel-static = 0.125-3.el5 is needed by elfutils-devel-0.125-3.el5.i386

       elfutils-libelf-devel = 0.125-3.el5 is needed by elfutils-devel-0.125-3.el5.i386

# rpm -ivh elfutils-devel-static-0.125-3.el5.i386.rpm

warning: elfutils-devel-static-0.125-3.el5.i386.rpm: Header V3 DSA signature: NOKEY, key ID 37017186

error: Failed dependencies:

       elfutils-devel = 0.125-3.el5 is needed by elfutils-devel-static-0.125-3.el5.i386

       elfutils-libelf-devel-static = 0.125-3.el5 is needed by elfutils-devel-static-0.125-3.el5.i386

這種情況下,只需要將兩個包一起安裝就可以了,即:

rpm -ivh elfutils-devel-0.125-3.el5.i386.rpm elfutils-devel-static-0.125-3.el5.i386.rpm

也是人才

參考: