eye_contact
I want to use httpoison in my first project in Elixir. It’s the only dependency I’ve put into my mix.exs file. I would love some helpful direction, please and thank you ![]()
I see no errors when I run mix deps.get, however I do see errors when I run mix compile.
Here are my versions:
OS:
$ grep -E 'NAME|VERS' /etc/os-release
PRETTY_NAME="Ubuntu 22.04.3 LTS"
NAME="Ubuntu"
VERSION_ID="22.04"
VERSION="22.04.3 LTS (Jammy Jellyfish)"
VERSION_CODENAME=jammy
UBUNTU_CODENAME=jammy
Elixir (vanilla installation via apt install elixir):
$ elixir --version
Erlang/OTP 24 [erts-12.2.1] [source] [64-bit] [smp:16:16] [ds:16:16:10] [async-threads:1] [jit]
Elixir 1.12.2 (compiled with Erlang/OTP 24)
My httpoison version per the mix file:
$ awk '/defp/,/]/' mix.exs
defp deps do
[
{:httpoison, "~> 2.0"}
# {:dep_from_hexpm, "~> 0.3.0"},
# {:dep_from_git, git: "https://github.com/elixir-lang/my_dep.git", tag: "0.1.0"}
]
Below, you’ll see output of a couple of commands. I’ve tried the various mix deps.{update|clean} commands but ultimately none have succeeded in getting this to work. Also, I’ve tried mix local.rebar --force however I still end up w/ the same issue with ssl_verify_fun.
You’ll see below the first line in the compile step mentions the following, which I assume is (part of) the issue, though I’m unsure what is expected. Here’s me showing that the files exist as well as their content and ownership (which seems correct to me?):
<snip>
src/ssl_verify_pk.erl:14:14: can't find include lib "public_key/include/public_key.hrl"
% 14| -include_lib("public_key/include/public_key.hrl").
$ grep -r public_key.hrl ./
./deps/ssl_verify_fun/src/ssl_verify_fun_cert_helpers.erl:-include_lib("public_key/include/public_key.hrl").
./deps/ssl_verify_fun/src/ssl_verify_pk.erl:-include_lib("public_key/include/public_key.hrl").
./deps/ssl_verify_fun/src/ssl_verify_fingerprint.erl:-include_lib("public_key/include/public_key.hrl").
./deps/ssl_verify_fun/src/ssl_verify_hostname.erl:-include_lib("public_key/include/public_key.hrl").
someone@machine:~/code/elixir/web_scraper$
someone@machine:~/code/elixir/web_scraper$ for i in $(grep -rl public_key.hrl ./); do ls -lAF "${i}"; done
-rw-rw-r-- 1 someone someone 2733 Dec 22 10:17 ./deps/ssl_verify_fun/src/ssl_verify_fun_cert_helpers.erl
-rw-rw-r-- 1 someone someone 3415 Dec 22 10:17 ./deps/ssl_verify_fun/src/ssl_verify_pk.erl
-rw-rw-r-- 1 someone someone 2402 Dec 22 10:17 ./deps/ssl_verify_fun/src/ssl_verify_fingerprint.erl
-rw-rw-r-- 1 someone someone 7984 Dec 22 10:17 ./deps/ssl_verify_fun/src/ssl_verify_hostname.erl
someone@machine:~/code/elixir/web_scraper$
Output of the build-related commands:
- mix deps.get
$ mix deps.get
Resolving Hex dependencies...
Resolution completed in 0.043s
Unchanged:
certifi 2.12.0
hackney 1.20.1
httpoison 2.2.1
idna 6.1.1
metrics 1.0.1
mimerl 1.2.0
parse_trans 3.4.1
ssl_verify_fun 1.1.7
unicode_util_compat 0.7.0
All dependencies are up to date
- mix deps.compile
$ mix deps.compile
===> Analyzing applications...
===> Compiling parse_trans
===> Analyzing applications...
===> Compiling mimerl
===> Analyzing applications...
===> Compiling metrics
===> Analyzing applications...
===> Compiling unicode_util_compat
===> Analyzing applications...
===> Compiling idna
==> ssl_verify_fun
Compiling 7 files (.erl)
src/ssl_verify_pk.erl:14:14: can't find include lib "public_key/include/public_key.hrl"
% 14| -include_lib("public_key/include/public_key.hrl").
% | ^
src/ssl_verify_fun_cert_helpers.erl:13:14: can't find include lib "public_key/include/public_key.hrl"
% 13| -include_lib("public_key/include/public_key.hrl").
% | ^
src/ssl_verify_hostname.erl:16:14: can't find include lib "public_key/include/public_key.hrl"
% 16| -include_lib("public_key/include/public_key.hrl").
% | ^
src/ssl_verify_fingerprint.erl:15:14: can't find include lib "public_key/include/public_key.hrl"
% 15| -include_lib("public_key/include/public_key.hrl").
% | ^
src/ssl_verify_pk.erl:26:26: record 'OTPCertificate' undefined
% 26| -spec verify_fun(Cert :: #'OTPCertificate'{},
% | ^
src/ssl_verify_fun_cert_helpers.erl:23:34: undefined macro 'id-ce-subjectAltName'
% 23| AltSubject = select_extension(?'id-ce-subjectAltName', Extensions),
% | ^
src/ssl_verify_hostname.erl:28:26: record 'OTPCertificate' undefined
% 28| -spec verify_fun(Cert :: #'OTPCertificate'{},
% | ^
src/ssl_verify_fingerprint.erl:27:26: record 'OTPCertificate' undefined
% 27| -spec verify_fun(Cert :: #'OTPCertificate'{},
% | ^
src/ssl_verify_pk.erl:28:39: record 'Extension' undefined
% 28| {extension, #'Extension'{}}, InitialUserState :: term()) ->
% | ^
src/ssl_verify_fun_cert_helpers.erl:9:2: function extract_dns_names/1 undefined
% 9| -export([extract_dns_names/1,
% | ^
src/ssl_verify_hostname.erl:30:39: record 'Extension' undefined
% 30| {extension, #'Extension'{}} |
% | ^
src/ssl_verify_fingerprint.erl:29:39: record 'Extension' undefined
% 29| {extension, #'Extension'{}}, InitialUserState :: term()) ->
% | ^
src/ssl_verify_pk.erl:51:30: record 'OTPCertificate' undefined
% 51| -spec verify_cert_pk(Cert :: #'OTPCertificate'{}, Pk :: pk()) ->
% | ^
src/ssl_verify_fun_cert_helpers.erl:19:2: spec for undefined function extract_dns_names/1
% 19| -spec extract_dns_names(Cert :: #'OTPCertificate'{}) -> [] | [string()].
% | ^
src/ssl_verify_hostname.erl:48:36: record 'OTPCertificate' undefined
% 48| -spec verify_cert_hostname(Cert :: #'OTPCertificate'{}, Hostname :: hostname()) ->
% | ^
src/ssl_verify_fingerprint.erl:44:39: record 'OTPCertificate' undefined
% 44| -spec verify_cert_fingerprint(Cert :: #'OTPCertificate'{}, Fingerprint :: fingerprint()) ->
% | ^
src/ssl_verify_fun_cert_helpers.erl:19:33: record 'OTPCertificate' undefined
% 19| -spec extract_dns_names(Cert :: #'OTPCertificate'{}) -> [] | [string()].
% | ^
src/ssl_verify_fun_cert_helpers.erl:32:26: record 'OTPCertificate' undefined
% 32| -spec extract_cn(Cert :: #'OTPCertificate'{}) -> {error, no_common_name} | {ok, string()} | {error, invalid}.
% | ^
src/ssl_verify_hostname.erl:78:38: record 'OTPCertificate' undefined
% 78| Cert :: #'OTPCertificate'{},
% | ^
src/ssl_verify_fun_cert_helpers.erl:34:17: record 'OTPCertificate' undefined
% 34| TBSCert = Cert#'OTPCertificate'.tbsCertificate,
% | ^
src/ssl_verify_fun_cert_helpers.erl:35:32: record 'OTPTBSCertificate' undefined
% 35| {rdnSequence, List} = TBSCert#'OTPTBSCertificate'.subject,
% | ^
src/ssl_verify_fun_cert_helpers.erl:38:26: record 'OTPCertificate' undefined
% 38| -spec extract_pk(Cert :: #'OTPCertificate'{}) -> {error, no_common_name} | #'SubjectPublicKeyInfo'{}.
% | ^
src/ssl_verify_fun_cert_helpers.erl:38:76: record 'SubjectPublicKeyInfo' undefined
% 38| -spec extract_pk(Cert :: #'OTPCertificate'{}) -> {error, no_common_name} | #'SubjectPublicKeyInfo'{}.
% | ^
src/ssl_verify_fun_cert_helpers.erl:40:17: record 'OTPCertificate' undefined
% 40| TBSCert = Cert#'OTPCertificate'.tbsCertificate,
% | ^
src/ssl_verify_fun_cert_helpers.erl:41:26: record 'OTPTBSCertificate' undefined
% 41| PublicKeyInfo = TBSCert#'OTPTBSCertificate'.subjectPublicKeyInfo,
% | ^
src/ssl_verify_fun_cert_helpers.erl:42:16: record 'OTPSubjectPublicKeyInfo' undefined
% 42| PublicKeyInfo#'OTPSubjectPublicKeyInfo'.subjectPublicKey.
% | ^
src/ssl_verify_fun_cert_helpers.erl:48:24: record 'Extension' undefined
% 48| -spec extensions_list([#'Extension'{}] | asn1_NOVALUE) -> [] | [#'Extension'{}].
% | ^
src/ssl_verify_fun_cert_helpers.erl:48:65: record 'Extension' undefined
% 48| -spec extensions_list([#'Extension'{}] | asn1_NOVALUE) -> [] | [#'Extension'{}].
% | ^
src/ssl_verify_fun_cert_helpers.erl:55:39: record 'Extension' undefined
% 55| -spec select_extension(Id :: term(), [#'Extension'{}]) -> undefined | #'Extension'{}.
% | ^
src/ssl_verify_fun_cert_helpers.erl:55:71: record 'Extension' undefined
% 55| -spec select_extension(Id :: term(), [#'Extension'{}]) -> undefined | #'Extension'{}.
% | ^
src/ssl_verify_fun_cert_helpers.erl:57:28: record 'Extension' undefined
% 57| Matching = [Extension || #'Extension'{extnID = ExtId} = Extension <- Extensions, ExtId =:= Id],
% | ^
src/ssl_verify_fun_cert_helpers.erl:57:84: variable 'ExtId' is unbound
% 57| Matching = [Extension || #'Extension'{extnID = ExtId} = Extension <- Extensions, ExtId =:= Id],
% | ^
src/ssl_verify_fun_cert_helpers.erl:75:15: record 'AttributeTypeAndValue' undefined
% 75| extract_cn2([[#'AttributeTypeAndValue'{type={2, 5, 4, 3},
% | ^
src/ssl_verify_fun_cert_helpers.erl:77:39: variable 'CN' is unbound
% 77| ssl_verify_fun_encodings:get_string(CN);
% | ^
src/ssl_verify_fun_cert_helpers.erl:49:1: Warning: function extensions_list/1 is unused
% 49| extensions_list(E) ->
% | ^
src/ssl_verify_fun_cert_helpers.erl:56:1: Warning: function select_extension/2 is unused
% 56| select_extension(Id, Extensions) ->
% | ^
src/ssl_verify_fun_cert_helpers.erl:64:1: Warning: function extract_dns_names_from_alt_names/2 is unused
% 64| extract_dns_names_from_alt_names([ExtValue | Rest], Acc) ->
% | ^
could not compile dependency :ssl_verify_fun, "mix compile" failed. You can recompile this dependency with "mix deps.compile ssl_verify_fun", update it with "mix deps.update ssl_verify_fun" or clean it with "mix deps.clean ssl_verify_fun"
Trending in Questions
Other Trending Topics
Categories:
Sub Categories:
Forums
Popular Tags
- #ecto
- #liveview
- #troubleshooting
- #learning-elixir
- #library
- #deployment
- #erlang
- #testing
- #genserver
- #mix
- #absinthe
- #remote-other
- #otp
- #plug
- #how-to-question
- #macros
- #postgres
- #elixirconf
- #channels
- #exunit
- #discussion
- #code-sync
- #podcasts
- #javascript
- #onsite
- #dialyzer
- #docker
- #authentication
- #umbrella
- #full-time-contract
- #podcasts-by-brainlid
- #ecto-query
- #elixirconf-us
- #ai
- #blog-post
- #elixir-ls
- #phoenix_html
- #iex
- #graphql
- #genstage
- #websockets
- #supervisor
- #advent-of-code
- #distillery
- #processes
- #api
- #forms
- #metaprogramming
- #hex
- #security










Showing Posts 1 to 6- Show Best Posts
- Show All (oldest first)
- Show All (newest first)
dimitarvp
Did you do
brew install openssl@1(oropenssl@3?)D4no0
How are you installing OTP and elixir, I would strongly recommend to use a tool like asdf. When first time installing OTP, make sure you have the required local libraries installed, otherwise you might lack functionality required by libraries.
eye_contact
No, I’m not on mac.
eye_contact
I had used
apt install elixir. I since took your recommendation, removed elixir and then installed it viaasdf. Thanks for the nudge to use a version manager.Now, my version is:
Though I am still hitting the same dependency issue. Running
mix deps.getdoesn’t throw any errors, butcompilestill does. I’ve tried to usedeps.updateand evenmix deps.compile ssl_verify_fun(with and without--forceflag), but I end up in the same sort of situation:Snippet of a clean --all followed by the compile:
Edit: I also added
flokito my mix.exs deps for this time around:dimitarvp
Another thing: use more modern Erlang. Try with the latest 26.
D4no0
When installing any version of OTP, check the console logs for any warnings. You either are missing some critical dependency or it is misconfigured.