代码之家  ›  专栏  ›  技术社区  ›  speedplane

在UbuntuXenial(Ubuntu16.04)上安装RabbitMQ的简单方法

  •  0
  • speedplane  · 技术社区  · 6 年前

    对于在xenial上创建一个包含rabbitmq的docker容器,是否有任何清晰、简明的实际操作说明?

    我在Docker容器中运行RabbitMQ,出于某种原因,安装它是一个噩梦。每当erlang或rabbitmq有一些更新时,其中一个就变得与另一个不兼容,我就遇到了神秘的依赖性问题。这个 rabbitmq installation page 不提供分步说明,而且我尝试过的每个排列都有某种错误(请参阅下面的最新信息)。

    文档文件:

    RUN  wget https://packages.erlang-solutions.com/erlang-solutions_1.0_all.deb
    RUN dpkg -i erlang-solutions_1.0_all.deb
    RUN apt-get update
    # Then install rabbitmq.
    RUN echo "deb https://dl.bintray.com/rabbitmq/debian xenial main" | \
        tee /etc/apt/sources.list.d/bintray.rabbitmq.list && \
        wget -O- https://dl.bintray.com/rabbitmq/Keys/rabbitmq-release-signing-key.asc | \
        apt-key add -
    

    神秘的rabbitmq错误:

    =SUPERVISOR REPORT==== 26-Jun-2018::03:04:55.163161 ===
        supervisor: {local,'Elixir.Logger.Supervisor'}
        errorContext: start_error
        reason: noproc
    
    3 回复  |  直到 6 年前
        1
  •  2
  •   speedplane    6 年前

    这里发布的两个答案令人钦佩,但它们并没有回答最初的问题:提供一个dockerfile,安装erlang和rabbitmq的兼容版本。

    下面就是这样一个解决方案(经过了很多反复试验)。它安装erlang 1:20.3.6和rabbitmq 3.7.6。更改版本只需要更改此dockerfile的最后一行。

    # Install Erlang + Rabbitmq
    # Install the erlang downloader
    RUN wget https://packages.erlang-solutions.com/erlang-solutions_1.0_all.deb && \
        dpkg -i erlang-solutions_1.0_all.deb
    # Add the rabbitmq source list
    RUN echo "deb https://dl.bintray.com/rabbitmq/debian xenial main" | \
        tee /etc/apt/sources.list.d/bintray.rabbitmq.list && \
        wget -O- https://www.rabbitmq.com/rabbitmq-release-signing-key.asc | apt-key add -
    # Check which rabbitmq/erlang versions are compatible and isntall:
    #       https://www.rabbitmq.com/which-erlang.html
    RUN apt-get update && \
        apt-get install -y esl-erlang=1:20.3.6 rabbitmq-server=3.7.6-1
    
        2
  •  0
  •   Roger Lipscombe    6 年前

    要将erlang版本固定到rabbitmq当前支持的版本,请创建 /etc/apt/preferences.d/erlang 包含以下内容:

    Package: esl-erlang erlang*
    Pin: version 1:20.3*
    Pin-Priority: 999
    

    (每 https://askubuntu.com/a/926030/158095 )

        3
  •  0
  •   Luke Bakken    6 年前

    rabbitmq团队监控 the rabbitmq-users mailing list 有时只在stackoverflow上回答问题。


    使用erlang解决方案包安装时, apt 将安装他们提供的最新版本的erlang。此时,这是版本21,它 is not yet supported by RabbitMQ 是的。这就是为什么你会犯这种不治之症。

    如果你搜索 RabbitMQ用户 字符串的邮件列表 Elixir.Logger.Supervisor ,你会击中 this discussion ,这也解释了 the cause of this problem 是的。

    要在ubuntu上安装最新支持的erlang版本, 恰当的 要求您不仅指定所需的元包版本,而且还指定其版本的所有依赖项。这很不幸,但可以通过运行以下命令来完成:

    apt-get install erlang-nox=1:20.3-1 \
        $(apt-cache show erlang-nox=1:20.3-1 | grep Depends | \
            tr ' ' '\n' | grep erlang | \
            grep -v erlang-base-hipe | tr -d ',' | sed 's/$/=1:20.3-1/')
    

    看看罗杰的答案,包括钉住!