首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >加载共享库时出错: libtinfo.so.6 :对同一个坞映像的两种行为

加载共享库时出错: libtinfo.so.6 :对同一个坞映像的两种行为
EN

DevOps用户
提问于 2020-03-09 04:56:54
回答 1查看 1.6K关注 0票数 0

我正在开发一个Erlang应用程序,为此我使用了一个坞映像。

docker-compose.yml

代码语言:javascript
复制
FROM centos
LABEL Name=myimage Version=2.0.0

RUN set -e \
   && yum -y install \
      autoconf \
      gcc \
      gcc-c++ \
      git \
      glibc-devel \
      make \
      ncurses-devel \
      tar \
      curl


ENV SSL_VERSION="1.0.2p"

RUN set -e \
   && mkdir -p /tmp/openssl \
   && cd /tmp \
   && curl -fSL -o openssl.sha256   http://www.openssl.org/source/openssl-${SSL_VERSION}.tar.gz.sha256 \
   && curl -fSL -o openssl.tar.gz http://www.openssl.org/source/openssl-${SSL_VERSION}.tar.gz \
   && SHA=$(printf "%s  openssl.tar.gz" `cat openssl.sha256` | sha256sum -c -); if [ "openssl.tar.gz: OK" != "${SHA}" ]; then exit 3; fi \
   && tar -zxf openssl.tar.gz -C /tmp/openssl --strip-components=1 \
   && cd /tmp/openssl \
   && ./Configure \
         --prefix=/usr/local/ssl \
         --openssldir=/usr/local/ssl \
      linux-x86_64 \
      shared \
   && make -j4 \
   && make install \
   && rm -Rf /tmp/openssl*

ENV OTP_VERSION="20.3.6"
ENV WITH_NATIVE=true

RUN set -e \
   && mkdir -p /tmp/otp_src \
   && cd /tmp \
   && curl --tlsv1.2 -fSL -o otp_src.tar.gz https://github.com/erlang/otp/archive/OTP-20.3.6.tar.gz \
   && tar -zxf otp_src.tar.gz -C /tmp/otp_src --strip-components=1 \
   && cd /tmp/otp_src \
   && ./otp_build autoconf \
   && ./configure \
         --prefix=/usr/local/otp \
         --enable-threads \
         --enable-smp-support \
         --enable-kernel-poll \
         --disable-dynamic-ssl-lib \
         --with-ssl=/usr/local/ssl \
         `test "${WITH_NATIVE}" = "true" && echo "--enable-hipe --enable-native-libs"` \
   && make -j4 \
   && make install \
   && ln -s /usr/local/otp_${OTP_VERSION} /usr/local/otp \
   && rm -Rf /tmp/otp_src*

ENV PATH $PATH:/usr/local/otp/bin

RUN set -e \
   && yum -y install \
      which


ENV REBAR3_VERSION="3.6.1"

RUN set -xe \
    && REBAR3_DOWNLOAD_URL="https://github.com/erlang/rebar3/archive/${REBAR3_VERSION}.tar.gz" \
    && REBAR3_DOWNLOAD_SHA256="40b3c85440f3235c7b149578d0211bdf57d1c66390f888bb771704f8abc71033" \
    && mkdir -p /usr/src/rebar3-src \
    && curl --tlsv1.2 -fSL -o rebar3-src.tar.gz "$REBAR3_DOWNLOAD_URL" \
    && echo "$REBAR3_DOWNLOAD_SHA256 rebar3-src.tar.gz" | sha256sum -c - \
    && tar -xzf rebar3-src.tar.gz -C /usr/src/rebar3-src --strip-components=1 \
    && rm rebar3-src.tar.gz \
    && cd /usr/src/rebar3-src \
    && HOME=$PWD ./bootstrap \
    && install -v ./rebar3 /usr/local/bin/ \
    && rm -rf /usr/src/rebar3-src

RUN mkdir /myimage
WORKDIR /myimage

运行docker-compose的命令

代码语言:javascript
复制
sudo docker-compose build
sudo docker-compose run --rm myimage bash

当我尝试运行由Ubuntu-18.04创建的生产焦油时,我得到:

加载共享库时出错: libtinfo.so.6:无法打开共享对象文件:没有这样的文件或目录。

我编译时没有任何错误。当我从Debian-9创建这个tar时,它不会出错。

Debian机器已经在本地安装了erlang-otp,但是Ubuntu没有。

EN

回答 1

DevOps用户

发布于 2020-03-10 16:05:11

码头工人已知问题#37531

要修复依赖关系,可以尝试:

  1. 要么将Docker升级到17.02
代码语言:javascript
复制
curl -sSL https://get.docker.com/ | sudo bash
  1. 或者在容器中安装lib。因为您的容器基于Centos (FROM centos),所以请尝试yum install
代码语言:javascript
复制
rpm -ql libXtst-devel-1.2.2-2.1.el6.x86_64
票数 1
EN
页面原文内容由DevOps提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://devops.stackexchange.com/questions/11026

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档