andreyuhai

andreyuhai

Failed to load NIF library, symbol not found for libpostal

I am trying to install expostal in a new Elixir project in a container with alpine, and since libpostal exists as a package on alpine, I am just installing it.

❯ docker run --rm -it elixir:alpine sh
/ # apk add build-base libpostal-dev
/ # mix new foobar

# Add {:expostal, "~> 0.2.0"} to the deps.

/foobar # mix deps.get
/foobar # mix deps.compile

/foobar # iex -S mix
iex(1)> Expostal.par(TAB)
13:18:25.440 [warning] The on_load function for module Elixir.Expostal returned:
{{:badmatch,
  {:error,
   {:load_failed,
    'Failed to load NIF library: \'Error relocating /foobar/_build/dev/lib/expostal/priv/expostal.so: libpostal_setup_parser: symbol not found\''}}},
 [
   {Expostal, :init, 0, [file: 'lib/expostal.ex', line: 13]},
   {:code_server, :"-handle_on_load/5-fun-0-", 1,
    [file: 'code_server.erl', line: 1317]}
 ]}


13:18:25.439 [error] Process #PID<0.202.0> raised an exception
** (MatchError) no match of right hand side value: {:error, {:load_failed, 'Failed to load NIF library: \'Error relocating /foobar/_build/dev/lib/expostal/priv/expostal.so: libpostal_setup_parser: symbol not found\''}}
    (expostal 0.2.0) lib/expostal.ex:13: Expostal.init/0
    (kernel 8.5) code_server.erl:1317: anonymous fn/1 in :code_server.handle_on_load/5

I’ve asked this on Elixir Slack and @LostKobraKai had suggested that the NIF compilation is the problem and I should compile it properly. However I am not sure how I would compile it properly so that it’d work on alpine.


Compiling from source and installing on ubuntu:latest and alpine:latest just worked fine. So it means there’s something with the expostal I think.

First Post!

dimitarvp

dimitarvp

Not sure which version your Alpine is but maybe try upgrading MUSL?

apk upgrade musl

In any case please make sure you use a fairly modern Alpine version. It’s not a problem to use a non-Elixir based image and just add Erlang and Elixir to a normal Alpine Docker image.

If that doesn’t work maybe you need GNU libc compatibility:

apk add gcompat

But outside of that, not sure.

Where Next?

Popular in Questions Top

vonH
In asking this question I am more interested about the expressiveness of the language itself and less concerned about the availability of...
New
Werner
Hi, I’m using Ubuntu 18.04 and after updating to OTP-24.0 yesterday i have this warning when I run “mix local.hex”: 14:57:30.512 [warn] ...
New
hariharasudhan94
I would like to know what is the best IDE for elixir development?
New
vertexbuffer
Hello, can anybody help here..? I have a list of players and I what to delete an element, but every for loop the list is reverting to ori...
New
script
If I have a string “1000 cfu/ml” . I want to remove the characters and / and space . So the string is like this "1000" What is the ...
New
mgjohns61585
Could someone help me? I'm making my first elixir program, number guessing game. I can't figure out how to convert the user's guess from ...
New
aadeshere1
I have a another noob question about loop. Since elixir is immutable, while loop is not directly possible. total = 10 while total != 0 ...
New
chensan
I have a User schema with a :from_id field set to type :string: defmodule TweetBot.Repo.Migrations.CreateUsers do use Ecto.Migration ...
New
kostonstyle
Hi all I want to have a unix time, from the current time plus 1 hour. DateTime.now + 1 hour How to get it in elixir? Thanks
New
joeerl
Hello again - after a longish gap I’ve decided I really must dig into Elixir and see what’s been happening here - so I have a few questio...
New

Other popular topics Top

chrismccord
Phoenix 1.4.0 released Phoenix 1.4 is out! This release ships with exciting new features, most notably with HTTP2 support, improved deve...
688 30048 115
New
JakeBecker
TL;DR: I’ve just released an implementation of Microsoft’s IDE-independent Language Server Protocol for Elixir. It adds language support ...
1140 51847 244
New
sergio
In Ruby, I can go: User.find_by(email: "foobar@email.com").update(email: "hello@email.com") How can I do something similar in Elixir? ...
New
srinivasu
How to handle excepions in elixir? Suppose i have A, B, C ,D, E modules. and each module has get() function. A.get() method will call th...
New
vertexbuffer
Hello, can anybody help here..? I have a list of players and I what to delete an element, but every for loop the list is reverting to ori...
New
freewebwithme
Using vs code and installed ElixirLS: support and debugger. And I got an error popped up on start up says Failed to run ‘elixir’ comma...
New
ashish173
I am using Ecto timestamps with postgres, I can see the timestamps() use the :naive_dateime but for my use case I wanted to store the ti...
New
alice
Hey, Just curious what are the main benefits of Elixir compared to Clojure? When is Elixir more useful than Clojure and vice versa? Th...
New
fireproofsocks
Forgive me if this is obvious, but how does one delete a database record WITHOUT selecting it first? https://hexdocs.pm/ecto/Ecto.Repo.h...
New
romenigld
I am trying to run a deploy with docker and I successfully runned with this command: docker build -t romenigld/blog-prod . but when I t...
New

We're in Beta

About us Mission Statement