Eclipse Mosquitto 在 openSUSE 11.3 上的打包始末SQLite 依赖、RPM 构建与持久化演进【免费下载链接】mosquittoEclipse Mosquitto - An open source MQTT broker项目地址: https://gitcode.com/gh_mirrors/mos/mosquitto本文围绕仓库历史公告帖 mosquitto-on-opensuse-11-3.md 展开还原 2010 年 Mosquitto 在 openSUSE 11.3 上的 RPM 打包事件openSUSE 11.3 提供 sqlite3 扩展支持补齐了 Mosquitto 0.8 时代持久化存储所需的全部依赖。读者将了解到那个时代 Mosquitto 对 sqlite3 / pcre / sqlite3-pcre 的依赖链、openSUSE Build Service 的打包路径以及后续 0.9、0.11 版本如何摆脱 sqlite3 依赖、最终演化为今天的persist-sqlite插件形态从而完整理解 Mosquitto 持久化机制的来龙去脉。一、这篇 2010 年公告帖讲了什么仓库中的 原始公告帖 发布于 2010 年 7 月 12 日全文信息量集中、主题明确核心内容只有三条即将发布的 openSUSE 11.3 增加了对 sqlite3 的扩展支持extension support这意味着它已经具备运行 Mosquitto 所需的全部条件作者已为这个新版本创建了软件包详情见项目下载页面用户只需再等三天即 2010 年 7 月 15 日左右等 11.3 正式发布即可使用。公告虽短背后却是当时 Mosquitto 在 Linux 发行版生态中一个真实的工程障碍RPM 系发行版长期缺少 Mosquitto 0.8 时代持久化所需的 sqlite3 扩展组件。本篇文章即以该公告为骨架结合仓库内源码、ChangeLog 与同期博文把这段历史与其中的技术依赖讲透。二、背景0.8 时代 Mosquitto 对 sqlite3 的依赖链2.1 依赖了什么、为什么需要它在 Mosquitto 早期版本约 0.50.8 时代broker 使用sqlite3 数据库保存客户端会话与消息数据持久化文件直接由 SQLite 承载。这条依赖链的证据清晰记录在 ChangeLog.txt 的 0.9 版本条目中Client and message data is now stored in memory with custom routines rather than a sqlite database. This removes the dependencies on sqlite, pcre and sqlite3-pcre.即 0.9 之前Mosquitto 的依赖是sqlite pcre sqlite3-pcre三者sqlite3底层存储引擎pcrePerl 兼容正则库sqlite3-pcre为 SQLite 提供的 PCRE 扩展使 SQLite 的查询语句可以使用正则表达式能力。从工程逻辑可以推断sqlite3-pcre 之所以必要是因为订阅主题匹配如包含、#通配符的过滤在 SQL 查询层面需要正则匹配能力而原生 SQLite 的LIKE无法完整表达 MQTT 主题通配语义。因此缺少 sqlite3-pcreMosquitto 的存储层就无法正常工作。2.2 依赖路径的佐证ChangeLog.txt 还记录了一条与本主题直接相关的细节Default sqlite3-pcre path on Linux is now /usr/lib/sqlite3/pcre.so说明当时 Linux 发行版需要把 sqlite3-pcre 扩展安装到 SQLite 可加载扩展的标准搜索路径下Mosquitto 才能按默认路径加载它。这解释了为什么sqlite3 扩展支持会成为发行版打包的关键分水岭光有 sqlite3 本体还不够必须连扩展组件一起打包。三、openSUSE 11.3补齐最后一块拼图3.1 公告的核心判断原公告指出openSUSE 11.3 includes extension support for sqlite3即发行版自带了 sqlite3 扩展支持从而让 Mosquitto 在这个 RPM 系发行版上everything required依赖齐备。这正是此前 openSUSE 用户无法获得完整功能包的原因——缺少可用的 sqlite3-pcre。3.2 同期打包工作的完整脉络公告提到packages 已创建结合仓库同期帖子可以还原完整的打包路径早在 2010 年 4 月RPM 打包求助帖 就说明了当时的局面作者已提供 Windows 可执行文件和面向 Ubuntu 的 PPA但 RPM 系发行版一无所获因此计划借助openSUSE Build ServiceOBS来构建和托管最终 RPM 包只缺一位熟悉.spec编写的人协助到了 2010 年 7 月本公告 宣告 openSUSE 11.3 软件包就绪2010 年 11 月的 发行版打包计划帖 进一步披露作者的目标是把 Mosquitto 打入 Debian、Fedora、openSUSE、Ubuntu 四大主流发行版并计划在 openSUSE 11.4 特性冻结12 月初之前完成 0.9 的上游打包同时继续用 OBS 提供最新版二进制。也就是说openSUSE 11.3 的包是 Mosquitto 在 RPM 世界的第一块里程碑而 openSUSE Build Service 是这一里程碑的构建与托管基础设施。四、打包成果与仅客户端限制4.1 一个月后的成果清单2010 年 8 月 11 日的 0.8.1 发布说明 给出了打包成果的完整矩阵发行版支持级别Fedora 12、13完整支持full supportopenSUSE 11.3完整支持full supportopenSUSE 11.1、11.2仅客户端clients onlyRed Hat Enterprise Linux 5仅客户端clients onlyCentOS 5仅客户端clients only4.2 仅客户端背后的依赖现实为什么部分发行版只能得到clients only包发布说明明确给出了原因这些系统上 sqlite3 的版本太旧无法承载 broker 的持久化依赖。由于 0.8.1 起打包被拆分为多个软件包broker、客户端、库、Python 绑定等因此可以在依赖不达标的发行版上只提供不涉及 sqlite3 的客户端部分。这段记录恰好印证了 openSUSE 11.3 的特殊地位它是当时 RPM 系中少数 sqlite3 版本足够新、扩展支持到位因而能跑完整 broker 的发行版。公告里everything required的判断一个月后由这份支持矩阵得到了验证。五、后续演进摆脱 sqlite3走向自定义持久化5.1 0.9存储层重写依赖够用只是当时的权宜之计。2010 年 11 月 14 日发布的0.9在架构层面解决了根本问题ChangeLog.txt 记录客户端与消息数据改为内存中的自定义数据结构管理不再依赖 sqlite3持久化数据库文件格式重写为自定义二进制格式彻底移除对 sqlite、pcre、sqlite3-pcre 的依赖仍提供对旧 sqlite 数据库的可选导入支持migrate 工具保证老用户平滑升级。5.2 0.11旧代码清理0.112011 年 6 月的 ChangeLog 条目则是这条演进线的终点Removed all old sqlite code.至此Mosquitto 核心不再包含任何 sqlite3 代码发行版打包也不再受 sqlite3 版本与扩展组件可用性的约束。5.3 今天sqlite 以可选插件形态回归有趣的是sqlite 能力并未从 Mosquitto 消失而是换了一种形态回归——以可选持久化插件的方式存在构建开关位于 config.mk# Build with sqlite3 support - this enables the sqlite persistence plugin. WITH_SQLITEyesREADME-compiling.md 将 sqlite3 明确列为可选依赖for persistence support in the broker - optional, disable withWITH_SQLITEno插件本体位于 plugins/persist-sqlite/其测试配置 test.conf 展示了最小可用的加载方式persistence_location . plugin ./mosquitto_persist_sqlite.so plugin_opt_page_size 4096 plugin_opt_flush_period 5即通过plugin指令加载mosquitto_persist_sqlite.so用plugin_opt_*配置 SQLite 页大小与落盘周期。仓库内的 docker/2.1-ubuntu/Dockerfile、docker/2.1-alpine/Dockerfile 也展示了该插件的编译与安装路径。可见2010 年sqlite3 依赖决定了发行版能否完整支持 Mosquitto的时代命题如今已转化为需要时按需加载插件的模块化方案。六、回顾与启示把这条历史线串起来看mosquitto-on-opensuse-11-3.md 这篇百字公告其实是三个工程事实的交汇点依赖管理决定发行版覆盖早期 Mosquitto 的 sqlite3 pcre sqlite3-pcre 依赖链直接决定了哪些发行版能提供完整功能包openSUSE 11.3而哪些只能提供clients onlyopenSUSE 11.1/11.2、RHEL 5、CentOS 5OBS 是 Mosquitto RPM 生态的起点从 RPM 打包求助 到 发行版打包计划openSUSE Build Service 承担了 RPM 系最初的构建与托管架构演进消解了生态瓶颈0.9 存储层重写、0.11 清除旧代码最终让sqlite3 是否可用不再是 broker 能否部署的硬门槛这一历史包袱如今由可选插件机制承载。对于今天在 openSUSE/SUSE 系部署 Mosquitto 的读者最直接的参考是现代版本已无 sqlite3-pcre 之类的强制依赖sqlite 持久化通过WITH_SQLITEyes编译并加载persist-sqlite插件获得完整的编译依赖清单Fedora 系对应sqlite-develUbuntu 系对应libsqlite3-dev见 README-compiling.md插件配置范例见 plugins/persist-sqlite/test.conf。【免费下载链接】mosquittoEclipse Mosquitto - An open source MQTT broker项目地址: https://gitcode.com/gh_mirrors/mos/mosquitto创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
企业数字化 ERP 产品动态
相关推荐
Lucene全文检索实战:从倒排索引到中文分词与性能调优 1. 为什么选择Lucene来做搜索1.1 从数据库LIKE到倒排索引的距离搜索功能,听起来是个基础需求,但如果真拿数据库的LIKE去顶,数据量一上来就非常难受。我自己曾经在一个内容管理项目里,表里存了几十万条文章,用户输入一个… · 2026/9/23 17:34:10
胡闻源码解析:面试被问原理答不上来?3步吃透核心逻辑 胡闻源码解析:面试被问原理答不上来?3步吃透核心逻辑 面试时,面试官抛出一个看似简单的概念,你大脑一片空白,支支吾吾答不上来,这种尴尬谁没经历过?很多后端工程师在准备 Java 或 Go… · 2026/9/23 17:34:03
书匠策AI:不是又一个“论文生成器”,而是一间随身携带的学术工作室 官网:www.shujiangce.com | 微信 公众号 :书匠策AI 如果你在网上搜过“AI写论文”,大概率已经被各种夸张的宣传语轰炸过一遍了。“三分钟出初稿”“万字长文一键生成”“查重率低于5%”——听起来很美好,用起来很崩溃。
原因很简… · 2026/9/23 17:34:03
电脑怎么备份保姆级教程:版本升级后API全变了? 电脑怎么备份保姆级教程:版本升级后API全变了? 版本升级后 API 全变了,备份脚本直接报错,数据丢了一半。别慌,这篇 保姆级教程 带你从零搭建一个健壮的备份系统,彻底解决痛点。 项目目标… · 2026/9/23 18:54:22
YOLOv5茶叶枯萎病检测:从环境搭建到模型部署实战 简介:一份基于Python与Shell的茶叶枯萎病检测系统设计源码,面向茶叶种植者、农业科研人员及AI开发者,用于替代传统人工目测识别,实现茶叶病害的自动化巡检与快速预警。项目包含51个文件,压缩包约745KB,核心… · 2026/9/23 18:54:22
PSO优化SVM参数:从C和gamma到高精度预测的MATLAB实战 简介:利用MATLAB实现支持向量机(SVM)数据预测的完整仿真案例,重点演示如何采用粒子群优化算法(PSO)对SVM的惩罚因子C和核函数参数γ进行自动寻优,并与未优化的SVM模型做性能对比,适合… · 2026/9/23 18:54:22
9700张人+火灾图像数据集YOLO实战指南 简介:本资源是面向YOLO系列目标检测算法研究与工程落地的高质量火灾与人体双类别数据集,专为计算机视觉初学者、算法工程师及安防智能识别项目开发者设计,可直接用于模型训练、验证与测试。压缩包共2000个文件,主体为VOC格式XML标… · 2026/9/23 18:54:20
OpenCV轻量级视频人脸识别与陌生人报警系统实现 简介:这是一套面向计算机专业本科生的Python毕业设计实战项目,基于OpenCV实现视频流中实时人脸识别与陌生人报警功能,适用于课程设计、期末大作业及项目能力强化训练。资源包共40个文件,涵盖5个UI界面设计文件(.ui&… · 2026/9/23 18:54:14
3招搞定手机怎么下载微信面试难题实战项目解析 3招搞定手机怎么下载微信面试难题实战项目解析 面试被问“手机怎么下载微信”背后的原理,90%的人答不上来。别笑,这看似弱智的问题,实则是考察你对移动应用分发机制、安全校验及网络协议理解的试金石。我带过不少校招新人,他们背了八股文,却连一个A… · 2026/9/23 0:00:03
你有新短消息请注意查收:3个新手避坑指南搞定消息系统选型 你有新短消息请注意查收:3个新手避坑指南搞定消息系统选型 面试被问“高并发下如何保证消息不丢失”,你张口就是“用Redis”,结果面试官追问“如果Redis宕机了怎么办”,你瞬间卡壳。这种场景太常见了,很多新手在背八股文时,只记住了技术名词… · 2026/9/23 0:00:29