bug: asdf creates shim for command (ffmpeg) installed/managed via homebrew
cobyism opened this issue · 2 comments
Describe the Bug
I have ffmpeg installed on my machine via homebrew. My use of ffmpeg is unlikely to ever require multiple versions on my machine, so I do not use the asdf plugin for ffmpeg, nor do I want to—the version from brew
is fine.
Unfortunately, asdf creates a shim for the ffmpeg
command, which results in the following output:
$ ffmpeg
No preset version installed for command ffmpeg
Please install a version by running one of the following:
asdf install python 3.11.2
or add one of the following versions in your config file at /Users/cobyism/.tool-versions
python miniconda3-latest
This causes other commands and processes expecting ffmpeg
to be present to fail.
This is frustrating and surprising because ffmpeg is correctly installed on my machine via homebrew:
$ ls -l /opt/homebrew/bin/ffmpeg
lrwxr-xr-x 31 cobyism 16 Jun 14:26 /opt/homebrew/bin/ffmpeg -> ../Cellar/ffmpeg/6.0/bin/ffmpeg
$ /opt/homebrew/bin/ffmpeg -version
ffmpeg version 6.0 Copyright (c) 2000-2023 the FFmpeg developers
built with Apple clang version 14.0.3 (clang-1403.0.22.14.1)
configuration: …
I would like things I manage with asdf to be completely disjoint from things I do not manage with asdf. How can I ensure this is the case? Is there a way for me to tell asdf
to completely ignore unrelated commands/concerns, or to skip/opt-out of shims for certain things?
Beyond this specific issue of a shim being created for ffmpeg
, this raises a further question in my mind: why did asdf begin to care at all about an unrelated command/package? What else on my system might asdf be hijacking or creating shims for in a way I’m not aware of? Sure, I can inspect the shims directory myself, but… I’d really like to not have to do that.
When taken together with asdf somehow inserting itself into a git filter-branch
command I opened an issue for recently (#1588), there seems to be a theme here of asdf being involved in surprising ways with system-level commands I most definitely don’t want associated with asdf in any way.
Steps to Reproduce
- Install ffmpeg via homebrew:
brew install ffmpeg
- Have asdf installed.
- Run
ffmpeg
. - Behold.
Expected Behaviour
- I expect
asdf
to manage concerns relating to the asdf plugins I have installed. - I expect expect
asdf
to not interfere with commands, binaries, aliases, or anything else that isn’t explicitly related to the version of a tool from a plugin. This includes commands likeffmpeg
which I have choosen to install via homebrew.
Actual Behaviour
- asdf creates a shim for
ffmpeg
, despite this being entirely unrelated to the toolchains I manage with asdf.
Environment
OS:
Darwin [REDACTED] 23.0.0 Darwin Kernel Version 23.0.0: Fri Jun 30 17:48:57 PDT 2023; root:xnu-10002.0.168.505.3~1/RELEASE_ARM64_T8112 arm64
SHELL:
zsh 5.9 (x86_64-apple-darwin23.0)
BASH VERSION:
3.2.57(1)-release
ASDF VERSION:
v0.12.0
ASDF INTERNAL VARIABLES:
ASDF_DEFAULT_TOOL_VERSIONS_FILENAME=.tool-versions
ASDF_DATA_DIR=/Users/cobyism/.asdf
ASDF_DIR=/opt/homebrew/opt/asdf/libexec
ASDF_CONFIG_FILE=/Users/cobyism/.asdfrc
ASDF INSTALLED PLUGINS:
clojure
direnv
golang
haskell
nodejs
python
ruby
asdf plugins affected (if relevant)
No response
From #928:
We get a number of bug reports around the error No preset version installed for command message.
There’s obviously many possible reasons for this as a recurring theme in issues when dealing with a system that relies on shims, and I’m not nearly familiar enough with the underlying mechanics of asdf to comment. From these two issues I’ve run into though (this one and #1588), it really does just seem surprising/odd (at least to me) that asdf is involved at all in non-plugin related commands like git/ffmpeg/etc. If I were to uninstall asdf completely, those commands I have installed outside of asdf would all Just Work™ as expected. On the surface, this all feels like an opportunity to lean into the principle of least surprise.