> CentOS > CentOS入门 >

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.repo CentOS-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.6 from install of lib64stdc++6-4.6.1-2.x86_64 conflicts with file from package libstdc++-4.4.7-11.el6.x86_64 file /usr/lib64/libstdc++.so.6 from install of lib64stdc++6-4.6.1-2.i686 conflicts with file from package libstdc++-4.4.7-11.el6.i686

一般情况下直接

yum -y remove libstdc++-4.4.7-11.el6.i686

yum -y remove libstdc++-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

也是人才



参考:

file xxx from install of xxx conflicts with file from xxx

Linux下,如何安装有互相依赖关系的RPM包[转]

安装oracle11g R2 缺少依赖包

CentOS 将 yum 源设置成本地IOS镜像

  (责任编辑:IT)