资讯动态

Nexus 仓库类型及创建

发布时间:2026/10/26 18:20:55 来源:尧图企业网站定制
Nexus 仓库类型及创建Nexus 支持 Maven、npm、Docker、PyPI、YUM 等多种仓库格式可用于统一管理企业的软件依赖和构建制品。不同格式的仓库用途不同但主要分为以下三种类型仓库类型作用使用场景Hosted托管保存自己上传的软件包企业内部 JAR、RPMProxy代理代理远程仓库并缓存软件包Maven Central、阿里云 YUM 源Group仓库组聚合多个同格式仓库提供统一访问入口Maven 统一下载地址简单理解Hosted自己存放软件包的仓库。Proxy从远程软件源获取并缓存软件包。Group将多个仓库整合成一个访问入口。了解三种类型后下面通过一个实际场景验证 Nexus 的代理缓存功能。一、YUM Proxy代理阿里云 openEuler 软件源需求说明在日常 Linux 运维中通常通过 YUM/DNF 从远程软件源下载 RPM 软件包。现在希望将阿里云镜像源接入 Nexus由 Nexus 统一代理并缓存下载的软件包。Linux 客户端 │ │ yum install ▼ NexusYUM Proxy │ ├── 有缓存 → 返回软件包 │ └── 无缓存 → 阿里云镜像源 │ ▼ 下载并缓存本次选择yum (proxy)不涉及 Hosted 和 Group 的配置。1. 确认客户端操作系统cat /etc/os-release uname -m当前实验环境操作系统openEuler 20.03 LTS-SP4CPU 架构x86_64以实际命令结果为准Nexus 版本3.97.2确认系统版本和架构是为了选择对应的软件源避免混用不同发行版的软件包。2. 查找并验证阿里云软件源根据操作系统版本选择对应的阿里云镜像仓库。以 openEuler 20.03 LTS-SP4 x86_64 为例https://mirrors.aliyun.com/openeuler/openEuler-20.03-LTS-SP4/OS/x86_64/验证 YUM 仓库元数据curl -L -o /dev/null -sS \ -w HTTP_CODE%{http_code}\n \ https://mirrors.aliyun.com/openeuler/openEuler-20.03-LTS-SP4/OS/x86_64/repodata/repomd.xml预期返回HTTP_CODE2003. 在 Nexus 中创建 YUM Proxy进入 Nexus 管理界面Settings → Repositories → Create repository选择yum (proxy)。填写仓库配置配置项配置值Nameopeneuler20-sp4-osRemote storageopeneuler-openEuler-20.03-LTS-SP4-OS-x86_64安装包下载-开源镜像站-阿里云Blob storedefaultOnline开启其他配置暂时保持默认点击 Create repository 保存。4. 验证 Nexus 代理仓库通过 Nexus 地址请求相同的仓库元数据curl -L -o /dev/null -sS \ -w HTTP_CODE%{http_code}\n \ http://127.0.0.1:8081/repository/openeuler20-sp4-os/repodata/repomd.xml预期返回HTTP_CODE200说明 Nexus 能够正常返回该仓库的元数据。5. Linux 客户端配置 Nexus 软件源创建仓库配置文件vim /etc/yum.repos.d/nexus.repo配置 Nexus 代理地址[nexus-openeuler-os] nameNexus openEuler 20.03 SP4 OS baseurlhttp://127.0.0.1:8081/repository/openeuler20-sp4-os/ enabled1 gpgcheck1 # gpgkey填写已核实的 openEuler 签名公钥地址注意正式进行 RPM 安装前必须配置并验证可信的 GPG 公钥。127.0.0.1仅适用于 Nexus 与客户端位于同一台服务器的情况。6. 验证 YUM 仓库只使用本次创建的 Nexus 仓库测试dnf --disablerepo* \ --enablereponexus-openeuler-os \ makecache再执行dnf --disablerepo* \ --enablereponexus-openeuler-os \ list available检查仓库元数据及软件包列表是否正常返回。回到浏览器中Nexus YUM Proxy 已经缓存了 openEuler 软件仓库的元数据当前截图中只能证明仓库元数据已经缓存不能证明 RPM 软件包已经缓存验证 RPM 的实际下载与缓存确认 Nexus 不只能提供元数据还能返回安装包。7. 验证 RPM 下载与缓存在配置了 Nexus YUM 源的 openEuler 客户端执行# 刷新仓库元数据 dnf --disablerepo* \ --enablereponexus-openeuler-os \ makecache # 查看仓库可用软件 dnf --disablerepo* \ --enablereponexus-openeuler-os \ list available # 仅下载 RPM不安装 dnf --disablerepo* \ --enablereponexus-openeuler-os \ download --destdir/tmp bash加了两个参数--disablerepo* # 禁用所有仓库 --enablereponexus-openeuler-os # 只启用 Nexus 仓库目的是确保测试流量只经过 Nexus而不是其他阿里云源。日常使用可以简化如果你的/etc/yum.repos.d/nexus.repo已经设置enabled1就可以执行# 刷新仓库缓存 dnf makecache # 查找软件 dnf list available # 安装软件例如 tree dnf install tree -y再次回到浏览器就可以看到刚才下载过一遍缓存起来了阶段总结完成 YUM Proxy 创建后Linux 客户端可以通过 Nexus 获取对应发行版的软件包而 Nexus 根据实际请求从阿里云下载并缓存。二、Docker 安装源通过 Nexus 代理 Docker RPM 软件包此处提及的 Docker 代理仓库并非用于下载 Docker 镜像的存储库是针对安装 Docker 服务的软件包仓库。1. 创建 YUM Proxy进入 NexusSettings → Repositories → Create repository → yum (proxy)配置项配置值Namedocker-rpm-openeulerRemote storagehttps://mirrors.aliyun.com/openeuler/openEuler-20.03-LTS-SP4/update/x86_64/Blob storedefaultOnline开启注意该仓库是 openEuler 的系统更新源不仅包含 Docker也包含其他更新软件包。2. 验证 Nexus 代理curl -L -o /dev/null -sS \ -w HTTP_CODE%{http_code}\n \ http://127.0.0.1:8081/repository/docker-rpm-openeuler/repodata/repomd.xml预期返回HTTP_CODE2003. 配置 Linux 客户端在/etc/yum.repos.d/nexus.repo增加[nexus-openeuler-update] nameNexus openEuler 20.03 SP4 Update baseurlhttp://127.0.0.1:8081/repository/docker-rpm-openeuler/ enabled1 gpgcheck1 gpgkeyhttps://mirrors.aliyun.com/openeuler/openEuler-20.03-LTS-SP4/OS/x86_64/RPM-GPG-KEY-openEuler该地址适用于 Nexus 与客户端在同一台服务器的实验环境。生产环境应使用可信 HTTPS 入口并核验 RPM 签名公钥。4. 验证 Docker 安装包dnf --disablerepo* \ --enablereponexus-openeuler-update \ list --showduplicates docker-engine预期可以看到docker-engine的可用版本。如果是在全新的 openEuler 测试客户端上安装可在确认依赖和软件包兼容性后执行dnf install docker-engine安装完成后systemctl enable --now docker docker version注意当前 Nexus 服务器已经安装并运行 Docker不要为了验证缓存而直接重新安装或升级 Docker以免影响正在运行的 Nexus 服务。三、Kubernetes 安装源代理 K8s RPM 软件包1. 创建 Nexus YUM ProxySettings → Repositories → Create repository → yum (proxy)配置项配置值Namekubernetes-v1.30-rpmRemote storagehttps://mirrors.aliyun.com/kubernetes-new/core/stable/v1.30/rpm/Blob storedefaultOnline开启注意Remote storage 不要加x86_64/因为 YUM 仓库的repodata位于rpm/根目录下。如何判断是否需要取消文件严格校验模式保存后执行curl -I -L \ http://127.0.0.1:8081/repository/kubernetes-v1.30-rpm/repodata/repomd.xml如果能正常返回200就不需要动这个选项。如果失败先看 Nexus 日志docker logs --tail 100 nexus只有当日志明确出现 MIME、Content Type 或InvalidContentException相关校验错误才考虑关闭它进行对比测试。单纯的404、超时或网络连接失败不是关闭该选项的理由。一句话记住严格校验默认开启确实遇到文件类型兼容问题时再关闭。 关闭它不是解决网络问题的万能开关。2. 验证阿里云上游curl -L -o /dev/null -sS \ -w HTTP_CODE%{http_code}\n \ https://mirrors.aliyun.com/kubernetes-new/core/stable/v1.30/rpm/repodata/repomd.xml预期返回HTTP_CODE200。3. 验证 Nexus 代理curl -L -o /dev/null -sS \ -w HTTP_CODE%{http_code}\n \ http://127.0.0.1:8081/repository/kubernetes-v1.30-rpm/repodata/repomd.xml预期返回HTTP_CODE200。4. 配置客户端软件源[nexus-kubernetes] nameNexus Kubernetes v1.30 baseurlhttp://127.0.0.1:8081/repository/kubernetes-v1.30-rpm/ enabled1 gpgcheck1 gpgkeyhttps://mirrors.aliyun.com/kubernetes-new/core/stable/v1.30/rpm/repodata/repomd.xml.key excludekubelet kubeadm kubectl cri-tools kubernetes-cni5. 查询 Kubernetes 安装包dnf --disablerepo* \ --enablereponexus-kubernetes \ --disableexcludesnexus-kubernetes \ list --showduplicates kubeadm如果能看到kubeadm的 1.30.x 版本再回到 Nexus Browse 检查元数据缓存。这里还有一个细节阿里云镜像站说明部分版本可能遇到仓库索引签名校验问题出现该错误时应先核实镜像源同步情况和签名不建议直接关闭 GPG 校验。最终统一原则Nexus 代理阿里云Linux 客户端访问 Nexus。Linux 客户端 │ ▼ Nexus YUM Proxy │ ▼ 阿里云 Kubernetes v1.30 RPM 仓库四、Maven 仓库代理阿里云 Maven 软件源需求说明Java 项目在使用 Maven 构建时需要下载 JAR、POM 等依赖文件。例如 Jenkins 执行mvn package通过 Nexus Maven Proxy 代理阿里云 Maven 仓库可以统一缓存 Java 项目依赖减少重复下载。1. 创建 Maven Proxy 仓库进入Settings → Repositories → Create repository → maven2 (proxy)配置项配置值Namemaven-aliyunRemote storagehttps://maven.aliyun.com/repository/publicVersion policyReleaseLayout policyStrictBlob storedefaultOnline开启保存仓库。2. 验证 Nexus 代理以 JUnit 4.13.2 为例curl -L -o /dev/null -sS \ -w HTTP_CODE%{http_code}\n \ http://127.0.0.1:8081/repository/maven-aliyun/junit/junit/4.13.2/junit-4.13.2.pom预期返回HTTP_CODE200说明 Nexus 能够获取相应 Maven 依赖文件。3. 配置 Maven 客户端创建或修改 Maven 配置文件mkdir -p ~/.m2 vim ~/.m2/settings.xml如果已有settings.xml应在原配置的mirrors节点中添加镜像不要直接覆盖原有配置。新建文件的最小示例settings xmlnshttp://maven.apache.org/SETTINGS/1.2.0 mirrors mirror idnexus-maven/id mirrorOfcentral/mirrorOf urlhttp://127.0.0.1:8081/repository/maven-aliyun//url /mirror /mirrors /settings这里的central表示 Maven Central 仓库。4. 验证 Maven 依赖下载mvn dependency:get -Dartifactjunit:junit:4.13.2如果下载成功返回 Nexus 管理界面Browse → maven-aliyun查看junit/ └── junit/ └── 4.13.2/检查 JAR、POM 文件是否缓存。注意Maven 客户端本地也会缓存依赖最终以 Nexus Browse 中的文件作为代理缓存验证依据。五、npm 仓库代理国内 npm 软件源需求说明Node.js 项目通常通过 npm 安装 JavaScript 第三方依赖。例如npm install lodash本次使用国内 npmmirror 镜像源通过 Nexus npm Proxy 统一代理和缓存软件包。1. 创建 npm Proxy 仓库进入Settings → Repositories → Create repository → npm (proxy)配置项配置值Namenpm-cn-proxyRemote storagehttps://registry.npmmirror.comBlob storedefaultOnline开启其他配置暂时保持默认。如果之前已经创建过代理海外 npm 官方源的仓库建议新建这个仓库不要直接修改旧仓库的 Remote storage以免原有缓存产生地址不一致的问题。2. 验证 Nexus 代理curl -L -o /dev/null -sS \ -w HTTP_CODE%{http_code}\n \ http://127.0.0.1:8081/repository/npm-cn-proxy/lodash预期返回HTTP_CODE200说明 Nexus 可以获取 lodash 软件包的元数据。3. 配置 npm 客户端首先确认 npm 是否已安装node -v npm -v查看当前软件仓库npm config get registry将 npm 仓库修改为 Nexusnpm config set registry http://127.0.0.1:8081/repository/npm-cn-proxy/再次确认npm config get registry应返回刚配置的 Nexus 地址。4. 验证 npm 软件包下载创建临时测试目录mkdir -p /tmp/nexus-npm-test cd /tmp/nexus-npm-test初始化项目并安装依赖npm init -y npm install lodash安装成功后返回Browse → npm-cn-proxy检查是否出现 lodash 相关的缓存文件。注意npm 的软件包元数据中可能包含独立的下载地址。因此元数据返回 HTTP 200 并不能代替实际的npm install验证。如果下载时绕过 Nexus 或报错需要继续检查软件包的 tarball 下载地址和 Nexus 日志。本次使用的 HTTP 地址仅限本地实验生产环境应使用 HTTPS。六、Python 仓库代理阿里云 PyPI 软件源需求说明Python 通常通过 pip 安装第三方软件包。例如pip3 install requests本次使用阿里云 PyPI 镜像源通过 Nexus PyPI Proxy 缓存 Python 依赖包。1. 创建 PyPI Proxy 仓库进入Settings → Repositories → Create repository → pypi (proxy)配置项配置值Namepypi-aliyunRemote storagehttps://mirrors.aliyun.com/pypi/Blob storedefaultOnline开启注意这是阿里云 PyPI 的根地址。客户端实际使用的是/simple/软件包索引。如果当前 Nexus 界面提供 PyPI 上游索引路径模式选项应选择与/simple/形式匹配的模式。2. 验证 Nexus 代理curl -L -o /dev/null -sS \ -w HTTP_CODE%{http_code}\n \ http://127.0.0.1:8081/repository/pypi-aliyun/simple/requests/预期返回HTTP_CODE200此时只能说明 requests 软件包索引可访问还需要验证实际安装包下载。3. 查看 Python 环境python3 --version pip3 --version由于 openEuler 20.03 LTS-SP4 可能使用较旧的 Python 版本安装软件包时需要注意版本兼容性。4. 通过 Nexus 下载 Python 软件包推荐先创建独立的 Python 虚拟环境避免影响系统 Pythonpython3 -m venv /tmp/nexus-pypi-test source /tmp/nexus-pypi-test/bin/activate如果没有安装 venv 相关组件需要先补充相应依赖。然后执行pip install requests2.28.2 \ --index-url http://127.0.0.1:8081/repository/pypi-aliyun/simple/ \ --trusted-host 127.0.0.1--trusted-host仅用于本地 HTTP 测试不建议在生产环境绕过 HTTPS 验证。安装后检查pip show requests完成测试后执行命令deactivate返回 NexusBrowse → pypi-aliyun检查 requests 及其依赖包是否缓存。注意必须确认 Nexus 实际缓存了 Python 软件包而不能仅以 pip 安装成功作为缓存验证结果。七、EPOL 仓库代理 openEuler 扩展软件源需求说明openEuler 除了 OS、Update 等基础软件源还提供 EPOL 扩展软件仓库用于提供更多软件包。EPOL 属于 openEuler 软件生态不应直接与 CentOS、Rocky Linux 等发行版使用的 EPEL 混为一谈。本次继续使用阿里云 openEuler 20.03 LTS-SP4 镜像源。1. 确认阿里云 EPOL 软件源以 x86_64 架构为例https://mirrors.aliyun.com/openeuler/openEuler-20.03-LTS-SP4/EPOL/main/x86_64/验证仓库元数据curl -L -o /dev/null -sS \ -w HTTP_CODE%{http_code}\n \ https://mirrors.aliyun.com/openeuler/openEuler-20.03-LTS-SP4/EPOL/main/x86_64/repodata/repomd.xml预期返回HTTP_CODE200应先确认上游元数据可以访问再进行 Nexus 配置。2. 创建 Nexus YUM Proxy进入Settings → Repositories → Create repository → yum (proxy)配置项配置值Nameopeneuler20-sp4-epolRemote storagehttps://mirrors.aliyun.com/openeuler/openEuler-20.03-LTS-SP4/EPOL/main/x86_64/Blob storedefaultOnline开启保存仓库。3. 验证 Nexus 代理curl -L -o /dev/null -sS \ -w HTTP_CODE%{http_code}\n \ http://127.0.0.1:8081/repository/openeuler20-sp4-epol/repodata/repomd.xml预期返回HTTP_CODE2004. 配置 Linux 客户端编辑vim /etc/yum.repos.d/nexus.repo追加[nexus-openeuler-epol] nameNexus openEuler 20.03 SP4 EPOL baseurlhttp://127.0.0.1:8081/repository/openeuler20-sp4-epol/ enabled1 gpgcheck1这里沿用当前系统的 RPM 签名信任配置。实际安装前必须确认相应的 openEuler 签名公钥已正确导入并验证不能为了避免报错直接关闭 GPG 校验。5. 验证扩展仓库dnf --disablerepo* \ --enablereponexus-openeuler-epol \ makecache查看可用软件dnf --disablerepo* \ --enablereponexus-openeuler-epol \ list available完成后返回Browse → openeuler20-sp4-epol检查元数据缓存。注意如果需要实际安装软件包仍应检查其依赖是否需要 OS、Update 或其他仓库共同提供。八、阶段总结通过本次操作分别创建不同类型的 Nexus Proxy 仓库对接国内软件镜像源。软件类型Nexus 仓库上游来源客户端工具openEuler 基础软件openeuler20-sp4-os阿里云dnfopenEuler 更新软件docker-rpm-openeuler阿里云dnfKubernetes 安装包kubernetes-v1.30-rpm阿里云dnfMaven Java 依赖maven-aliyun阿里云mvnnpm Node.js 依赖npm-cn-proxynpmmirrornpmPython 软件包pypi-aliyun阿里云pipopenEuler 扩展软件openeuler20-sp4-epol阿里云dnf这些仓库主要通过 Nexus Proxy 实现按需下载和缓存。工作原理客户端请求软件包 │ ▼ Nexus Proxy │ ├── 已缓存 → 直接返回 │ └── 未缓存 → 国内镜像源 │ ▼ 下载并缓存 │ ▼ 返回客户端需要注意Nexus 缓存软件包并不意味着自动同步整个远程仓库。当需要存储企业自行构建的 JAR、RPM 等制品时可以创建 Hosted 仓库需要整合同格式多个仓库时可以进一步使用 Group 仓库。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑