mosquitto 使用时出现的一些问题及其解决办法

本文解决 Mosquitto 在 CentOS 7 上编译及运行时遇到的问题,包括缺失 docbook.xsl 导致的编译错误、动态库 libmosquitto.so.1 缺失、无效用户错误及源码格式问题。

mosquitto 使用时出现的一些问题及其解决办法  

2015-07-01 16:25:44|  分类: mqtt|举报|字号 订阅

问题一:问题描述:

在centos7上编译mosquitto源码时,出现以下问题:


 

make[1]: 进入目录“/home/jason/mosquitto-1.2/man”xsltproc mosquitto.8.xmlwarning: failed to load external entity "/usr/share/xml/docbook/stylesheet/docbook-xsl/manpages/docbook.xsl"compilation error: file manpage.xsl line 3 element importxsl:import : unable to load /usr/share/xml/docbook/stylesheet/docbook-xsl/manpages/docbook.xslcompilation error: file mosquitto.8.xml line 4 element refentryxsltParseStylesheetProcess : document is not a stylesheetmake[1]: *** [mosquitto.8] 错误 5make[1]: 离开目录“/home/jason/mosquitto-1.2/man”make: *** [docs] 错误 2

由提示可以看到,此时问题的原因在于在文件:manpage.xsl里面加载不了:docbook.xsl所致,错误提示中也显示在绝对路径:

/usr/share/xml/docbook/stylesheet/docbook-xsl/manpages/docbook.xsl

下找不到这个文件:

 docbook.xsl

再看文件manpage.xsl里,按照所提示第3行,果然是这个绝对地址:


 

<!-- Set parameters for manpage xsl --><xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"><xsl:import href="/usr/share/xml/docbook/stylesheet/docbook-xsl/manpages/docbook.xsl"/><!-- Don't display notes list of link urls. --><xsl:param name="man.endnotes.list.enabled">0</xsl:param><xsl:param name="man.endnotes.are.numbered">0</xsl:param><!-- But if we do, set a base url for the relative links. --><xsl:param name="man.base.url.for.relative.links">http://mosquitto.org/man/</xsl:param><!-- Don't output filename when generating. --><xsl:param name="man.output.quietly" select="1"></xsl:param><!-- Generate ansi style function synopses. --><xsl:param name="man.funcsynopsis.style">ansi</xsl:param></xsl:stylesheet>

通过命令查找文件 docbook.xsl,在本机中也没有发现,因此基本可以确定是找不到这个文件所致:

[root@localhost mosquitto-1.2]# find / -name docbook.xsl


解决办法:

1.安装docbook-style-xsl

使用命令:yum -y install docbook-style-xsl

2.查看文件docbook.xsl被安装到了哪里:

例如:

[root@localhost tools]# find / -name docbook.xsl
/usr/share/sgml/docbook/xsl-stylesheets-1.78.1/epub/docbook.xsl
/usr/share/sgml/docbook/xsl-stylesheets-1.78.1/fo/docbook.xsl
/usr/share/sgml/docbook/xsl-stylesheets-1.78.1/html/docbook.xsl
/usr/share/sgml/docbook/xsl-stylesheets-1.78.1/manpages/docbook.xsl
/usr/share/sgml/docbook/xsl-stylesheets-1.78.1/xhtml/docbook.xsl
/usr/share/sgml/docbook/xsl-stylesheets-1.78.1/xhtml-1_1/docbook.xsl

3.搜索到之后,将上面红字中的地址修改到文件manpage.xsl里的对应位置;

4.再重新编译mosquitto,问题已经解决!

问题二:执行mosquitto客户端程序时出现找不到动态库:libmosquitto.so.1


./mosquitto_sub: error while loading shared libraries: libmosquitto.so.1: cannot open shared object file: No such file or directory



执行命令:

sudo ln -s /usr/local/lib/libmosquitto.so.1 /usr/lib/libmosquitto.so.1

ldconfig

即可


问题三: Invalid user 'mosquitto'.

[root@localhost src]# ./mosquitto
1437558553: Error: Invalid user 'mosquitto'.
两种解决办法:

(1)修改配置文件:mosquitto.conf ,增加登录的用户,例如当前登录用户为root

[原] mosquitto 使用时出现的一些问题及其解决办法 - 逍遥子 - 逍遥子 曰:

 

(1)执行命令增加当前用户:

 adduser mosquitto

如下图:

[原] mosquitto 使用时出现的一些问题及其解决办法 - 逍遥子 - 逍遥子 曰:

 

问题四:

在修改mosquitto源码之后,换到centos环境下重新编译时可能会出现下面的问题:

mosquitto.c:271:2: 错误:缺少结尾的 " 字符
  snprintf(buf, 1024, "%s", CHANGESET);
  ^
mosquitto.c:271:37: 错误:expected expression before ‘)’ token
  snprintf(buf, 1024, "%s", CHANGESET);
                                     ^

该问题的原因是文件:changeset的格式不对,可在centos环境下,按照如下方式修改此文件的格式:

使用vi打开此文件,然后使用:

:set ff=unix
重新设置一下此文件的格式,然后保存退出即可

### 配置 Mosquitto 在 Windows 上开机自启动 要在 Windows 系统上实现 Mosquitto 的开机自启动,可以通过多种方式完成。以下是几种常用的方法: #### 方法一:使用任务计划程序 Windows 自带的任务计划程序是一个强大的工具,可用于安排各种任务在特定条件下运行。 1. **打开任务计划程序** 通过搜索栏输入“任务计划程序”,或者从控制面板中找到并打开它。 2. **创建基本任务** 在右侧的操作窗格中点击“创建基本任务”。按照向导提示逐步进行设置: - 输入任务名称,例如 “Mosquitto_Startup”。 - 设置触发器为“当计算机启动”。 3. **指定要执行的操作** 选择“启动程序”作为操作类型,并浏览到 Mosquitto 的可执行文件路径(通常位于安装目录下的 `mosquitto.exe`),同可以在参数框中添加配置文件路径,例如 `-c C:\Program Files\Mosquitto\mosquitto.conf`[^3]。 4. **保存任务** 完成所有设置后,点击“完成”按钮保存新创建的任务。 --- #### 方法二:将快捷方式放置于启动文件夹 这是一种更为简便的方式,适合希望快速部署的情况。 1. **查找 Mosquitto 可执行文件** 寻找已经安装好的 Mosquitto 主程序所在的具体位置,一般默认安装路径可能是 `C:\Program Files\Mosquitto\`. 2. **创建快捷方式** 对 `mosquitto.exe` 创建一个桌面或其他地方的快捷方式,在属性对话框的目标字段后面附加必要的启动参数,如 `-c "C:\Program Files\Mosquitto\mosquitto.conf"`[^3]。 3. **复制至启动文件夹** 将刚刚制作好的快捷方式拖拽进用户的启动文件夹内。可通过按下 Win 键 + R ,然后键入 `shell:startup` 来迅速定位这个隐藏目录地址。 --- #### 方法三:注册为 Windows 服务 如果倾向于更加专业的解决方案,则可以把 Mosquitto 注册成为一项正式的服务项目。 1. **下载 NSSM (Non-Sucking Service Manager)** 访问官网获取最新版本的 nssm 工具包 https://nssm.cc/download 。解压后得到单个 exe 文件即可满足需求。 2. **执行命令行指令** 打开管理员权限 CMD 控制台窗口,切换至刚才提取出来的 nssm 应用所在的磁盘分区与文件夹之下,依次敲击如下两条语句来建立新的服务实体及其关联关系: ```cmd nssm install MosquittoBroker ``` 接下来会弹出图形界面让用户进一步完善细节选项,其中最重要的部分便是 Application Tab 中 Path 和 Startup Directory 字段分别指向 mosquitto.exe 的绝对全限定名以及其上级父级存储单元;Arguments 处同样补充完整的初始化设定文档引用形式即 `-c C:\Program Files\Mosquitto\mosquitto.conf`。 3. **启动服务** 成功登记完毕之后记得即开启此项功能测试效果是否符合预期标准: ```cmd net start MosquittoBroker ``` --- 以上三种主要途径均能有效达成让 Mosquitto 在每次重启机器之后无需人工干预便自行恢复运作的目的。每种办法各有优劣之处,请根据实际情况和个人偏好挑选最适合自己的那一款予以采纳实践运用起来吧!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值