-
Notifications
You must be signed in to change notification settings - Fork 100
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
cChoco doesn't support Chocolatey's -m (multiple versions) parameter #65
Comments
Example packages that would require this option: |
Does this not work when you pass |
I'll test this. I believe the issue I was having was that it keys off the "Name" aka package name as needing to be unique, so just supplying different parameters to each instance still rolled up to one overall package name that it didn't like. |
This is still an issue. The running command stopped because the preference variable "ErrorActionPreference" or common parameter is set to Stop: A conflict was detected between resources '[cChocoPackageInstaller]installMSBuildTools2013 (::47::9::cChocoPackageInstaller)' and '[cChocoPackageInstaller]installMSBuildTools2015u3 (::55::9::cChocoPackageInstaller)' in node 'BuildAgent'. Resources have identical key properties but there are differences in the following non-key properties: 'Version'. Values '12.0.21005.20140416' don't match values '14.0.25420.1'. Please update these property values so that they are identical in both cases. |
Thinking out loud - I wonder if the other config mgmt tools allow for this. My guess is they do not do so well in this department either. |
This is clearly the wrong place for this discussion, but I'm not sure where it belongs, Google groups? I think it may be wise to discourage use of the This also seems to be the technique used by other packaging systems, with the default depending on the latest or most used. e.g. from Ubuntu: I've been thinking about this quite a bit recently. Some examples of packages that can be sensibly installed side-by-side but currently require
Here are some of the issues:
|
This is a big reason here.
This sounds like a possible bug? I mean they know (or at least have the info).
Yes and yes. |
I'm unsure of how to proceed with this one as I can't see how it can be done in DSC when the We dont encourage the use of SxS installs either so I'm inclined to close this with Won't Fix. However, I'll leave it open for a while yet to gather feedback (and I do appreciate this is a very old issue). |
The However, a second resource could have this schema:
in other words, use the tuple (id, version) as the DSC resource key (composite). The version specification would be mandatory (due to being part of the resource key) and the resource would automatically pass |
Personally, however, I no longer have a practical need to perform sxs installations, because last year I redesigned the .NET SDK packages family I mentioned in my earlier post and, at present, each .NET SDK "feature band" (the "smallest unit" devs need to install side by side with others) has its own package id. And that is, I believe, the proper way to fix this issue - work with package maintainers and encourage them to provide separate ids for software versions which can and usually are installed independently (such as different PostgreSQL major releases). |
Completely agree with this statement. SxS installations can be problematic, is only used by a handful of orgs (based on nothing more than comments I see in Chocolatey and here) and is difficult to troubleshoot. If we provide the functionality here, then we would have to support that. |
However, having written the above, I thought about it some more and came up with a legitimate SxS scenario. This involves a certain kind of software, which usually updates in-place (newer versions overwrite the existing installation), but can also have multiple versions installed side-by-side if the user desires so. The example would again be the .NET Runtime, where by default newer major.minor.patch releases replace the existing major.minor.older-patch installation (e.g. 5.0.7 replaces 5.0.6, but does not affect 3.1.*), but this behavior can be suppressed by a switch and one can have several major.minor.? versions installed at once (e.g. 5.0.4, 5.0.6, 5.0.7). The usage scenario here is on developer workstations and build servers, when companies wish to control the exact version of the .NET Runtime their applications are compiled against and bundled with (in self-contained deployment mode, when the runtime binaries are included in the compiled application package). Therefore, in a build server DSC config one might want to install multiple versions of the dotnet-5.0-runtime package. (Not my scenario at the moment, because right now in my company we do not exercise such precise control over the runtime versions our software is compiled against - we always use the latest patch - but it could possibly change in the future if regulatory requirements force us to have fully repeatable builds, for example.) |
As Chocolatey CLI will remove support for side-by-side installations in version 2.0.0, I'm going to go ahead and close this. |
I need to install a few versions (previous and current) of a couple packages on a server and currently since it is the same package name and name is the primary key being used this fails when DSC goes to compile. It seems like maybe it should be possible to specify a list of versions in the Version: key and if a list or more than 1 element is detected then automatically pass the
-m
to chocolatey.The text was updated successfully, but these errors were encountered: