
前言
大家在工作中肯定或多或少的会遇到使用yum源;比如前几天在部署CentOS测试环境,在安装各种中间件的时候,发现各种依赖都没有;后来一检查,发现安装的操作系统是CentOS Mini版,好吧,我认了; 为了完成测试环境的搭建,我就搭建了一个局域网的yum源。本来搭建本地的yum源也没有多大的难度,但是服务器都在内网,所以就需要搭建局域网的yum源。说到yum源搭建,主要有以下两种方式:
无非就这两种,下面就分别对这两种yum源的搭建方式进行总结。
搭建本地yum源
本地yum源,就意味着只有搭建该yum源的这台服务器能使用,其它的服务器都不能使用该yum源。搭建本地yum源的所有步骤如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
| # 在/mnt目录创建挂载镜像的文件夹 cd /mnt mkdir iso
# 将iso镜像挂载到/mnt/iso目录 mount -o loop CentOS-7-x86_64-DVD-1810.iso /mnt/iso # 如果iso镜像已经加载至CentOS系统,采用如下命令,加载光驱至/mnt/iso目录 mount -t iso9660 /dev/sr0 /mnt/iso # 当然你也可以把所有文件都复制到/mnt/iso目录
# 挂载成功后可以使用df -h命令查看 [root@*.*.*.*]# df -h Filesystem Size Used Avail Use% Mounted on /dev/mapper/centos-root 29G 5.3G 23G 19% / devtmpfs 484M 0 484M 0% /dev tmpfs 496M 0 496M 0% /dev/shm tmpfs 496M 6.8M 489M 2% /run tmpfs 496M 0 496M 0% /sys/fs/cgroup /dev/sda1 1014M 132M 883M 13% /boot tmpfs 100M 0 100M 0% /run/user/0 tmpfs 100M 0 100M 0% /run/user/1000 /dev/loop0 4.3G 4.3G 0 100% /mnt/iso
# 修改yum配置文件 cd /etc/yum.repos.d
# 先备份配置文件 mkdir bak mv *.repo ./bak
# 将备份的CentOS-Media.repo文件拷贝出来 cp ./bak/CentOS-Media.repo ./
# 修改CentOS-Media.repo配置文件,修改后内容如下: [c7-media] name=CentOS-$releasever - Media #baseurl=file:///media/CentOS/ # file:///media/cdrom/ # file:///media/cdrecorder/ baseurl=file:///mnt/iso/ gpgcheck=1 enabled=1 # 设置为1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
|
至此搭建本地yum源的操作完成,接下来我们清除原有的yum信息:
这样,一个崭新的本地yum源就可以使用了。
搭建局域网yum源
除了可以搭建本地yum源外,我们还可以基于HTTP方式配置yum源,这样我们就可以配置一个局域网内都可以使用的yum源。
一般都是通过Nginx来搭建HTTP的yum源,首先搭建Nginx,这里就不细说如何搭建Nginx了。接下来将iso镜像文件解压缩到一个目录。现在,我们就可以配置Nginx配置文件了。不建议直接修改nginx.conf,而是在/etc/nginx/conf.d/目录下创建一个新的conf文件,如yum.conf,文件内容如下:
1 2 3 4 5 6 7 8
| server { listen 8080; server_name localhost; location / { autoindex on; root /home/jelly/iso/; # (这里请换成你的实际目录路径) } }
|
最后,在使用该yum源的机器上,我们开始配置yum的配置文件,在/etc/yum.repos.d新建一个名为Nginx-yum.repo的配置文件,内容如下:
1 2 3 4 5 6 7 8
| [Nginx-yum] name=Nginx-yum # mirrorlist=http://mirrorlist.centos.org/?release=$releasever # &arch=$basearch&repo=os&infra=$infra baseurl=http://*.*.*.*:8080 enabled=1 gpgcheck=1 gpgkey=http://*.*.*.*:8080/RPM-GPG-KEY-CentOS-7
|
至此搭建局域网yum源的操作完成,接下来我们清除原有的yum信息:
这样,一个崭新的局域网yum源就可以使用了。
如何在yum源中,添加自定义rpm包
首先,看看有外网链接时,如何使用yum安装Nginx。请移步我的另外一篇文章。
比如,内网机器需要安装nginx服务器,想使用yum安装Nginx,如何把nginx包添加到本地yum源中呢?也许有人建议,使用reposync命令同步阿里yum源、网易yum源或者其它yum源,再复制到内网服务器上。网络上也有很多类似教程,真实施起来费时费力,而且需要很大的储存空间。
这里介绍一种办法,既能使用yum解决软件依赖问题,又不用同步庞大的yum源。即使用yum的downloadonly插件来下载rpm包和依赖包。
1 2 3 4 5
| # 下载安装yumdownloadonly插件 yum install yum-plugin-downloadonly
# 下载到指定目录(依赖包会一起下载) yum install --downloadonly --downloaddir=/root/nginx nginx
|
把rpm包及依赖包通过光盘等方式复制到内网服务器上,制作本地yum源。
1 2 3 4 5 6 7
| # 安装createrepo命令。 yum -y install createrepo # 重建yum源的索引,/mnt/ios/目录下会多出一个repodata的目录 createrepo -v /mnt/ios/ # createrepo命令耗时较长,如果只是添加少量rpm包,可以使用--updata参数, # 大大减少建立索引的时间。 createrepo --update /mnt/iso/
|
使用该局域网yum源的机器,执行以下命令,就可以更新yum源数据了。
1 2
| #yum clean all #yum makecache
|
总结
这篇文章详细的总结了两种搭建yum源的方法,并介绍了如何添加自定义的rpm包,以及建立yum源的rpm索引。通过这篇文章中总结的方法,足以应对我们日常工作中的需要。好了,东西不多,但是非常实用,希望我这里总结的内容对大家有帮助。