Fl4m3Ph03n1x
Cannot find libtinfo.so.6 when launching elixir app
Background
I am using elixir 1.9 with erlang 22.0 and I am using the command mix release. However when I try to run my app with _build/dev/rel/andy/bin/my_app start start I get an error:
Error
This is the error I get when trying to run it:
/home/devops/_build/dev/rel/my_app/erts-10.4.3/bin/beam.smp: error while loading shared libraries: libtinfo.so.6: cannot open shared object file: No such file or directory
To fix it I tried running sudo apt-get install libtinfo.so.6 but it doesn’t look like it exists:
Reading package lists... Done
Building dependency tree
Reading state information... Done
E: Unable to locate package libtinfo.so.6
E: Couldn't find any package by glob 'libtinfo.so.6'
E: Couldn't find any package by regex 'libtinfo.so.6'
This is my OS operation:
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 16.04.6 LTS
Release: 16.04
Codename: xenial
How can I fix this?
Marked As Solved
NobbZ
You probably build your release on a different setup, one which had libtinfo.so.6 available.
Please build the release on an Ubuntu 16.04.6 and nothing else.
edit
$ curl "https://packages.ubuntu.com/xenial/allpackages?format=txt.gz" | zgrep libtinfo
libtinfo-dev (6.0+20160213-1ubuntu1) developer's library for the low-level terminfo library
libtinfo5 (6.0+20160213-1ubuntu1) shared low-level terminfo library for terminal handling
libtinfo5-dbg (6.0+20160213-1ubuntu1) debugging/profiling library for the low-level terminfo library
For 16.04 only libtinfo5 is available as it seems.
It contains the following files (https://packages.ubuntu.com/xenial/amd64/libtinfo5/filelist):
/lib/x86_64-linux-gnu/libtinfo.so.5/lib/x86_64-linux-gnu/libtinfo.so.5.9/usr/lib/x86_64-linux-gnu/libtic.so.5/usr/lib/x86_64-linux-gnu/libtic.so.5.9/usr/share/doc/libtinfo5/TODO.Debian/usr/share/doc/libtinfo5/changelog.Debian.gz/usr/share/doc/libtinfo5/copyright
Also Liked
Manzanit0
Just for the record, I came across this yesterday, same issue, etc. and this is the final working Dockerfile I came up with, in case anybody finds it useful.
FROM elixir:1.10.3 AS app_builder
ENV MIX_ENV=prod \
LANG=C.UTF-8
# Build local package repository
RUN mix local.hex --force && \
mix local.rebar --force
RUN mkdir /app
WORKDIR /app
# Compile dependencies
COPY mix.exs .
COPY mix.lock .
RUN mix deps.get && mix deps.compile
# Let's make sure we have node
RUN curl -sL https://deb.nodesource.com/setup_14.x | bash - && \
apt-get install -y nodejs
# Compile assets
COPY assets ./assets
RUN npm install --prefix ./assets && \
npm run deploy --prefix ./assets
# Now, let's go with the actual elixir code. The order matters: if we only
# change elixir code, all the above layers will be cached ~ less image build time.
COPY config ./config
COPY lib ./lib
COPY priv ./priv
# Final build step: digest static assets and generate the release
RUN mix phx.digest && mix release
FROM debian:buster-slim AS app
ENV LANG=C.UTF-8
RUN apt-get update && apt-get install -y openssl
RUN useradd --create-home app
WORKDIR /home/app
COPY --from=app_builder /app/_build .
RUN chown -R app: ./prod
USER app
CMD ["./prod/rel/cookbook/bin/cookbook", "start"]
NobbZ
Please also add deps to your .dockerignoe. Some packages create artifacts in there 
Also, I can’t see where you define base, but you reference it. Just from looking at it, this wont actually work.







