diff --git a/DEVELOPER_DOCS/menu.yaml b/DEVELOPER_DOCS/menu.yaml
index c4ca03038c7cb2476e97c4286d408db0ca28324c..5e8bb38757a0a9f7f4ac3764eb4a75b89341a652 100644
--- a/DEVELOPER_DOCS/menu.yaml
+++ b/DEVELOPER_DOCS/menu.yaml
@@ -31,3 +31,4 @@ DEVELOPER_DOCS:
rpmbuild 构建指导手册: ../进阶开发/rpmbuild 构建指导手册.md
从零构建一个龙蜥开源项目: ../进阶开发/从零构建一个龙蜥开源项目.md
闭源软件集成样例: ../进阶开发/闭源软件集成样例.md
+ Anolis OS 8 软件包本地构建.md: ../进阶开发/Anolis OS 8 软件包本地构建.md
diff --git "a/DEVELOPER_DOCS/\350\277\233\351\230\266\345\274\200\345\217\221/Anolis OS 8 \350\275\257\344\273\266\345\214\205\346\234\254\345\234\260\346\236\204\345\273\272.md" "b/DEVELOPER_DOCS/\350\277\233\351\230\266\345\274\200\345\217\221/Anolis OS 8 \350\275\257\344\273\266\345\214\205\346\234\254\345\234\260\346\236\204\345\273\272.md"
new file mode 100644
index 0000000000000000000000000000000000000000..e81710db1a67c05cbb203cec60b10623b4a23713
--- /dev/null
+++ "b/DEVELOPER_DOCS/\350\277\233\351\230\266\345\274\200\345\217\221/Anolis OS 8 \350\275\257\344\273\266\345\214\205\346\234\254\345\234\260\346\236\204\345\273\272.md"
@@ -0,0 +1,123 @@
+# Anolis OS 8 软件包本地构建
+
+Mock 是软件包构建工具,可快速构造和内部 KOJI 平台一致性的沙箱(chroot 或者 systemd-spawn)隔离构建的软件包环境,并通过 rpmbuild 完成 RPM 软件包的构建。 本文档会介绍在环境中快速配置 Mock 环境,并举例说明使用方法,满足快速构建的目的。Mock 的更多参数使用方法可直接参考官网文档。
+
+## 1. mock 环境搭建
++ 启动安装 Anolis OS 8 设备或者实例
++ 安装 EPAO(Extras Package For Anolis) YUM 仓库的 mock-core-configs 包(非 ECS 实例需要安装 epel-release)
+
+```bash
+yum install -y anolis-epao-release
+#阿里云 ECS Anolis OS 实例不需要运行 epel-release 安装步骤,
+#因为阿里云 ECS 实例已通过(epel-aliyuncs-release)预装 epel 对应 YUM REPO
+yum install -y epel-release
+yum install -y mock-core-configs mock rpm-build
+```
+
++ 配置 build 用户
+
+mock 不支持 root 用户,所以新建用户 build,用于执行构建。
+
+```bash
+useradd build
+usermod -a -G mock build
+```
+
+## 2 mock 环境编译
+### 2.1 简单构建环境
+该构建环境仅仅提供了 `BaseOS`、`AppStream`、`PowerTools` 官方发布仓库。可以满足最小化的构建环境需求。mock 可以通过 `-r`参数直接指定如下 Anolis OS 的构建环境文件。请注意,若用户需要 aarch64 的本地构建环境需要在 aarch64 的设备或实例进行相应配置。
+
+```bash
+anolis-8-aarch64
+anolis-8-x86_64
+anolis-7-aarch64
+anolis-7-x86_64
+```
+
+使用方法如下:
+
+
+```bash
+su build
+# target_srpm 为目标 srpm
+mock -r anolis-8-x86_64 rebuild --no-bootstrap-image --enable-network ${target_srpm}
+```
+
+### 2.2 社区本地构建环境
+该构建环境基本还原真实的社区构建环境,编译支撑的 Repo 远远大于 `BaseOS`、`AppStream`、`PowerTools` 。需要先准备一份 config 文件, 然后基于该文件执行命令编译相应包即可。
+
+
+
+#### 2.2.1 x86_64/aarch64 config 文件
+```plain
+config_opts['basedir'] = '/var/lib/mock'
+config_opts['chroot_setup_cmd'] = 'install bash bzip2 coreutils cpio diffutils elfutils git gzip make meson patch perl redhat-rpm-config rpm-build rpmdevtools scl-utils-build sed shadow-utils tar texinfo unzip util-linux util-linux-ng which dnf'
+config_opts['chroothome'] = '/builddir'
+config_opts['dnf_warning'] = False
+config_opts['package_manager'] = 'dnf'
+config_opts['root'] = 'dist-an8-build'
+config_opts['rpmbuild_networking'] = False
+config_opts['rpmbuild_timeout'] = 86400
+config_opts['use_host_resolv'] = False
+config_opts['dnf.conf'] = """
+[main]
+cachedir=/var/cache/yum
+debuglevel=1
+logfile=/var/log/yum.log
+reposdir=/dev/null
+retries=20
+obsoletes=1
+gpgcheck=0
+assumeyes=1
+keepcache=1
+install_weak_deps=0
+strict=1
+
+# repos
+[build]
+name=build
+baseurl=http://build.openanolis.cn/kojifiles/repos/dist-an8-build/latest/$basearch
+module_hotfixes=1
+"""
+
+config_opts['plugin_conf']['ccache_enable'] = False
+config_opts['plugin_conf']['root_cache_enable'] = False
+config_opts['plugin_conf']['yum_cache_enable'] = False
+
+config_opts['macros']['%_rpmfilename'] = '%%{NAME}-%%{VERSION}-%%{RELEASE}.%%{ARCH}.rpm'
+config_opts['macros']['%_topdir'] = '/builddir/build'
+config_opts['macros']['%distribution'] = 'OpenAnolis Community Testing'
+config_opts['macros']['%packager'] = 'OpenAnolis Community'
+config_opts['macros']['%vendor'] = 'OpenAnolis Community'
+```
+
+
+
+#### 2.2.2 x86_64/aarch64 构建命令
+```bash
+su build
+# target_srpm 为目标 srpm
+mock -r anolis-8-local.cfg --no-bootstrap-image --enable-network --arch=`arch` rebuild ${target_srpm}
+```
+
+
+
+## 3 Anolis OS 8 mock 构建常见问题集锦
++ mock 编译包的结果位置在哪里?
+
+mock 执行完成后会给出构建包所在路径,类似如下提示,默认所在路径是 `/var/lib/mock/dist-an8-build/result`。
+
+结果路径受文件首行中`basedir`以及`--uniqueext=my_uniqueext`选项共同影响。例如:修改 cfg 文件首行`config_opts['basedir'] = '/my_basedir'`并在构建命令添加`--uniqueext=my_uniqueext`选项后,构建结果所在路径会变更为`/my_basedir/dist-an8-build-my_uniqueext/result`。
+
++ 如何自定义构建包 dist 的值?
+
+可通过在 command 中增加选项`--define "%dist .mydist"`用于进行自定义修改,其中`mydist`为自定义 dist 的值。
+
++ 如何安装环境依赖包所使用的 yum 仓库?
+
+可修改 baseurl 的值来自定义 yum 仓库,如需要添加格式可参考 repo 文件。
+
++ 不同架构的命令是否相同?
+
+是的,`arch`命令会自动获取执行机架构。
+
diff --git "a/DEVELOPER_DOCS/\350\277\233\351\230\266\345\274\200\345\217\221/rpmbuild \346\236\204\345\273\272\346\214\207\345\257\274\346\211\213\345\206\214.md" "b/DEVELOPER_DOCS/\350\277\233\351\230\266\345\274\200\345\217\221/rpmbuild \346\236\204\345\273\272\346\214\207\345\257\274\346\211\213\345\206\214.md"
index 4fd365691f4f0ddecd22d4f0de774c2aaa084781..92d0169a92b753f9e57eea8a19799cde46f2e667 100644
--- "a/DEVELOPER_DOCS/\350\277\233\351\230\266\345\274\200\345\217\221/rpmbuild \346\236\204\345\273\272\346\214\207\345\257\274\346\211\213\345\206\214.md"
+++ "b/DEVELOPER_DOCS/\350\277\233\351\230\266\345\274\200\345\217\221/rpmbuild \346\236\204\345\273\272\346\214\207\345\257\274\346\211\213\345\206\214.md"
@@ -1,4 +1,4 @@
-# 306 rpmbuild 构建指导手册
+# rpmbuild 构建指导手册
该文章介绍了 spec 编写和构建过程中的细节和技术原理,相当于指导手册。
## 1 宏介绍
在软件包构建的过程中,为了防止过多使用硬编码路径和常用路径引用问题,增加了“宏”的概念。将一些常用路径或者变量值通过宏变量定义出来,并可以在整个 Anolis OS 发行版中使用。
diff --git "a/DEVELOPER_DOCS/\350\277\233\351\230\266\345\274\200\345\217\221/spec \346\250\241\347\211\210\345\222\214\350\207\252\346\243\200\351\241\271.md" "b/DEVELOPER_DOCS/\350\277\233\351\230\266\345\274\200\345\217\221/spec \346\250\241\347\211\210\345\222\214\350\207\252\346\243\200\351\241\271.md"
index d2a9f3106d5fdd7c1634a918b611a49d3f4c9d45..a691178cc0b97d586ab54543c4d87c0ab47c9dce 100644
--- "a/DEVELOPER_DOCS/\350\277\233\351\230\266\345\274\200\345\217\221/spec \346\250\241\347\211\210\345\222\214\350\207\252\346\243\200\351\241\271.md"
+++ "b/DEVELOPER_DOCS/\350\277\233\351\230\266\345\274\200\345\217\221/spec \346\250\241\347\211\210\345\222\214\350\207\252\346\243\200\351\241\271.md"
@@ -1,4 +1,4 @@
-# 305 SPEC 模版和 checklist
+# SPEC 模版和 checklist
## 1 背景
本文档规定龙蜥社区 RPM Tree 组织规范和 SPEC File 写作规范。
@@ -269,7 +269,7 @@ rm -rf %{pypi_name}.egg-info
| %build | 将软件包的源码进行编译阶段。
1. 路径信息:在 ~/rpmbuild/BUILD/%{name}-%{version}/ 下
2. 执行构建可以根据源码语言去选择构建方式
3. 在构建过程中是个 chroot 环境,不允许联网 download 等动作
4. 不允许随意修改 flags 等 | 必选 |
| %install | 将软件包编译生成的文件复制到安装目录,进行预安装动作,即模拟所有 package 安装后的环境。
1. 路径信息: ~/rpmbuild/BUILDROOT/%{name}-%{version}/
2. 复制时,文件从 ~/rpmbuild/BUILD/%{name}-%{version}/ 拷贝到 ~/rpmbuild/BUILDROOT/%{name}-%{version}/
3. 复制文件时,需要保留文件的时间戳,采用 cp -p 或 install -p
4. 操作允许直接将 SourceX 文件拷贝到安装目录允许再该阶段直接生成新文件 | 必选 |
| %check | 用于测试软件的命令或一系列命令。
这通常包括诸如单元测试之类的东西,阶段能开则开,如果不能开启,声明不能开启的原因。 | 可选 |
-| %files | 定义每个 package 的文件列表,并生成对应的 .rpm。
1. 文件布局必须布局遵循 [**FHS**](https://yuque.antfin-inc.com/bobac/pm1qpi/xz4m02) ,个别情况额外声明
2. 正确设置文件权限:目录 0755,文件 0644 root root,除非出于安全考虑需要使用特定的用户或组
3. 所有安装在 ~/rpmbuild/BUILDROOT/%{name}-%{version}/ 下的文件必须全部有唯一归属
4. 不允许包含具有攻击性、歧义性、宗教性、色情性、受限制使用的文件等
5. %doc 后面可以直接跟 ~/rpmbuild/BUILD/%{name}-%{version}/ 下的说明类文档:README、ChangeLog等
6. %license 后面可以跟~/rpmbuild/BUILD/%{name}-%{version}/ 下的版权文件:copying、license 等 | 必选 |
+| %files | 定义每个 package 的文件列表,并生成对应的 .rpm。
1. 文件布局必须布局遵循 [**FHS**](https://developer.aliyun.com/article/526645) ,个别情况额外声明
2. 正确设置文件权限:目录 0755,文件 0644 root root,除非出于安全考虑需要使用特定的用户或组
3. 所有安装在 ~/rpmbuild/BUILDROOT/%{name}-%{version}/ 下的文件必须全部有唯一归属
4. 不允许包含具有攻击性、歧义性、宗教性、色情性、受限制使用的文件等
5. %doc 后面可以直接跟 ~/rpmbuild/BUILD/%{name}-%{version}/ 下的说明类文档:README、ChangeLog等
6. %license 后面可以跟~/rpmbuild/BUILD/%{name}-%{version}/ 下的版权文件:copying、license 等 | 必选 |
| %changelog | Version不同或Release构建之间的包发生的更改的记录。
1. changlog 的格式正确,包括:日期、提交者个人信息、版本信息、描述信息等
2. Message 简洁易懂,清晰明确 | 必选 |
diff --git "a/DEVELOPER_DOCS/\350\277\233\351\230\266\345\274\200\345\217\221/\345\246\202\344\275\225\344\270\213\350\275\275 Anolis OS \350\275\257\344\273\266\345\214\205\346\272\220\347\240\201\345\214\205.md" "b/DEVELOPER_DOCS/\350\277\233\351\230\266\345\274\200\345\217\221/\345\246\202\344\275\225\344\270\213\350\275\275 Anolis OS \350\275\257\344\273\266\345\214\205\346\272\220\347\240\201\345\214\205.md"
index 033235c0b2714cda7106e4c2b54ea2791bbabe55..777e091d56ceb36089e0d26107879038816efcdc 100644
--- "a/DEVELOPER_DOCS/\350\277\233\351\230\266\345\274\200\345\217\221/\345\246\202\344\275\225\344\270\213\350\275\275 Anolis OS \350\275\257\344\273\266\345\214\205\346\272\220\347\240\201\345\214\205.md"
+++ "b/DEVELOPER_DOCS/\350\277\233\351\230\266\345\274\200\345\217\221/\345\246\202\344\275\225\344\270\213\350\275\275 Anolis OS \350\275\257\344\273\266\345\214\205\346\272\220\347\240\201\345\214\205.md"
@@ -1,4 +1,4 @@
-
+# 如何下载 Anolis OS 软件包源码包
## 1. 背景
由于部分软件包存在大文件导致上传失败、clone 过慢甚至失败的问题,影响软件包构建效率。在这种情况下,龙蜥社区选择使用专门的存储空间来解决大文件上传和下载问题。
diff --git "a/DEVELOPER_DOCS/\350\277\233\351\230\266\345\274\200\345\217\221/\351\276\231\350\234\245\347\244\276\345\214\272\350\275\257\344\273\266\345\214\205\345\274\225\345\205\245\345\222\214\347\256\241\347\220\206\345\216\237\345\210\231.md" "b/DEVELOPER_DOCS/\350\277\233\351\230\266\345\274\200\345\217\221/\351\276\231\350\234\245\347\244\276\345\214\272\350\275\257\344\273\266\345\214\205\345\274\225\345\205\245\345\222\214\347\256\241\347\220\206\345\216\237\345\210\231.md"
index 86ecfea9365b6735d7941fc5adc48b0d3fd3b38b..d0b9dd5b9d03d71bbebeada5fc75139003309d3f 100644
--- "a/DEVELOPER_DOCS/\350\277\233\351\230\266\345\274\200\345\217\221/\351\276\231\350\234\245\347\244\276\345\214\272\350\275\257\344\273\266\345\214\205\345\274\225\345\205\245\345\222\214\347\256\241\347\220\206\345\216\237\345\210\231.md"
+++ "b/DEVELOPER_DOCS/\350\277\233\351\230\266\345\274\200\345\217\221/\351\276\231\350\234\245\347\244\276\345\214\272\350\275\257\344\273\266\345\214\205\345\274\225\345\205\245\345\222\214\347\256\241\347\220\206\345\216\237\345\210\231.md"
@@ -1,4 +1,4 @@
-# 304 龙蜥社区软件包引入和管理原则
+# 龙蜥社区软件包引入和管理原则
## 1. 综述
@@ -162,7 +162,7 @@ must | 保证安全可靠,经过充分的测试保障 | 1. 闭源软件引入
### 4.1 自验证构建
该过程为开发者自行在本地或模拟环境中对软件进行构建,以验证软件包本身的构建能力或产出测试包供后续测试。目前推荐的方式有两种:
-- 本地通过 mock 机制构建,参考《[Anolis OS 8 软件包本地构建 · 语雀](https://www.yuque.com/anolis-docs/kbase/cvy9g3?view=doc_embed)》一文;
+- 本地通过 mock 机制构建,参考《[Anolis OS 8 软件包本地构建](Anolis%20OS%208%20软件包本地构建.md)》一文;
- 通过 Anolis Build System (ABS) 提供的个人工作空间机制进行自定义构建,可以参考[《使用ABS平台轻松胜任Anolis OS开发工作》](../基础开发/208-how-to-build-package-via-ABS.md) 一文的内容,进行构建。
- 构建过程中遇到的问题参考 「[rpmbuild 构建指导手册](../进阶开发/rpmbuild%20构建指导手册.md)」