Token导航 LogoToken导航TokenDH.com
研究检索需要联网clawhub未标认证来源可访问clear审计通过

openeuler-rpm开欧勒转速

Agent Skill

openeuler-rpm 用于查找、检索和筛选相关信息,适合在 OpenClaw 中需要根据关键词、任务场景或来源线索快速定位候选结果时使用。可结合来源仓库、安装命令和原始 README 继续核验具体用法。安装前建议确认权限范围、维护状态,以及是否会触发联网、命令执行或文件读写。

总安装

4,657

周安装

198

GitHub Stars

公开资料未说明

下载量

1,632
OpenClaw

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

GitHub

来源数

2

许可证

MIT-0

最后核验

2026-05-01

来源状态

来源可访问

安装方式

通过对话安装

复制提示词发给支持本地命令或 Skills 的 AI 助手,先确认命令和权限,再让它执行。

请帮我安装这个 Agent Skill:openeuler-rpm(开欧勒转速)
来源仓库:https://github.com/weidongkl/openeuler-rpm
安装命令:
openclaw skills install openeuler-rpm
安装前请先检查当前环境是否支持对应 CLI,并向我确认将要执行的命令、安装目录、联网范围和文件读写权限;确认后再执行。

命令行安装

复制命令到本机终端执行。该命令会通过 OpenClaw 从第三方来源获取 Skill;本站只展示命令,不托管安装包,也不自动执行。

ClawHubOpenClaw
openclaw skills install openeuler-rpm

简介

🚨 openEuler 专项 RPM 打包规范。任何涉及 openEuler 打包的场景,都必须读取此技能。**openEuler 规则与通用 RPM 不同**:5 包拆分规则、专用 changelog 格式(Type/ID/SUG/DESC)、openEuler 专用宏、检视原则。不适用于其他发行版。

SKILL.md

name
openeuler-rpm
category
packaging
description
🚨 openEuler 专项 RPM 打包规范。任何涉及 openEuler 打包的场景,都必须读取此技能。openEuler 规则与通用 RPM 不同:5 包拆分规则、专用 changelog 格式(Type/ID/SUG/DESC)、openEuler 专用宏、检视原则。不适用于其他发行版。
version
2.1.0
metadata
{"openclaw":{"requires":{"skills":["rpm"]}}}

openEuler RPM 打包技能 — openEuler 打包规范的唯一来源

⚠️ 核心规则: openEuler 的打包规则与通用 RPM 有显著差异。通用 RPM 知识不够用。 差异包括:5 包拆分规则、专用 changelog 格式(Type/ID/SUG/DESC 四字段)、openEuler 专用宏(%disable_rpath, %delete_la_and_a 等)、检视原则。这些在通用 RPM 文档中都不存在。 因此:任何 openEuler 打包场景,都必须读取此技能。绝不能用通用 RPM 知识代替。

🚨 触发规则 — 遇到以下任何情况,立即读取此技能

如果你要做…你应该…禁止行为
为 openEuler 编写/修改 spec✅ 读取此技能❌ 用通用 RPM 模板
拆分 openEuler 子包(libs/devel/static/help)✅ 读取此技能❌ 按 Fedora/CentOS 方式拆分
写 openEuler changelog✅ 读取此技能❌ 用通用 changelog 格式(必须用 Type/ID/SUG/DESC)
使用 openEuler 专用宏✅ 读取此技能❌ 凭记忆写 %disable_rpath 等宏
openEuler 包检视/审查✅ 读取此技能❌ 用通用标准检查
处理 openEuler 补丁命名✅ 读取此技能❌ 用其他发行版的补丁命名规则
判断 openEuler 架构支持✅ 读取此技能❌ 凭记忆写 ExcludeArch
openEuler 包升级✅ 读取此技能❌ 直接改版本号不更新 changelog

如何判断该读哪个技能?

发行版读取技能
openEuleropeneuler-rpm(同时自动获得 rpm 能力)
Fedora / CentOS / RHELrpm(通用 RPM)
不确定是哪个发行版两个都读

快速自检

当你要为 openEuler 编写或修改 任何 spec 文件、changelog、子包拆分、宏使用 时,问自己:

"openEuler 的 changelog 格式是什么?包拆分规则是什么?专用宏怎么用?"

如果不确定 → 读取此技能


🎯 核心原则

openEuler 打包原则:不做复杂的拆分,将软件拆分为基本固定的 5 个 RPM 包,保持包的简洁。

📦 包拆分规则

openEuler 标准包结构(5 个):

包类型包名内容关键点
主包mypackage命令、配置、so、license、copyright、readme、man/info可通过 Provides/Obsoletes 兼容其他 OS
libs 包mypackage-libs对外提供的动态库、命令分离功能与能力,避免循环依赖
devel 包mypackage-devel头文件、Example、tests、开发内容devel 包需 Requires 主包
static 包mypackage-static静态库.a、静态版本可使用宏控制
help 包mypackage-help二次开发文档、手册文档大时才拆分

特殊拆分

  • for-language 包:python2-mypackagepython3-mypackageperl-mypackage
  • 本地化支持:mypackage-lang(复杂国际化相关软件)
  • 其他复杂包:gcc、python2、python3 等

📝 Spec 文件结构

标准模板(主包)

Name:           mypackage
Version:        1.0.0
Release:        1%{?dist}
Summary:        Package summary

License:        MIT
URL:            https://example.com
Source0:        https://github.com/%{url}/releases/download/%{version}/%{name}-%{version}.tar.gz

BuildRequires:  gcc
BuildRequires:  make
Requires:       glibc >= 2.17

# openEuler 补丁命名:PATCH-(BUGFIX|CVE|FEATURE)-内容
# Patch0:       PATCH-BUGFIX-fix-build.patch

%description
Detailed package description.

%prep
%autosetup -p1

%build
%configure
%make_build

%install
%make_install

%check
%make_test

%files
%license LICENSE
%doc README.md
%{_bindir}/%{name}

%changelog
* Tue Apr 7 2020 openEuler Buildteam <buildteam@openeuler.org> - 10.33-3
- Type: CVES
- ID: CVE-2019-20454
- SUG: NA
- DESC: fix CVE-2019-20454

* Wed Apr 15 2026 zhangsan <zhangsan@example.com> - 1.0.0-1
- Type: Feature
- ID: NA
- SUG: NA
- DESC: Initial packaging for openEuler

multi-package 模板

# ——— 主包 ——————————————————————————————————————

Name:           mypackage
Version:        1.0.0
Release:        1%{?dist}
Summary:        Main package

License:        MIT
URL:            https://example.com
Source0:        https://github.com/%{url}/releases/download/%{version}/%{name}-%{version}.tar.gz

BuildRequires:  gcc
BuildRequires:  make
Requires:       %{name}-libs = %{version}-%{release}

%description
Main package containing commands, configs, and runtime libraries.

%files
%license LICENSE
%doc README.md
%{_bindir}/%{name}
%{_libdir}/lib%{name}.so.*

# ——— libs 包 ——————————————————————————————————————

%package -n libs
Summary:        Libraries for %{name}
Requires:       %{name} = %{version}-%{release}

%description -n libs
Runtime libraries for %{name}.

%files -n libs
%{_libdir}/lib%{name}.so.*

# ——— devel 包 ——————————————————————————————————————

%package -n devel
Summary:        Development files for %{name}
Requires:       %{name}-libs = %{version}-%{release}
Requires:       %{name} = %{version}-%{release}

%description -n devel
Development files for %{name}.

%files -n devel
%{_includedir}/%{name}/
%{_libdir}/lib%{name}.so
%{_libdir}/pkgconfig/%{name}.pc

# ——— static 包(可选) ——————————————————————————

%package -n static
Summary:        Static libraries for %{name}
Requires:       %{name}-devel = %{version}-%{release}

%description -n static
Static libraries for %{name}.

%files -n static
%{_libdir}/lib%{name}.a

# ——— help 包(可选,文档大时) ——————————————

%package -n help
Summary:        Documents for %{name}
BuildArch:      noarch
Requires:       man info

%description -n help
Man pages and other related documents for %{name}.

%files -n help
%{_datadir}/%{name}/doc/

🔧 openEuler 专用宏

# 删除 rpath
%disable_rpath
sed -i 's|^hardcode_libdir_flag_spec=.*|hardcode_libdir_flag_spec=""|g' libtool \
sed -i 's|^runpath_var=LD_RUN_PATH|runpath_var=DIE_RPATH_DIE|g' libtool

# 删除 .la 和 .a 文件
%delete_la_and_a
find $RPM_BUILD_ROOT -type f -name "*.la" -delete \
find $RPM_BUILD_ROOT -type f -name "*.a" -delete

# 删除 .la 文件
%delete_la
find $RPM_BUILD_ROOT -type f -name "*.la" -delete

# 删除 chrpath
%chrpath_delete
find $RPM_BUILD_ROOT/ -type f -exec file {} ';' | grep "<ELF>" | awk -F ':' '{print $1}' | xargs chrpath --delete {}

# help 子包定义
%package_help
%package        help \
Summary:        Documents for %{name} \
Buildarch:      noarch \
Requires:               man info

%description help \
Man pages and other related documents for %{name}.

# info 工具
%install_info()
/sbin/install-info %1 %{_infodir}/dir || :

%install_info_rm()
/sbin/install-info --remove %1 %{_infodir}/dir || :

📋 openEuler 专用规范

1. 来源可靠

  • ❌ 不要内嵌预编译的二进制文件或库文件
  • ❌ 避免多个上游项目捆绑到一个软件包
  • ✅ 软件应该是开源软件
  • ✅ spec 文件要适配 openEuler
  • ❌ 黑名单软件必须不能引入

2. 架构支持

  • 尽量支持 aarch64 和 x86_64 架构
  • 架构强相关内容通过 %ifarch 宏控制
  • 无架构内容构建成 noarch 包
  • 使用 ExcludeArch:ExclusiveArch: 控制

3. changelog 格式

openEuler 要求 changelog 使用特定格式(必须严格遵守):

3.1 标题行格式(必须)

* Day Mon DD YYYY 提交人 <邮箱> - [Epoch:]Version-Release
部分说明示例
日期格式 * 星期 月 日 年* Wed Apr 15 2026
提交人姓名(不带括号)zhangsanlisi
邮箱必须用尖括号包裹<user@example.com>
Epoch可选,取决于 spec 是否定义了 Epoch 字段。若定义了必须写,否则不写1:
Version与 spec Version 一致2.4.7
Release修改后的 release 值14

完整示例:

# 有 Epoch 的包(如 cups: Epoch: 1)
* Wed Apr 15 2026 zhangsan <zhangsan@example.com> - 1:2.4.7-13

# 没有 Epoch 的包(大多数)
* Tue Apr 7 2020 openEuler Buildteam <buildteam@openeuler.org> - 10.33-3

3.2 内容行格式(CVES 类型必须包含 4 个字段)

Type 字段取值:CVES / Bugfix / Feature

CVES(多个 CVE 修复):

* Wed Apr 15 2026 zhangsan <zhangsan@example.com> - 1:2.4.7-13
- Type: CVES
- ID: CVE-2026-27447 CVE-2026-34978 CVE-2026-34979
- SUG: NA
- DESC: fix CVE-2026-27447 CVE-2026-34978 CVE-2026-34979

Bugfix(普通缺陷修复):

* Mon Mar 10 2026 lisi <lisi@example.com> - 1:2.4.7-12
- Type: Bugfix
- ID: NA
- SUG: NA
- DESC: fix build failure with gcc-15

Feature(新增功能/版本升级):

* Sat Apr 25 2026 wangwu <wangwu@example.com> - 2.0.0-1
- Type: Feature
- ID: NA
- SUG: NA
- DESC: Update to 2.0.0
字段取值说明
TypeCVES / Bugfix / FeatureCVES=多个CVE,Bugfix=普通修复,Feature=新功能
IDCVE-XXXX-XXXX 或 Bugzilla 编号CVE 修复必须写完整 CVE 编号
SUGNA 或具体建议无特殊建议写 NA
DESC简短描述说明做了什么

3.3 常见错误(必须避免)

错误正确
* Sat Apr 25 2026 zhangsan - 2.4.7-14(缺 <email>、缺 epoch)* Sat Apr 25 2026 zhangsan <zhangsan@example.com> - 1:2.4.7-14
- fix CVE-2026-41079(缺少 Type/ID/SUG/DESC)`- Type: CVES\
  • ID: CVE-2026-41079\
  • SUG: NA\
  • DESC: fix CVE-2026-41079` |

| - Type: CVES/Bugfix/Feature(不要写多个类型) | 每条 changelog 只写一个 Type 值(CVES 或 Bugfix 或 Feature) | | 用 your@email.com 等占位邮箱 | 用实际邮箱,从 git config 或已有 changelog 获取 |

3.4 修改 changelog 的标准流程(必须遵守)

  1. 先查看 spec 是否定义了 Epochgrep "^Epoch" xxx.spec
  2. 参考 spec 已有 changelog 条目的格式 — 看最新一条的写法(日期格式、邮箱格式、Epoch 有无)
  3. 按已有格式风格写入新条目 — 不凭记忆,不自行编造格式

4. 命名规则

  • 主包名称与软件名称同名
  • 如多个版本:mypackage2mypackage-stable
  • 语言模块:python-mypackageperl-mypackage
  • 补丁命名:PATCH-BUGFIX-fix-build.patch

5. 依赖关系

  • Requires: - 软件正常工作所需
  • Recommends: / Suggests: - 非必需但推荐
  • Supplements: / Enhances: - 补充完整性
  • devel 包必须写完整依赖Requires: %{name} = %{version}-%{release}

✅ openEuler 检视原则(必须项)

检查项说明
✅ rpmlint 检查使用 rpmlint 工具检查
✅ 包命名符合 openEuler 命名规则
✅ License 字段必须与实际许可证匹配
✅ spec 文件英语必须用英语撰写且清晰可读
✅ 源代码匹配spec 中 URL 必须与上游源码一致
✅ ExcludeArch未支持的架构必须列出
✅ 构建依赖完整BuildRequires 包含所有依赖
✅ 处理 locale使用 %find_lang
✅ 单一文件不重复原则上不能将单一文件打包到多个 rpm
✅ 文件权限必须正确设置文件权限
✅ UTF-8 文件名rpm 包中的文件名必须是 UTF-8

🔍 常见问题

Q1: 如何使用 openEuler 专用宏?

见上方 🔧 openEuler 专用宏 章节。

Q2: 如何写 changelog?

见上方 ### 3. changelog 格式 章节。必须包含标题行(日期+姓名+邮箱+Epoch可选+Version-Release)和内容行(Type/ID/SUG/DESC)。

Q3: 如何处理多版本包?

openEuler 一般只集成一个版本。如需多版本,需 TC 同意:

# 使用后缀版本号
Name: mypackage2

# 或描述性后缀
Name: mypackage-stable

🔄 依赖技能

本技能依赖:

技能用途
rpm基础 RPM 功能(继承所有 rpm 能力)

_版本: 2.0.0 | 作者: openEuler Build Agent_

适合场景

01

OpenClaw 用户查找和安装 Skill 时

02

用户想查找某类 Agent Skill 时

03

需要根据任务场景推荐可安装能力包时

04

需要对比不同来源的安装命令和来源信息时

能力概览

能力 1

按任务关键词查找相关 Skills

能力 2

展示可复制的安装命令

能力 3

保留来源站点、仓库和原始说明,方便继续核验

能力 4

补充不同宿主或平台的使用分布数据

能力 5

展示第三方安全扫描或审计结果

安装后应在对应宿主中按原始 README 的触发条件使用;具体调用方式请以来源页面和 README 为准。

平台分布

OpenClaw

83.84%
按下载量换算1,368

安全审计

VirusTotal

通过

ClawScan

通过

Static analysis

通过

权限和风险

需要联网

该 Skill 可能需要联网访问来源站点、仓库或外部 API;具体网络访问范围需要结合源码和 README 复核。

安装前确认

本站仅展示第三方公开信息,不托管安装包,不提供自动安装或运行环境。安装前应自行审查源码、依赖和命令行为。当前只有一个来源,正式发布前建议补源仓库或其他目录站核验。

来源信息

继续浏览同类 Skills