【问题标题】:libsasl dependency issues when installing librdkafka1 via yum on aws linux machine在 aws linux 机器上通过 yum 安装 librdkafka1 时出现 libsasl 依赖问题
【发布时间】:2017-06-03 13:25:43
【问题描述】:

我正在尝试使用 pip 安装 python confluent-kafka 包。我正在运行 amazon linux(版本 Amazon Linux AMI 版本 2016.09)的 aws ec2 实例上尝试此操作。我只是在做:

pip install pip install confluent-kafka

但这会产生以下错误:

In file included from confluent_kafka/src/confluent_kafka.c:17:0:
confluent_kafka/src/confluent_kafka.h:21:32: fatal error: librdkafka/rdkafka.h: No such file or directory
 #include <librdkafka/rdkafka.h>
                                ^
compilation terminated.
error: command 'gcc' failed with exit status 1

为了解决这个问题,我做了两件事:

1) 按照this page 上的说明添加文件 /etc/yum.repos.d/confluent.repo 的内容:

[Confluent.dist]
name=Confluent repository (dist)
baseurl=http://packages.confluent.io/rpm/3.0/6
gpgcheck=1
gpgkey=http://packages.confluent.io/rpm/3.0/archive.key
enabled=1

[Confluent]
name=Confluent repository
baseurl=http://packages.confluent.io/rpm/3.0
gpgcheck=1
gpgkey=http://packages.confluent.io/rpm/3.0/archive.key
enabled=1

2) 尝试使用此命令安装 librdkafka 库:

sudo yum clean all
sudo yum install -y librdkafka1 librdkafka-devel

Yum 会吐出这个错误:

Error: Package: librdkafka1-0.9.1_confluent3.0.1-1.el7.x86_64 (Confluent.dist)
       Requires: openssl-libs
Error: Package: librdkafka1-0.9.1_confluent3.0.1-1.el7.x86_64 (Confluent.dist)
       Requires: libsasl2.so.3()(64bit)

some googling之后,我试过了:

sudo ln /usr/lib64/libsasl2.so.2 /usr/lib64/libsasl2.so.3

这没有效果。我尝试进行 yum 升级,但这也没有解决问题。经过多次谷歌搜索,this kafka user group post 是我能找到的唯一远程有用的东西,但遗憾的是它没有包含问题的解决方案。

我真的很想在这个实例上启动并运行 kafka python,所以任何建议都将不胜感激。

【问题讨论】:

    标签: python linux amazon-ec2 apache-kafka confluent-platform


    【解决方案1】:

    Amazon Linux 2016.19 似乎基于 RHEL 6,因此您需要参考 Confluent docs 中所述的 Confluent 的 RHEL 6 Yum 存储库,即将以下内容写入 /etc/yum.repos.d/confluent

    [Confluent.dist]
    name=Confluent repository (dist)
    baseurl=http://packages.confluent.io/rpm/3.1/6
    gpgcheck=1
    gpgkey=http://packages.confluent.io/rpm/3.1/archive.key
    enabled=1
    
    [Confluent]
    name=Confluent repository
    baseurl=http://packages.confluent.io/rpm/3.1
    gpgcheck=1
    gpgkey=http://packages.confluent.io/rpm/3.1/archive.key
    enabled=1
    

    接着是:

    $ sudo yum clean all
    $ sudo yum install gcc librdkafka1 librdkafka-devel cyrus-sasl-devel openssl-libs python-devel
    $ pip install confluent-kafka  (possibly in a virtualenv)
    

    【讨论】:

    • 好吧,我真该死,这行得通!我应该在我的问题中提到我实际上已经创建了 confluent.repo 文件并复制了“RHEL/Centos/Oracle 6”部分下的文本。我正在关注此页面上的文档:docs.confluent.io/3.0.0/installation.html#rpm-packages-via-yum 用于融合 3.0.0。您链接的页面中的文档适用于 3.1.1。所以真正的解决办法是使用正确版本的融合。我将使用此信息更新我的问题,您可以更新您的答案,以便更清楚地确定融合版本是问题所在。
    • 嗯说得太早了。我刚刚尝试使用 3.1.1 rpm repo 重新安装 confluent-platform-2.11 并收到一堆 PYCURL ERROR 22 - “The requested URL returned error: 404 Not Found”错误。但是,当我将 confluent.repo 文件指向 3.0 url 时,它们安装得很好。除了仅适用于 3.1 url 的 librdkafka1。 >_
    • 发布第二期的第二个问题:stackoverflow.com/questions/41774633/…
    猜你喜欢
    • 2021-07-02
    • 2019-09-15
    • 2013-05-21
    • 1970-01-01
    • 1970-01-01
    • 2015-02-12
    • 2016-09-15
    • 1970-01-01
    • 2022-09-24
    相关资源
    最近更新 更多