Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

bug: asdf creates shim for command (ffmpeg) installed/managed via homebrew #1604

Open
cobyism opened this issue Jul 22, 2023 · 2 comments
Open
Labels

Comments

@cobyism
Copy link

cobyism commented Jul 22, 2023

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

  1. Install ffmpeg via homebrew: brew install ffmpeg
  2. Have asdf installed.
  3. Run ffmpeg.
  4. 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 like ffmpeg 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

@cobyism cobyism added the bug label Jul 22, 2023
@cobyism
Copy link
Author

cobyism commented Jul 22, 2023

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.

@Stratus3D
Copy link
Member

Hi @cobyism , sorry for the extremely late reply here. I think your assumptions here are correct. This certainly shouldn't be happening. In the past when I've observed it occurring it was because a tool that was installed (say Python) had a package installed that provided a command identical to a popular tool (in this case ffmeg). It's not clear to me why that is the case.

Can you run asdf which ffmpeg? It should reveal which plugin is providing ffmpeg.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

2 participants