-
Notifications
You must be signed in to change notification settings - Fork 209
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
Missing executables when installing Ansible via pixi global #1017
Comments
The |
@pavelzw do you think it would be possible for the ansible feedstock to re-expose the entrypoints? This way we could avoid extra user input for this use-case? |
I don't think so... If the ansible-feedstock created these binaries as well, we go into #379 very quickly. The ansible-core feedstock provides the binaries while the ansible feedstock provides all modules that ansible uses. |
Hmm, too bad, hoped it would be possible to forward entry-points. We definitely need a solution for this, but not sure what is the most user friendly one. As needing to specify the |
I think I am envisioning that we add "more than one" package explicitly in the global install for ansible, e.g.
Would create an environment where both executables are exposed in the global bin folder - very similar to the In cases like ansible it would be nice if we could somehow figure this out automatically (maybe with some added metadata in the packages or so?). |
@wolfv That would be great! One example I can give is a situation I encountered with Jupyter lab: When installed globally, it is not possible to add any Jupyter plugins as this requires A command like |
This would result in the jupyter-pip being on your global |
I do intend to have Jupyter in my PATH for ease of use, however I agree that having |
Closing in favor of #342 |
Just piping up here with an example I just hit. I installed
I believe this is due to the fact that requirements:
run:
- {{ pin_subpackage('kubernetes-client', exact=True) }}
- {{ pin_subpackage('kubernetes-node', exact=True) }}
- {{ pin_subpackage('kubernetes-server', exact=True) }} # [unix] I can easily workaround it by installing the sub-packages individually, but it was initially surprising until I found this issue. Footnotes |
Hmm, maybe there is a way to detect this case @dhirschfeld. We could check if the package you install does not contain any binaries, and then expose all binaries of the direct dependencies. |
I guess you'd want to check if it's a metapackage, then expose the binaries of the direct dependencies. I'm not sure how easy it is to check if a package is a metapackage or not though. There might be a number of packages which don't have an entry-point but which depend on packages which do. Perhaps if |
Yeah, it could work @dhirschfeld - on the other hand it would still fail for the ansible usecase mentioned in the original issue (apparently that does contain one executable). |
Maybe "refuse the temptation to guess" and allow the user to specify the behaviour with a CLI flag. Maybe I guess that's ~similar to what you suggest above (with the addition of the CLI flag). |
We're playing around with a global "manifest" file that would allow to add multiple packages into a "global env" and also to expose multiple binaries from multiple packages. This configuration would work, for example: envs:
ansible:
dependencies:
ansible:
ansible-core: The PR is ongoing here: #1655 |
The new |
Checks
I have checked that this issue has not already been reported.
I have confirmed this bug exists on the latest version of pixi, using
pixi --version
.Reproducible example
Output:
Command 'ansible-playbook' not found, but can be installed with: sudo apt install ansible
Issue description
Pixi places only
ansible-community
executable into~/.pixi/bin
. Other executables located in~/.pixi/envs/ansible/bin
such asansible
,ansible-playbook
oransible-inventory
are not added to$PATH
.Expected behavior
All Ansible related executables should be added to $PATH.
The text was updated successfully, but these errors were encountered: