Windows x64 RabbitMQ 安装错误与 Erlang 环境变量 (ERLANG_HOME)
Posted
技术标签:
【中文标题】Windows x64 RabbitMQ 安装错误与 Erlang 环境变量 (ERLANG_HOME)【英文标题】:Windows x64 RabbitMQ install error with Erlang environment var (ERLANG_HOME) 【发布时间】:2012-09-01 15:54:35 【问题描述】:我问/回答这个问题是因为它把我挂了,而且很可能其他人也会遇到同样的问题。
在 Windows Server 2008 x64 上安装 RabbitMQ x64 v2.8.6。
使用默认安装位置 C:\Program Files\erl5.9.2 安装 Erlang 后,我试图通过运行 rabbitmq-service.bat 来启动服务器。失败:
Please either set ERLANG_HOME to point to your Erlang installation
or place the RabbitMQ server distribution in the Erlang lib folder.
问题是 .bat 文件没有正确的子路径。带有 5.9.2 (R15B02) 版本的 erlang。我的 ERLANG_HOME 目录设置正确,但脚本没有正确使用这个版本的 Erlang,在这个 Erlang 菜鸟看来,有一个名为“erts-5.9.2”的新子目录导致了问题。也许熟悉这些脚本的人可以描述如何在没有我将要描述的黑客解决方法的情况下使其正常工作?
【问题讨论】:
重启会解决问题,我也遇到过同样的问题,但是重启机器后就解决了 【参考方案1】:Windows 上有几个 RabbitMQ 控制 .bat 文件。您使用的每一个都需要更改以正确反映 Erlang 路径。在此示例中,我正在编辑 rabbitmq-server.bat,因为它是更简单的文件之一...您要运行的任何 .bat 文件都需要使用 rabbitmq_service.bat 文件才能使它们工作是参与调整最多的人。
编辑那个 rabbitmq_server.bat 文件,你可以看到大约在第 48 行左右,检查是否找到了 erl.exe,但路径不正确:
if not exist "!ERLANG_HOME!\bin\erl.exe" (
该路径与 Erlang 5.9.2 版本的文件结构不匹配。我通过简单地从第 48 行到第 58 行删除此路径检查来解决此问题,然后,.bat 实际上在第 129 行调用 erl.exe,内容如下:
"!ERLANG_HOME!\bin\erl.exe"
我只是硬编码了我的 erl.exe 的路径:
"C:\Program Files\erl5.9.2\erts-5.9.2\bin\erl.exe"
路径正确后,rabbitmq .bat 文件将运行。
【讨论】:
在编辑 .bat 文件之前,我建议验证环境变量中的 ERLANG_HOME 变量。不知何故,erlang 安装程序设置了一个错字。使用 Windows 资源管理器复制路径并将其粘贴,以便在插入此表达式“!ERLANG_HOME!\bin\erl.exe”时很好地匹配(例如避免使用\\) 您的 ERLANG_HOME 可能是 C:\Program Files\erl5.9.2,只是更改为 C:\Program Files\erl5.9.2\erts-5.9.2,应该可以解决问题。要点是 RabbitMQ 并且可能使用 erlang 的其他任何东西都期望主文件夹是“bin”的父文件夹,因此确保变量指向该文件夹应该是快乐的应用程序。【参考方案2】:1- 设置环境变量:
变量名:ERLANG_HOME
变量值:C:\Program Files (x86)\erl6.4
注意:不要在上述步骤中包含 bin。
2- 将%ERLANG_HOME%\bin
添加到PATH
环境变量中:
变量名:PATH
变量值:%ERLANG_HOME%\bin
这很好用。
【讨论】:
【参考方案3】:我遇到了类似的问题,在 .bat 文件中修改 ERLANG_HOME 不起作用。然后我在命令提示符下尝试了 echo %ERLANG_HOME%,没有打印环境变量值(我可以看到 ERLANG_HOME 环境变量已在高级系统设置下创建),这让我相信我需要重新启动服务器才能安装 64 位 Erlang。重新启动服务器后,它就像一个魅力。我希望这对某人有所帮助。
【讨论】:
在安装 erlang/rabbit mq 后重新启动服务器对我有用。谢谢! 知道为什么需要重新启动吗?正常情况下无需重启即可设置环境变量。 对我自己的问题的回应:全局环境变量似乎在新的“会话”(cmd 或 PS 窗口)打开时被加载。另一方面,如果脚本设置变量并尝试使用它,它似乎就不能正常工作。我还发现我必须设置变量,启动一个新会话,然后安装 RabbitMQ 以使用新的上下文。否则,RabbitMQ 将安装在用户上下文而不是新变量上下文中。否则,我必须使用“(重新)安装”选项将其重置为新上下文。【参考方案4】:只是为了分享一个截至2019年的最新答案:在Windows Server 2019上,设置环境变量后,需要重新启动才能解决问题。
【讨论】:
我猜这可能是标准的环境变量行为;你只需要打开一个新的 shell 来获取新的环境变量,而不是完全重启你的系统。【参考方案5】:当从任何旧版本的 RabbitMQ升级到版本 3.6.9 时,此问题仍然出现在 Windows 上的 Erlang 18.3 (erl7.3) 和 RabbitMQ 3.6.9 中。此处已说明的解决方案是在启动服务之前使用 'setx -m ERLANG_HOME "C:\Program Files\erl7.3"' 手动设置 ERLANG_HOME。
RabbitMQ 3.6.9 安装程序会从系统中删除环境变量 ERLANG_HOME,同时删除旧版本的 RabbitMQ。然后,当它进入安装步骤时,它不会放回 ERLANG_HOME 变量。然后,启动 RabbitMQ 的批处理文件找不到 Erlang。他们尝试使用“where.exe”找到 Erlang 的主目录,但升级后总是失败。
RabbitMQ 的安装程序也不会杀死所有的 Erlang 后台进程,导致它的许多文件由于 Windows“文件正在使用”问题而无法删除。这会在 %APPDATA%\RabbitMQ 和“C:\Program Files\RabbitMQ”中留下“正在使用的文件”。这些进程是“erl.exe”、“erlsrv.exe”和“epmd.exe”。 RabbitMQ 安装程序应在关闭 RabbitMQ Windows 服务后终止这些进程。
RabbitMQ 在 Windows 上相当笨重。
【讨论】:
【参考方案6】:我遇到了同样的问题。 我通过进行如下三处更改来解决它。
-
更新环境变量中的路径变量
"ERLANG_HOME" : "C:\Program Files\erl8.0"
。
更新“路径”变量"Path" : ";%ERLANG_HOME%\bin;"
在 C 盘中为自己授予对 "Program Files"
的 FULL CONTROL 权限。
它以这种方式对我有用。
【讨论】:
【参考方案7】:有趣的是,这对你有用。 Erl5.9.2 中有两个错误记录导致安装不完整,其中未安装%ERLANG_HOME%\bin
。
任何一个 * 在 32 位机器上安装 64 位 erlang * "程序无法启动,因为您的计算机中缺少 MSVCR100.dll。"
https://groups.google.com/d/topic/erlang-programming/wGtFLzapiQ0/discussion
尝试 5.9.1 或任何其他版本。他们还提到让安装程序的未来版本在失败时提醒您。
【讨论】:
【参考方案8】:我刚刚遇到了这里提到的同样的问题。我在 Windows 7 机器上安装了 otp_win64_R15B02 并且一切正常,但是我在 Windows 2008 服务器上使用了相同的安装程序并且没有创建 bin 目录。然后我卸载了 otp_win64_R15B02 并下载了 otp_win64_R15B02_with_MSVCR100_installer_fix 并创建了 bin 目录。
我怀疑它在我的 Windows 7 系统上运行的原因是我安装了 Visual Studio 并且所需的库已经可用,这使得 otp_win64_R15B02 安装程序能够正常工作。
哦,如果你要安装 Erlang 来运行 RabbitMQ,那么 RabbitMQ 安装会成功并使用损坏的安装程序,但在 RabbitMQ 之后安装 otp_win64_R15B02_with_MSVCR100_installer_fix 将不起作用,只需卸载并重新安装 RabbitMQ 即可解决此问题。
【讨论】:
【参考方案9】:在环境变量中只给 C:\Program Files\erl10.6\ 而不是 C:\Program Files\erl10.6\bin\erl.exe。如果你打开server.bat文件我就知道问题enter image description here
【讨论】:
【参考方案10】:我认为这是 Windows 上的编码问题。我看到了正确的值,但我在控制台上写了 echo %ERLANG_HOME%,该值带有问号。这些步骤可以解决它。
1.go环境变量窗口
2.编辑 ERLANG_HOME 项
3.复制值,打开记事本并粘贴到那里
4.在记事本上再次复制并粘贴到编辑窗口
5.申请并退出窗口
6.关闭命令行工具并重新打开
7.运行rabbitmq bat文件。
【讨论】:
【参考方案11】:我以一种快速而肮脏的方式解决了它,没有命名路径变量 我已经打开了 bat 文件并替换了每次出现的
!ERLANG_HOME!\bin\erl.exe
例如带有硬编码路径可能因版本不同而对您来说是不同的路径
C:\Program Files\erl10.3\erts-10.3\bin\erl.exe
并替换
%RABBITMQ_HOME%\escript\rabbitmq-plugins
与
C:\Program Files\RabbitMQ Server\rabbitmq_server-3.7.14\escript\rabbitmq-plugins
【讨论】:
【参考方案12】:连我都是这个问题。问题是环境变量 ERLANG_HOME=c:\Program Files\erl9.0 从未存在过。
我交叉检查了路径。正确的路径是 c:\Program Files\erl9.3。
改正后
ERLANG_HOME=c:\Program Files\erl9.3
问题解决了。所以,肯定是路径问题。
【讨论】:
【参考方案13】:在我的情况下,应该使用管理员角色运行安装 erlang
【讨论】:
【参考方案14】:下载 Erlang 或 OTP - 只应安装一个版本的 OTP
下载 RabbitMQ 安装程序
以管理员身份安装两个exe文件
为 Erlang 设置类路径。 (设置classpath有点麻烦,请按照以下步骤操作)
-
设置名称为
ERLANG_HOME
和值为C:\Program Files\erl-23.1
的新路径(此处不要复制bin 文件夹)
编辑系统“路径”并添加%ERLANG_HOME%\bin
转到开始 - 打开 rabbitmq 命令提示符并运行
rabbitmq-plugins enable rabbitmq_management
导航到本地主机:15672
使用访客/访客登录
【讨论】:
【参考方案15】:如果上述解决方案不适合您,那么您可以尝试关注
为你的 rabbit mq 寻找另一个兼容的 erlang 版本,例如对于 rabbit 3.7.x erlang 版本 20.3.x 到 22.0.x 都是兼容的。
右键单击新下载的 erlang 版本,然后从属性中选择取消阻止文件的选项。
使用管理员权限运行 erlang。
重新运行rabbit mq exe
【讨论】:
以上是关于Windows x64 RabbitMQ 安装错误与 Erlang 环境变量 (ERLANG_HOME)的主要内容,如果未能解决你的问题,请参考以下文章
错误未能在 Windows 7x64 上构建 json gem 本机扩展