From bff6b2907466a420ecc5339e26b9b089f356fd7f Mon Sep 17 00:00:00 2001 From: mahaoliang Date: Thu, 28 Aug 2025 22:43:46 +0800 Subject: [PATCH] =?UTF-8?q?docs(distroless):=20=E6=9B=B4=E6=96=B0=20README?= =?UTF-8?q?=20=E4=BB=8B=E7=BB=8D=20SDF=20=E6=96=87=E4=BB=B6=E8=87=AA?= =?UTF-8?q?=E5=8A=A8=E7=94=9F=E6=88=90=E6=96=B9=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 添加了使用 `splitter gen` 命令自动生成 SDF 文件的详细步骤 - 描述了审查和提交 SDF 文件的流程 --- Distroless/README.md | 31 ++++++++++++++++++++++++++++++- 1 file changed, 30 insertions(+), 1 deletion(-) diff --git a/Distroless/README.md b/Distroless/README.md index aab259ff..b80b6157 100644 --- a/Distroless/README.md +++ b/Distroless/README.md @@ -24,10 +24,39 @@ openEuler distroless镜像构建时,首先使用[splitter](https://gitee.com/o SDF ([slice definition files](https://gitee.com/openeuler/slice-releases))定义了openEuler软件包切分成不同slice的规则(如上图中的`A.yaml`)。 -目前,所有SDF均为手工生成,构建Distroless镜像之前,需要先在[slice-releases](https://gitee.com/openeuler/slice-releases)仓库的对应分支提交所有被用到的软件包的SDF文件。 +构建Distroless镜像的第一步,是准备好所有依赖软件包的SDF文件。 +过去,SDF文件主要依赖社区专家手工编写,这在面对大量软件包时成为了一个效率瓶頸。 + +为解决此问题,`splitter`工具引入了`gen`命令,建立了一套“**自动生成为主,人工审核为辅**”的高效SDF创建流程: + +**第一步:使用`splitter gen`自动生成SDF草稿** + +`splitter gen`命令可以为任意RPM包自动生成一个高质量的SDF草稿。它的核心原理是通过**智能文件分类**和**精确依赖分析**(通过`readelf`, `ldconfig`, `rpm -qf`等工具链)来模拟专家的分析过程。 + +推荐使用官方发布的`splitter`应用容器镜像来执行此命令,无需在本地安装任何依赖。 + +```bash +# 首先,克隆splitter仓库以获取运行脚本 +git clone https://gitee.com/openeuler/splitter.git +cd splitter + +# 使用splitter-docker.sh为brotli包生成SDF +# 脚本会自动拉取官方镜像并在容器中执行命令 +# 注意:如果检测到 Docker 未安装,脚本会提示并帮助你自动安装 +./bin/splitter-docker.sh gen -r 24.03-LTS -o /path/to/output -p brotli +``` + +该命令会自动在隔离的容器环境中分析`brotli`包,并在目录 `/path/to/output` 中生成一个技术上准确的`brotli.yaml`文件。 + +**第二步:审查与提交** + +对于大多数软件包,自动生成的SDF文件可以直接使用。对于少数复杂的包,开发者可以在生成的草稿基础上进行功能性的调整。 + +完成SDF文件后,将其提交至[slice-releases](https://gitee.com/openeuler/slice-releases)仓库对应的分支即可。 + **2. 使用EulerPublisher构建** 当[slice-releases](https://gitee.com/openeuler/slice-releases)对应的分支已经有构建目标distroless镜像的所有SDF之后,即可使用[EulerPublisher](https://gitee.com/openeuler/eulerpublisher)构建或直接发布目标镜像: -- Gitee