我试图用dockfile在ubuntu20.04上安装mesos的最新版本(1.9.0)。
FROM ubuntu:20.04
ENV MESOS_VERSION 1.9.0
ENV MESOS_ARTIFACT_FILENAME mesos-${MESOS_VERSION}.tar.gz
# Install Mesos dependencies
# Compile and install Mesos (compilation phase uses 6 threads for speed up this process)
# Uninstall Mesos build dependencies
RUN apt-get update && apt-get install -y \
openjdk-8-jdk \
python-dev \
libcurl4-nss-dev \
libsasl2-dev \
libsasl2-modules \
maven \
libapr1-dev \
libsvn-dev \
zlib1g-dev
RUN wget http://archive.apache.org/dist/mesos/${MESOS_VERSION}/${MESOS_ARTIFACT_FILENAME} \
&& tar -xf ${MESOS_ARTIFACT_FILENAME}
RUN cd mesos-${MESOS_VERSION} \
&& mkdir build \
&& cd build \
&& ../configure \
&& make -j 6 \
&& cp src/.libs/libmesos-${MESOS_VERSION}.so /usr/local/lib/libmesos-${MESOS_VERSION}.so \
&& cd ../.. \
&& rm -rf mesos-${MESOS_VERSION} ${MESOS_ARTIFACT_FILENAME} \
&& apt-get purge -y \
openjdk-8-jdk \
python-dev \
libsasl2-dev \
libsasl2-modules \
maven \
zlib1g-dev \
&& apt-get clean \
&& apt-get autoremove -y \
&& rm -rf /var/lib/apt/lists/*
RUN ln -s /usr/local/lib/libmesos-${MESOS_VERSION}.so /usr/lib/libmesos.so
它一直工作到配置命令
../configure \
&& make -j 6 \
配置之后,make commad会抛出不同的错误。其中之一是:
ar:“u”修饰符被忽略,因为“d”是默认值(请参见“u”)
rc/core/lib/gpr/log_linux.cc:42:13: error: ambiguating new declaration of 'long int gettid()'
42 | static long gettid(void) { return syscall(__NR_gettid); }
| ^~~~~~
In file included from /usr/include/unistd.h:1170,
from src/core/lib/gpr/log_linux.cc:40:
/usr/include/x86_64-linux-gnu/bits/unistd_ext.h:34:16: note: old declaration '__pid_t gettid()'
34 | extern _pid_t gettid (void) _THROW;
| ^~~~~~
src/core/lib/gpr/log_linux.cc:42:13: warning: 'long int gettid()' defined but not used [-Wunused-function]
42 | static long gettid(void) { return syscall(__NR_gettid); }
| ^~~~~~
make[4]:***[Makefile:2650: /mesos-1.9.0/build/3rdparty/grpc-1.10.0/objs/opt/src/core/lib/gpr/log_linux.o] Error 1
我做错了什么在这里建立mesosSpark码头形象海马??请帮帮我。
2条答案
按热度按时间jdg4fx2g1#
通过运行
make -j 6
. 这将导致make
在6个线程中运行,所有线程将同时输出。移动到-j 1
能够排除故障。要解决这类问题,您需要在生成阶段失败之前停止生成。如果您使用的是buildx,请选中此项,以便发布如何创建阶段和中间图像。一旦您有了中间阶段,您将创建容器和手动步骤,并解决问题的问题。
为了检查你的问题,我在
./configure
并创建容器以进一步排除故障。我看到的是有一些先决条件是缺失的,比如build-essential
,autogen
,autoconf
. 我甚至需要default-jdk
,但这可能是路径问题,因为我看到您正在安装openjdk-8-jdk
. 仍然存在缺少库的问题,因此您需要从这一点继续。vktxenjb2#
我在这个网站上找到了一个解决方案,它对我有用