在 CentOS 7 上从源代码构建 TileServer GL
Building TileServer GL from source on CentOS 7
我已经在 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
图像时,TileServer 尝试启动但随后显示:
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,但一直没有任何解决方案。任何对此的帮助都会非常棒。
添加
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,但它有效 :)
我已经在 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
图像时,TileServer 尝试启动但随后显示:
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,但一直没有任何解决方案。任何对此的帮助都会非常棒。
添加
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,但它有效 :)