公司的服务器都是禁止连接外网的,刚安装的系统缺少很多软件包,只能下载Tarball或者RPM包上传到服务器上安装,解决依赖问题过于麻烦,浪费时间。
yum可以自动检测并解决软件包之间的依赖问题,可是默认情况下,yum依赖网络工作。这种情况下,我们有两种解决方式。一个是挂载ISO镜像,一个是建立一个局域网内的yum“源”服务器。
一、挂载ISO镜像
CentOS安装镜像内有一个Packages目录,里面包含大量的RPM包,可以以此来创建本地yum仓库。
1、首先下载CentOS镜像
我们安装的时候,大部分都是选择最小化安装。但是为了获取比较齐全的包,此时就需要下载完整的镜像,有DVD版本和Everything版本,一般来说,DVD版本就够用了,Everything版本更加齐全。
我这里就以Everything版本为例,CentOS-7-x86_64-Everything-2009.iso
,整个镜像接近10G!
2、将镜像上传到主机
这里自由发挥,用喜欢的工具上传到主机上。笔者上传到了/home/CentOS-7-x86_64-Everything-2009.iso
。
3、挂载镜像
使用mount
挂载iso镜像。
mkdir /mnt/vcdrom
mount /home/CentOS-7-x86_64-Everything-2009.iso /mnt/vcdrom
4、拷贝出需要的包
进入挂载的目录,我们需要的只是Packages目录。将它拷贝出来。
cp -av /mnt/vcdrom/Packages /media/local-repos
5、通过rpm创建yum仓库
首先在Packages里找到createrepo-*
这个包,通过rpm安装。createrepo需要两个依赖包,提前安装。
rpm -ivh deltarpm-3.6-3.el7.x86_64.rpm
rpm -ivh python-deltarpm-3.6-3.el7.x86_64.rpm
rpm -ivh createrepo-0.9.9-28.el7.noarch.rpm
使用createrepo创建仓库。
createrepo -v /media/local-repos/Packages
5、编辑yum配置文件
yum默认使用网络源,需要将其禁用。
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak
mv /etc/yum.repos.d/CentOS-Debuginfo.repo /etc/yum.repos.d/CentOS-Debuginfo.repo.bak
mv /etc/yum.repos.d/CentOS-Vault.repo /etc/yum.repos.d/CentOS-Vault.repo.bak
配置本地源/etc/yum.repos.d/CentOS-Media.repo
。
[c7-media] #仓库名称,不能用特殊符号
name=CentOS-$releasever - Media #仓库描述
baseurl=file:///media/local-repos/Packages/ #指定仓库的路径,可以有多个,这里我们只有一个,将另外两个删掉
#file:///media/cdrom/
#file:///media/cdrecorder/
gpgcheck=0 #禁用检验软件包的数字签名
enabled=1 #启用仓库
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
更新yum缓存。
yum clean all
yum makecache
尝试使用yum安装软件试试吧。
二、建里局域网源服务器
以后再说……忙去了……