NEXUS3作为YUM私服的使用
Yum(全称为 Yellow dog Updater, Modified)是一个软件包管理器。Yum基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装。
在开始之前,我先说说自己之前是怎么在不能上网的服务器上安装软件的:
1)本地新安装一台和目标服务器系统一样的虚拟机,在/etc/yum.conf中将“keepcache=0”改成keepcache=1(为了保存安装的rpm包)
2)在本地虚拟机上用yum安装需要的软件
3)把本地虚拟机/var/cache/下的rpm包都拷贝到目标服务器上的一个目录下,并用createrepo进行创建yum源仓库
4)配置目标服务器上的repo源地址
这个过程光看看就非常繁琐,而且yum源中的rpm包是固定死的,不能更新。在了解到了nexus这个大神器之后,我觉得之前的自己真是蠢的有点可爱,哈哈!
用nexus来作为yum私服的好处:
1.节省公网带宽,这个是私服的共有特征。
2.由于权限、配额等原因,公司中有些服务器无法上网,那这些不能上网的服务器怎么安装软件包啊?nexus可以完美的解决这个问题。
一、创建BLOB STORES
和之前maven、npm一样,这里新建一个这里新建一个blob store专门作为yum的存储。
1)Type
选择"File"。
2)Name
就叫yum-blob吧。
3)Enable Soft Quota
限制目录的大小。我这边就不限制了。如果要限制的话,就勾选上,并填上限制的条件和限制的值就OK了。
4)Path
在填入Name之后,path会自动生成。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xCJ9f3Db-1622100148994)(https://www.freesion.com/images/254/233deca35607208cdc058992fea692be.png)]
二、创建一个HOSTED类型的仓库
用户可以把一些自己的构件手动上传至宿主仓库(Hosted Repository)中。
点击"Repository"–>“Repositories”–>“Create repository”,选择yum(hosted)。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-iwAJ6QJO-1622100148996)(https://www.freesion.com/images/597/71e2681a6bc357e901bfc896f32ea055.png)]
1)Name
就叫yum-hosted-my吧。
2)Online
勾选,可以设置这个仓库是在线还是离线。
3)Yum
Repodata Depth:指定创建repodata文件夹的存储库深度,这里选择"2"。
Deploy Policy:布局策略
Strict:严格
Permissive:宽松
这里选择默认的Strict。
4)Storang
Blob store:选择此仓库使用的Blob存储,这里选择之前创建的yum-blob。
Strict Content Type Validation:验证上传内容格式,这里就用默认的勾选。
5)Hosted
Deployment Policy:部署策略,有三个选项,分别是:
Allow Redeploy:允许重新部署
Disable Redeploy:禁止重新部署
Read-Only:只读
我这里使用默认的"Disable Redeploy",如果是开发环境,可以选择"Allow Redeploy"。
6)Cleanup
Cleanup Policies:清除策略,这个是新增的功能,这里先不进行设置。
配置完成后如下图
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MEfiZK27-1622100148998)(https://www.freesion.com/images/682/fd35b0a222b92ac9a38aac405236e252.png)]
三、创建一个PROXY类型的仓库
代理仓库(Proxy Repository)是远程仓库的代理,当用户向这个代理仓库请求一个依赖包时,这个代理仓库会先在本地查找,如果存在,会直接提供给用户进行下载;如果在代理仓库本地查找不到,就会从配置的远程中央仓库中进行下载,下载到私服上之后再提供给用户下载。所以一般我们把私服架设在内网之中,这样可以节省外网带宽,并且大大提高了用户下载依赖的速度。
点击"Repository"–>“Repositories”–>“Create repository”,选择yum(proxy)。
1)Name
因为我要代理阿里云的yum仓库,所以就叫"yum-proxy-aliyun"。
2)Online
勾选,设置成在线。
3)Proxy
Remote storage:设置远程中央仓库的地址,我这里设置成阿里云的yum仓库地址—http://mirrors.aliyun.com/centos/
其他的用默认值即可。
4)Storage
Blob store:选择yum-blob
Strict Content Type Validation:验证上传内容格式,这里就用默认的勾选。
5)Routing,Negative Cache,Cleanup,HTTP
都使用默认配置。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-iqDLzMQ7-1622100149001)(https://www.freesion.com/images/17/8249b2486c4ee9d53a1254ef3165a4d1.png)]
四、创建一个GROUP类型的仓库
仓库组(Repository Group)的目的是将多个仓库(代理仓库和宿主仓库)聚合,对用户暴露统一的地址。当用户需要获取某一个依赖包时,请求的是仓库组的地址,系统将会根据仓库组配置的仓库顺序依次查找。
点击"Repository"–>“Repositories”–>“Create repository”,选择yum(gruop)。
1)Name
yum-group-my
2)Online
勾选,设置成在线
3)Storage
Blob store:选择yum-blob
Strict Content Type Validation:使用默认的勾选
4)Group
将左侧的Available中的仓库列表添加到右侧的Members中。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Lv8fClHf-1622100149003)(https://www.freesion.com/images/349/56d6f03d79acd629a254f3c5148d3b45.png)]
原网址:https://www.freesion.com/article/1005670299/
以上是我在网上搜索创建yum私服时找到的一个十分完整的创建过程,博主已经写得十分详细,但是在原文中进行验证测试时,原文作者系统为Centos7,而我使用的是Centos8,因此出现了一些波折,故在此进行记录,供大家参考。
五、验证测试
测试很简单,找一台不能上网的服务器或者把服务器中的其他yum源配置删除。为了方便,我这里直接把服务器中的其他yum源配置文件删除。
1、客户端配置
先备份原始repo文件
[root@localhost ~]# cd /etc/yum.repos.d/
[root@localhost yum.repos.d]# ls
Centos-7.repo CentOS-Base.repo CentOS-CR.repo CentOS-Debuginfo.repo CentOS-fasttrack.repo CentOS-Media.repo CentOS-Sources.repo CentOS-Vault.repo
[root@localhost yum.repos.d]# mkdir repo_bak
[root@localhost yum.repos.d]# mv *.repo repo_bak/
12345
再创建nexus.repo,注意,就是从这里开始,这个**baseurl=**后面写的每个人都不同
[root@localhost yum.repos.d]# vim nexus.repo
[nexusrepo]
name=Nexus Repository
# 这种路径为centos7及7以前的写法
# baseurl=http://192.168.0.125:9081/repository/yum-group-my/$releasever/os/$basearch/
# 在centos8时 获取路径已经变为了下面这一行
baseurl=http://192.168.66.126:8081/repository/yum-group-test/$releasever/BaseOS/$basearch/os/
# 同时注意,baseurl=后面的地址是你自己的本地nexus的访问地址,每个人都不同!
enabled=1
gpgcheck=0
2、更新客户端的YUM源
用yum celan all
和yum makecache
命令来更新客户端yum源
[root@localhost yum.repos.d]# yum clean all
6 文件已删除
[root@localhost yum.repos.d]# yum makecache
Nexus Repository 356 kB/s | 2.3 MB 00:06
元数据缓存已建立。
到这里,原文作者就开始验证了,但是我并不可以,当我在进行yum命令安装时,提示我并不能够找到命令
[root@localhost yum.repos.d]# yum install vim -y
上次元数据过期检查:0:00:18 前,执行于 2021年05月13日 星期四 15时37分56秒。
未找到匹配的参数: vim
错误:没有任何匹配: vim
它会提示我,找不到相匹配的vim命令,但是我的nexus仓库却已经下载了相关文件,只是并不能下载相关的yum源文件
经过各种各样的实验以及网上搜索,我感觉这应该是和Centos8的yum源中的repo文件是有关系的,因此我去到官网下载了Centos8.repo文件,将下图中的路径全部换成了nexus的proxy的路径
修改完以后如下图:
在此附上nexus.repo的所有内容
[nexus]
name=Nexus Repository
baseurl=http://192.168.66.126:8081/repository/yum-group-test/$releasever/BaseOS/$basearch/os/
enabled=1
gpgcheck=0
[base]
name=CentOS-$releasever - Base - mirrors.aliyun.com
failovermethod=priority
baseurl=http://192.168.66.126:8081/repository/yum-group-test/$releasever/BaseOS/$basearch/os/
http://192.168.66.126:8081/repository/yum-group-test/$releasever/BaseOS/$basearch/os/
http://192.168.66.126:8081/repository/yum-group-test/$releasever/BaseOS/$basearch/os/
gpgcheck=1
gpgkey=http://192.168.66.126:8081/repository/yum-group-test/RPM-GPG-KEY-CentOS-Official
#additional packages that may be useful
[extras]
name=CentOS-$releasever - Extras - mirrors.aliyun.com
failovermethod=priority
baseurl=http://192.168.66.126:8081/repository/yum-group-test/$releasever/extras/$basearch/os/
http://192.168.66.126:8081/repository/yum-group-test/$releasever/extras/$basearch/os/
http://192.168.66.126:8081/repository/yum-group-test/$releasever/extras/$basearch/os/
gpgcheck=1
gpgkey=http://192.168.66.126:8081/repository/yum-group-test//RPM-GPG-KEY-CentOS-Official
#additional packages that extend functionality of existing packages
[centosplus]
name=CentOS-$releasever - Plus - mirrors.aliyun.com
failovermethod=priority
baseurl=http://192.168.66.126:8081/repository/yum-group-test//$releasever/centosplus/$basearch/os/
http://192.168.66.126:8081/repository/yum-group-test/$releasever/centosplus/$basearch/os/
http://192.168.66.126:8081/repository/yum-group-test/$releasever/centosplus/$basearch/os/
gpgcheck=1
enabled=0
gpgkey=http://192.168.66.126:8081/repository/yum-group-test//RPM-GPG-KEY-CentOS-Official
[PowerTools]
name=CentOS-$releasever - PowerTools - mirrors.aliyun.com
failovermethod=priority
baseurl=http://192.168.66.126:8081/repository/yum-group-test//$releasever/PowerTools/$basearch/os/
http://192.168.66.126:8081/repository/yum-group-test/$releasever/PowerTools/$basearch/os/
http://192.168.66.126:8081/repository/yum-group-test/$releasever/PowerTools/$basearch/os/
gpgcheck=1
特意说一下releasever和basearch这两个问题,有时我们在将yum重新安装时没有相关的识别依赖包,在进行yum makecache时可能会识别不出releasever和basearch这两种写法,进而导致刷新缓存失败,可以将releasever直接替换为8,basearch直接替换为x86_64来进行实验。具体原因可以参考这里
3、验证从私服下载
安装vim
[root@localhost yum.repos.d]# yum install vim -y
Nexus Repository 216 kB/s | 1.8 kB 00:00
CentOS-8 - Base - mirrors.aliyun.com 34 MB/s | 2.3 MB 00:00
CentOS-8 - Extras - mirrors.aliyun.com 11 kB/s | 9.6 kB 00:00
CentOS-8 - AppStream - mirrors.aliyun.com 413 kB/s | 6.2 MB 00:15
依赖关系解决。
===============================================================================================================================================================================
软件包 架构 版本 仓库 大小
===============================================================================================================================================================================
安装:
vim-enhanced x86_64 2:8.0.1763-15.el8 AppStream 1.4 M
安装依赖关系:
gpm-libs x86_64 1.20.7-15.el8 AppStream 39 k
vim-common x86_64 2:8.0.1763-15.el8 AppStream 6.3 M
vim-filesystem noarch 2:8.0.1763-15.el8 AppStream 48 k
事务概要
===============================================================================================================================================================================
安装 4 软件包
总下载:7.8 M
安装大小:30 M
下载软件包:
(1/4): gpm-libs-1.20.7-15.el8.x86_64.rpm 159 kB/s | 39 kB 00:00
(2/4): vim-filesystem-8.0.1763-15.el8.noarch.rpm 382 kB/s | 48 kB 00:00
(3/4): vim-enhanced-8.0.1763-15.el8.x86_64.rpm 1.2 MB/s | 1.4 MB 00:01
(4/4): vim-common-8.0.1763-15.el8.x86_64.rpm 1.0 MB/s | 6.3 MB 00:06
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
总计 1.2 MB/s | 7.8 MB 00:06
警告:/var/cache/dnf/AppStream-41dcfd3f812e4932/packages/gpm-libs-1.20.7-15.el8.x86_64.rpm: 头V3 RSA/SHA256 Signature, 密钥 ID 8483c65d: NOKEY
CentOS-8 - AppStream - mirrors.aliyun.com 13 kB/s | 1.6 kB 00:00
导入 GPG 公钥 0x8483C65D:
Userid: "CentOS (CentOS Official Signing Key) <security@centos.org>"
指纹: 99DB 70FA E1D7 CE22 7FB6 4882 05B5 55B3 8483 C65D
来自: http://192.168.66.126:8081/repository/yum-group-test//RPM-GPG-KEY-CentOS-Official
导入公钥成功
运行事务检查
事务检查成功。
运行事务测试
事务测试成功。
运行事务
准备中 : 1/1
安装 : vim-filesystem-2:8.0.1763-15.el8.noarch 1/4
安装 : vim-common-2:8.0.1763-15.el8.x86_64 2/4
安装 : gpm-libs-1.20.7-15.el8.x86_64 3/4
运行脚本: gpm-libs-1.20.7-15.el8.x86_64 3/4
安装 : vim-enhanced-2:8.0.1763-15.el8.x86_64 4/4
运行脚本: vim-enhanced-2:8.0.1763-15.el8.x86_64 4/4
运行脚本: vim-common-2:8.0.1763-15.el8.x86_64 4/4
验证 : gpm-libs-1.20.7-15.el8.x86_64 1/4
验证 : vim-common-2:8.0.1763-15.el8.x86_64 2/4
验证 : vim-enhanced-2:8.0.1763-15.el8.x86_64 3/4
验证 : vim-filesystem-2:8.0.1763-15.el8.noarch 4/4
已安装:
gpm-libs-1.20.7-15.el8.x86_64 vim-common-2:8.0.1763-15.el8.x86_64 vim-enhanced-2:8.0.1763-15.el8.x86_64 vim-filesystem-2:8.0.1763-15.el8.noarch
完毕!
然后再次查看一下仓库。
会发现Appstream和BaseOS还有estras文件夹都已经被下载了,而相关的依赖文件在Appstream下的Packages下进行存储,可以看出Centos8的目录存储结构相对比于Centos7是有很大变化的,至于剩下的两个文件夹我还没有时间进行仔细研究,等下次有时间再研究下这些文件夹都有何作用。