# Include openssl within a build

**URL:** <https://forum.elixirforum.com/t/include-openssl-within-a-build/32566>\
**Category:** Questions\
**Tags:** erlang, mix-release, openssl\
**Created:** [June 22, 2020, 10:07pm UTC](https://forum.elixirforum.com/t/include-openssl-within-a-build/32566 "2020-06-22T22:07:33Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![dsd](https://forum.elixirforum.com/letter_avatar_proxy/v4/letter/d/ce73a5/32.png) [@dsd](https://forum.elixirforum.com/u/dsd)\
**Post date:** [June 22, 2020, 10:07pm UTC](https://forum.elixirforum.com/t/include-openssl-within-a-build/32566/1 "2020-06-22T22:07:33Z")

</div>

Is there a way to include openssl within a build, rather than relying on the target system install?

Looks like Erlang libraries such as crypto relies on specific openssl installation version, and when production image is built, and is being distributed, it creates a dependency on specific version of openssl being installed on the target machine.

---

<div class="post-metadata">

**Author:** ![hauleth](https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/hauleth/32/18942_2.png) [@hauleth](https://forum.elixirforum.com/u/hauleth)\
**Post date:** [June 23, 2020, 11:14am UTC](https://forum.elixirforum.com/t/include-openssl-within-a-build/32566/2 "2020-06-23T11:14:39Z")

</div>

It needs to be compatible version, not exactly the same.

I recall that there was option to include system libraries in one of the release tools out there, but I cannot find it right now. If you want to distribute release with all libraries then maybe tools like Nix or Guix would be interesting for you, as these allows you to pack your application with all dependencies.

---

<div class="post-metadata">

**Author:** ![dsd](https://forum.elixirforum.com/letter_avatar_proxy/v4/letter/d/ce73a5/32.png) [@dsd](https://forum.elixirforum.com/u/dsd)\
**Post date:** [June 23, 2020, 6:14pm UTC](https://forum.elixirforum.com/t/include-openssl-within-a-build/32566/3 "2020-06-23T18:14:42Z")

</div>

Thanks @hauleth, will look into Nix and Guix.  
As you mentioned, I was hoping there was an option to include openssl into the build since some Erlang modules are dependent on it.

---

<div class="post-metadata">

**Author:** ![cmkarlsson](https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/cmkarlsson/32/23000_2.png) [@cmkarlsson](https://forum.elixirforum.com/u/cmkarlsson)\
**Post date:** [June 23, 2020, 10:32pm UTC](https://forum.elixirforum.com/t/include-openssl-within-a-build/32566/4 "2020-06-23T22:32:22Z")

</div>

You can also statically link openssl when compiling erlang. I experimented with this in the past and it is possible. I deemed it not worth the work involved though.

Some potentially outdated info:

[http://erlang.2086793.n4.nabble.com/static-build-of-Erlang-with-openssl-td4681642.html](http://erlang.2086793.n4.nabble.com/static-build-of-Erlang-with-openssl-td4681642.html)

with the summary of:

```elixir
% openssl 

./Configure --prefix=/usr/local/ssl --openssldir=/usr/local/ssl shared 
make && make install 

% erlang 

./configure --with-ssl=/usr/local/ssl/ --disable-dynamic-ssl-lib 

```

---

<div class="post-metadata">

**Author:** ![dsd](https://forum.elixirforum.com/letter_avatar_proxy/v4/letter/d/ce73a5/32.png) [@dsd](https://forum.elixirforum.com/u/dsd)\
**Post date:** [June 24, 2020, 7:59am UTC](https://forum.elixirforum.com/t/include-openssl-within-a-build/32566/5 "2020-06-24T07:59:44Z")

</div>

Thanks @cmkarlsson.. That was it. Got it working by adding --disable-dynamic-ssl-lib. That’s all that was missing. For MacOS environment,

asdf uninstall erlang 21.3.8.2  
export KERL\_CONFIGURE\_OPTIONS=“–disable-dynamic-ssl-lib --without-javac --with-ssl=/usr/local/Cellar/openssl/1.0.2t”  
asdf install erlang 21.3.8.2

And then build.
