在CentOS 7上从源代码构建TileServer GL

时间:2017-11-19 00:11:27

标签: c++ linux centos7 mapbox-gl openmaptiles

我已经在Debian环境中从源代码成功构建并运行TileServer GL,但是这个安装的要求是它在CentOS 7上,似乎我遇到了一个难以克服的问题。我不是想象中的任何一个Linux专家,所以我希望这里有人可以提供一些指导。

以下是我正在安装Node和CentOS依赖项的Dockerfile部分:

FROM centos:latest
RUN curl --silent --location https://rpm.nodesource.com/setup_6.x | bash -
RUN yum -y install nodejs \
       cairo \
       cairo-devel \
       gcc-c++ \
       libcurl-devel \
       libgcc.x86_64 \
       libXxf86vm-devel \
       make \
       mesa-libGL-devel \
       mesa-libgbm \
       mesa-libGLES \
       protobuf-devel \
       xorg-x11-server-Xvfb
RUN rm -rf /var/cache/yum

# Symlink to libcurl-gnutls
RUN ln -s /usr/lib64/libcurl.so.4 /usr/lib64/libcurl-gnutls.so.4

当我docker run图像时,T​​ileServer尝试启动,但随后说:

Error: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.20' not found (required by /tileserver-gl/node_modules/@mapbox/mapbox-gl-native/lib/mapbox_gl_native.node)

在CentOS 7中,GLIBCXX的版本在3.4.19停止,从我读过的内容来看,没有办法改变这一点。所以我的问题是:

1)我无法在CentOS中更新libstdc ++吗?

2)如果是真的,那还有另一种方法吗?有没有办法构建TileServer GL或mapbox-gl-native,可以接受早期版本的c ++?

这个问题是mentioned in this issue thread但是从来没有任何解决方案。对此的任何帮助都会非常棒。

1 个答案:

答案 0 :(得分:1)

添加

RUN echo "[warning:fedora]" | tee /etc/yum.repos.d/FedoraRepo.repo && \
echo "name=fedora" | tee -a /etc/yum.repos.d/FedoraRepo.repo  && \
echo "mirrorlist=http://mirrors.fedoraproject.org/mirrorlist?repo=fedora-23&arch=\$basearch" | tee -a /etc/yum.repos.d/FedoraRepo.repo  && \
echo "enabled=1" | tee -a /etc/yum.repos.d/FedoraRepo.repo  && \
echo "gpgcheck=1" | tee -a /etc/yum.repos.d/FedoraRepo.repo  && \
echo "gpgkey=https://getfedora.org/static/34EC9CBA.txt" | tee -a /etc/yum.repos.d/FedoraRepo.repo  && \
yum -y update gcc g++

到您的Docker镜像,它应该工作。它有点hacky,但它有效:)

来源:https://github.com/rmrice/tileserver-gl/blob/0441685f0db7f890d9510039767a1f66f5e3edbe/docs/installation_centos.rst