-
Notifications
You must be signed in to change notification settings - Fork 904
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
Nexus has deprecated some NuGet v2 optimizations that Chocolatey CLI uses #3506
Comments
I can confirm this issue. We are also running in to problems to install software with Nexus as a repository, since we updated to the new version of the repository. chocolatey cli version: 2.3.0 the workaroud metioned above is working
A fix for the chocolatey cli would be awesome. |
Chocolatey CLI is not 'broken', so there is nothing to fix. Nexus deprecated some features that Chocolatey CLI used. Disabling package optimizations works around the changes made. |
Recently ported my Nexus from 3.70.3 with an OrientDB, to an H2 DB, then the "latest" docker image. |
Is there any information on whether a new release of Chocolatey is planned that no longer relies on the deprecated parts of the NuGet v2 API? We are facing issues with our Nexus repository, which follows Microsoft's guidance on this matter. More information can be found in this link. According to Sonatype's documentation: The supported subset of the legacy NuGet v2 protocol in H2 and PostgreSQL environments is the same as that supported by Microsoft's NuGet Gallery, nuget.org. Use cases that rely on deprecated parts of the NuGet v2 API are not supported, including many common Chocolatey use cases and some custom OData queries. It seems likely that more NuGet repositories will adopt this approach, making the reliance on deprecated API parts increasingly problematic. While the workaround choco feature disable --name='usePackageRepositoryOptimizations' can mitigate the issue, it’s not ideal as it requires specific client-side settings. Would it be possible to get an update on this? |
Chocolatey CLI version 2.0.0 introduced NuGet v3 API support 18 months ago. Can you be more specific?
To be fair, it requires a single command to be run to disable the feature. If you are a Chocolatey for Business user you can make that change through a single Deployment Step. Open-source users can add the command to the method they used for deployment.
To be very clear, Chocolatey CLI does not rely on NuGet v2. It supports it. It will happily work with NuGet v3. Chocolatey CLI will continue to support NuGet v2 for some time as many community members and customers still rely on it, despite repository managers removing support. |
Issue SummaryWhen using a Nexus-hosted repository as a NuGet source, it should serve packages via either v2 or v3 protocols, depending on the URL configuration. However, inconsistencies are observed when performing different operations ( Steps to Reproduce
Observed Behavior
|
@pauby thanks in advance, Martijn. |
Do the dependencies have a version number declared? If they do not, then this is a bug in Nexus that we identified and which they are aware of. Unfortunately, I can't point you to any public facing issue, as Sonatype no longer has that facility. You can look at the requests going back and forth between Chocolatey CLI and Nexus (use something like Fiddler). You will see Nexus not returning the dependency chain when no version number is present. |
NuGet v3 support for Chocolatey CLI was added in version 2.x, released last year. That's a small blip in the lifespan of the product (which was original released in 2011). So it is going to take time for the guides to be updated, blog posts written, etc.
This is simply because of historical reasons and nothing more. There is a plan in place to add v3 support to the Chocolatey Community Repository. As there are no plans to remove NuGet v2 support from Chocolatey CLI, and the Chocolatey Community Repository supports Chocolatey CLI, there is no rush on this.
Chocolatey CLI doesn't phone home, so we have no data that I can point to that tells me how widely used NuGet v3 repositories are. I can tell you that we have customers who are using it. How many, how widely and in what way I don't have information on. |
@pauby thank you for the response. Regarding the dependencies, no I am not declaring version numbers at the moment. Since there is in fact no version dependency within my dependency chain this would be undesirable. Turn on optimizations for reducing bandwidth with repository queries during package install/upgrade/outdated operations. Should generally be left enabled, unless a repository needs to support older methods of query. When disabled, this makes queries similar to the way they were done in Chocolatey v0.10.11 and before. Could you elaborate on this? What is exactly changed in the behavior when having it Disabled v/s Enabled? thanks again, Martijn. |
That is one of the purposes of this issue. But to be clear, this is a bug in Sonatype Nexus with a fix / workaround and I want to be careful that we are not simply documenting issues in, and providing support for, a third-party product. There is a balance to be struck for open-source products.
Disabling the feature will likely see an increase in the number of queries being made to the Sonatype Nexus repository to gather the same information. I say likely as every environment is unique. |
@pauby can you point to a github issue or ticketnr inside Sonatype about this issue. So we can ask there for more information. I have a issue open there for this issue so I can point to this. |
Unfortunately not. Sonatype removed public access to their bug tracker. |
Sonatype does have a public issue tracker for Nexus here: https://github.com/sonatype/nexus-public/issues |
Sonatype had an internal bug tracker that had public read access. My understanding is that it still exists but public access for non-customers was removed. I was aware the GitHub repository existed for open-source. My understanding may be outdated and perhaps they exclusively use GitHub now. |
NOTE: This issue is a work in progress and will be updated as we have additional information and experiences from customers and community members.
In version 3.71.0 of Sonatype Nexus Repository, Sonatype deprecated some NuGet v2 optimizations that Chocolatey CLI uses:
As part of the deprecation, Nexus still advertises that it supports NuGet v2 search for it's NuGet v3 repository, which Chocolatey CLI will fall back to using and tries to optimize. This may lead to issues.
Sonatype Nexus Repository NuGet v3 Search Issues
If you are having issues during search of a NuGet v3 repository in Sonatype Nexus Repository, please disable
usePackageRepositoryOptimizations
by runningchoco feature disable --name='usePackageRepositoryOptimizations'
. This will stop Chocolatey CLI from optimizing queries to the NuGet v2 search endpoint, but may lead to more queries being made and therefore longer search times.Further Help
See the Sonatype Nexus Repository documentation:
Customer Support
If you are a customer with Support and Maintenance, and require further help, please reach out to the Chocolatey Support team. You will find the options available to you by running
choco support
from the command line.Community Support
If you are using the open-source edition of Chocolatey CLI, please reach out on our Community Hub.
Related Issues and Discussions
The text was updated successfully, but these errors were encountered: