I upgraded the excellent asdf
version manager using Homebrew and ran into a snag when trying to perform mix
commands.
I encounterd the error /Users/jbrayton/.asdf/shims/mix: line 13: /usr/local/Cellar/asdf/0.10.2/libexec/bin/asdf: No such file or directory
.
The key to notice here is the path /usr/local/Cellar/asdf/0.10.2/
when the newest version is 0.11.0
, as there is clearly a mismatch.
I restarted my terminal and shell, but the problem persisted. I noticed all the files in ~/.asdf/shims
had the line exec /usr/local/Cellar/asdf/0.10.2/libexec/bin/asdf exec "odbcserver" "$@" # asdf_allow: ' asdf '
.
This line is not what we wanted and indicates the problem.
After looking at the pinned https://github.com/asdf-vm/asdf/issues/785 and then following that to https://github.com/asdf-vm/asdf/issues/1393, the solution rm -rf ~/.asdf/shims; asdf reshim
fixes my problem.
Now, whenever I examine one of the shim files, I see the line exec /usr/local/opt/asdf/libexec/bin/asdf exec "mix" "$@" # asdf_allow: ' asdf '
as expected.
The directory /usr/local/opt
is what I see when I run the command brew --prefix asdf
as the prefix is no longer /usr/local/Cellar/asdf/0.10.2/
or the Cellar location.
This corrective measure should be a more permanent solution moving forward as the prefix /usr/local/opt
should no longer change in the future.
This issue was also somewhat of a perfect storm as Phoenix 1.7 rc.1 dropped two days ago and I had just upgraded a bunch of homebrew packages, including asdf
.