4.3. 使用命令行创建蓝图
您可以使用命令行(CLI)创建新的 RHEL 镜像构建器蓝图。蓝图描述了最终的镜像及其自定义,如软件包和内核自定义。
先决条件
-
您以 root 用户身份登录,或者是
weldr组成员的用户身份登录
流程
创建一个包含以下内容的纯文本文件:
name = "<blueprint_name>" description = "<long_form_description>" version = "<0.0.1>" modules = [] groups = []
name = "<blueprint_name>" description = "<long_form_description>" version = "<0.0.1>" modules = [] groups = []Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将 <blueprint_name> 和 <long_form_description> 替换为蓝图的名称和描述。
根据语义版本控制方案,将 <0.0.1> 替换为版本号。
对于您要包含在蓝图中的每个软件包,请在文件中添加以下行:
[[packages]] name = "<package_name>" version = "<package_version>"
[[packages]] name = "<package_name>" version = "<package_version>"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将 <package_name> 替换为软件包的名称,如
httpd、gdb-doc或coreutils。(可选)将 <package_version> 替换为要使用的版本。此字段支持
dnf版本规范:-
对于特定版本,请使用确切的版本号,如
8.7.0。 -
对于最新可用版本,请使用星号
* -
对于最新的次版本,请使用以下格式,如
8.*。
-
对于特定版本,请使用确切的版本号,如
自定义蓝图以满足您的需要。例如,禁用 Simultaneous Multi Threading (SMT),在蓝图文件中添加以下行:
[customizations.kernel] append = "nosmt=force"
[customizations.kernel] append = "nosmt=force"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 有关其他可用的自定义信息,请参阅 支持的镜像自定义。
请注意,
[]和[[]]是以 TOML 表示的不同的数据结构。-
[customizations.kernel]标头代表由一组键及其对应值对定义的单个表,例如:append = "nosmt=force"。 -
[[packages]]标头代表表数组。第一个实例定义数组及其第一个表元素,例如name = "package-name"和version = "package-version",每个后续实例都按照您定义它们的顺序创建并定义一个新的表元素。
-
-
保存文件,例如,保存为
<blueprint_name>.toml,并关闭文本编辑器。 可选:检查蓝图 TOML 文件中的所有设置是否已被正确解析。保存蓝图,并将保存的输出与输入文件进行比较:
composer-cli blueprints save <blueprint_name>.toml
# composer-cli blueprints save <blueprint_name>.tomlCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 将 <blueprint_name>.toml 保存的文件与输入文件进行比较。
推送蓝图:
composer-cli blueprints push <blueprint_name>.toml
# composer-cli blueprints push <blueprint_name>.tomlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 将 <blueprint_name> 替换为您在前面的步骤中使用的值。
注意以非 root 身份运行
composer-cli命令创建镜像,请将您的用户添加到weldr或root组中。usermod -a -G weldr user newgrp weldr
# usermod -a -G weldr user $ newgrp weldrCopy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
列出现有的蓝图以验证蓝图是否已推送并已存在:
composer-cli blueprints list
# composer-cli blueprints listCopy to Clipboard Copied! Toggle word wrap Toggle overflow 显示您刚刚添加的蓝图配置:
composer-cli blueprints show <blueprint_name>
# composer-cli blueprints show <blueprint_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 检查蓝图中列出的组件和版本是否有效:
composer-cli blueprints depsolve <blueprint_name>
# composer-cli blueprints depsolve <blueprint_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果 RHEL 镜像构建器无法解决自定义存储库中软件包的依赖项,请清除
osbuild-composer缓存:sudo rm -rf /var/cache/osbuild-composer/ sudo systemctl restart osbuild-composer
$ sudo rm -rf /var/cache/osbuild-composer/ $ sudo systemctl restart osbuild-composerCopy to Clipboard Copied! Toggle word wrap Toggle overflow