yum相较于rpm,能够更好地解决安装软件时的依赖包问题,使用yum安装更简单更方便。搭建本地YUM源服务器,可以避免升级安装软件时占用公网带宽;有了本地YUM源服务器,可以解决无法连接Internet的其他YUM客户端的软件升级和安装。
与其他私服一样的,yum私服同样有三种类型:
hosted
: 本地存储,即同 yum 官方仓库一样提供本地私服功能proxy
: 提供代理其他仓库的类型,如我们常用的163仓库group
: 组类型,实质作用是组合多个仓库为一个地址,相当于一个透明代理。
那么就来一个一个创建。
1,创建blob存储
为其创建一个单独的存储空间,命名为yum-hub
。
2,创建hosted类型的yum库
后来才发现,其实每次创建的这个hosted类型的,并没有什么用。不过照例创建一波吧。
Name
::定义一个名称local-yumStorage
:Blob store,我们下拉选择前面创建好的专用blob:yum-hub。Hosted
:开发环境,我们运行重复发布,因此Delpoyment policy 我们选择Allow redeploy。这个很重要!
整体配置截图如下:
3,创建一个proxy类型的yum仓库
Name
: proxy-163-yumProxy
:Remote Storage: 远程仓库地址,这里填写: http://mirrors.163.com/centos/Storage
: yum-hub
其他的均是默认。
这里就先创建一个代理163的仓库,其实还可以多创建几个,诸如阿里云的,搜狐的,等等,这个根据个人需求来定义。
整体配置截图如下:
4,创建一个group类型的yum仓库
Name
:group-yumStorage
:选择专用的blob存储yum-hub。group
: 将左边可选的2个仓库,添加到右边的members下。
整体配置截图如下:
这些配置完成之后,就可以使用了。
5,构建缓存
新建一台环境干净的主机,此时需要保证这台主机能够上网,因为私服当中还没有进行初始化。
先简单配置一下,将yum源指向到私服中来。
cd /etc/yum.repos.d/
mkdir bak
mv * bak/
2,创建一个新的源
vim nexus.repo
添加如下内容:
其中的url就是私服当中创建的group的对外地址,后面的$releasever/os/$basearch/
不要漏掉了。
[nexus]
name=Nexus Repository
baseurl=http://192.168.75.11:8081/repository/group-yum/$releasever/os/$basearch/
enabled=1
gpgcheck=0
注意这还不是完整内容,我第一次构建的时候只写了这些内容,以求私服自己能够通过刚刚配置的proxy将远程的包拉下来,最后发现这种方式,死活都是无法成功的。
因此,这里还应该将163的源配置添加进来。
注意:CentOS8系统的不一样
完整内容应该如下:
[nexus]
name=Nexus Repository
baseurl=http://192.168.106.65:8081/repository/group-yum/$releasever/os/$basearch/
enabled=1
gpgcheck=0
#released updates
[updates]
name=CentOS-$releasever-Updates-163.com
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=updates
baseurl=http://mirrors.163.com/centos/$releasever/updates/$basearch/
gpgcheck=1
gpgkey=http://mirrors.163.com/centos/RPM-GPG-KEY-CentOS-7
#additional packages that may be useful
[extras]
name=CentOS-$releasever-Extras-163.com
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=extras
baseurl=http://mirrors.163.com/centos/$releasever/extras/$basearch/
gpgcheck=1
gpgkey=http://mirrors.163.com/centos/RPM-GPG-KEY-CentOS-7
#additional packages that extend functionality of existing packages
[centosplus]
name=CentOS-$releasever-Plus-163.com
baseurl=http://mirrors.163.com/centos/$releasever/centosplus/$basearch/
gpgcheck=1
enabled=0
gpgkey=http://mirrors.163.com/centos/RPM-GPG-KEY-CentOS-7
注意:不知是否还可以添加其他的源内容,比如epel-release的源内容?
3,构建缓存
现在,就可以通过make cache将远程的包拉到内部私服当中了。
操作之前,就像古代变戏法一般的,依旧先去私服看一眼group-yum
当中是否有包存在,这是一个固定流程哈。
可以看到空空如也,那么通过如下三步操作创建缓存。
# yum clean all
# yum makecache
# yum -y install httpd
当上边的第三步执行完成之后,此时我们可以回到刚刚那个空白的页面,看看内容是否上来了。
6,验证一下效果
验证的方式其实也很简单,找一台不能上网但是可以与刚刚私服通信的主机,将其yum源指向的配置好的私服,看看安装软件什么的是否可以so easy。
或者是将其他的源都切断,然后yum源仅仅指向私服,看看安装是否顺利。
这里采用第二种方式简单试验一下。
1,将原有的移走
# cd /etc/yum.repos.d/
# mkdir bak
# mv * bak
2,创建一个新的源
cat /etc/yum.repos.d/nexus.repo
[nexus]
name=Nexus Repository
baseurl=http://192.168.75.11:8081/repository/group-yum/$releasever/os/$basearch/
enabled=1
gpgcheck=0
然后安装软件