1.实际的问题
由于工作中遇到需要在服务器上部署Kettle,但是Kettle需要图形化操作,这个时候需要安装vncserver服务,通过vnc客户端连接服务器,进行可视化的操作,但是在安装vncserver的时候由于为了安全考虑,机房的服务器是不能上网的,通过本地下载rpm包上传到服务器,又会遇到rpm包的各种依赖(树形依赖A-B-C,环形依赖A-B-C-A【同时安装能解决】,模块依赖一般是.so.2结尾的,需要去http://rpm.pbone.net/这个网站查询对应的rpm,安装这个模块),在这个过程中遇到了很多太多rpm的依赖,还有一些版本的冲突,且服务器不能也不允许上网,导致Kettle部署不成功。
总结:服务器不能上网导致不能使用Yum,安装软件rpm方式太多依赖。
2.解决办法:
部署本地yum源,通过yum -install 解决
3.具体步骤
1.用本地文件创建本地Yum源
mkdir /mnt/iso
mkdir/mnt/cdrom
2.将下载好的centosXXX的iso镜像上传到/mnt/iso下
3.将/mnt/iso/下的iso文件挂载到/mnt/cdrom下
mount -o loop /mnt/iso/XXXX.iso /mnt/cdrom
有时候会报错,需要umount解开挂载
查看是否挂载成功df-h
4.修改/etc/yum.repos.d/下面的所有以*.repo的文件,创建一个文件夹,将 *.repo的文件移动到这个文件夹中
mkdir /etc/yum.repos.d/bak
mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/bak
5.新建自己的.repo文件
vi myself.repo
内容如下
[Mybase]
name=RedHat
#注:这里的baseurl就是你挂载的目录,在这里是/mnt/cdrom
baseurl=file:///mnt/cdrom
#注:这里的值enabled一定要为1
enabled=1
#gpgckeck的值无所谓,为1,进行安装包的校验,是否被篡改,gpgkey这一个提供的是rpm包的公钥
gpgckeck=0
#不提供秘钥检验所以没有key
#注:这个你cd /mnt/cdrom/可以看到这个key,这里仅仅是个例子
#gpgkey=file:///mnt/cdrom/RPM-GPG-KEY-redhat-release
6.测试
yum clean all
yum install vim
7.成功
有一个特别坑的地方:myself.repo中我们设置的gpgckeck=0是不需要进行公钥校验的,但是在实际的过程中安装一些软件必须公钥验证的,这个时候就会报公钥不存在的错误,导致你的包无法安装!
解决办法:完成以上步骤6之后,我们需要在/mnt/cdrom下进行
rpm --ivh/mnt/cdrom/*GPG*,安装好之后会在cdrom下面生成很多文件,然后能看到RPM-GPG-KEY-redhat-release这个,复制,然后修改myself.repo,需要改两个地方
gpgckeck=1
gpgkey=file:///mnt/cdrom/RPM-GPG-KEY-redhat-release 去掉注释
内容如下
[Mybase]
name=RedHat
#注:这里的baseurl就是你挂载的目录,在这里是/mnt/cdrom
baseurl=file:///mnt/cdrom
#注:这里的值enabled一定要为1
enabled=1
#gpgckeck的值无所谓,为1,进行安装包的校验,是否被篡改,gpgkey这一个提供的是rpm包的公钥
gpgckeck=1
#不提供秘钥检验所以没有key
#注:这个你cd /mnt/cdrom/可以看到这个key,这里仅仅是个例子
gpgkey=file:///mnt/cdrom/RPM-GPG-KEY-redhat-release
这样就大功告成