On 4/15/13 7:06 PM, Jens Rehsack wrote: > On 15.04.13 18:56, Michael G. Schwern wrote: >> TL;DR version... >> IMO we only need to clarify what "conflicts" means and what actions CPAN >> tools should take. >> >> We talked in the Consensus Dome about the need for and meaning of the >> "conflicts" relationship in the CPAN::Meta::Spec. >> https://metacpan.org/module/CPAN::Meta::Spec#Prereq-Spec >> >> IIRC the conclusion was... >> * We need it. >> * It's not clear what it means. (I don't recall what the confusion was) > > The difference between "A conflicts with B op VER" and "A breaks B op > VER" and "A superflous B".
IIRC those meant... "A conflict B" is A and B cannot be on the machine at the same time. For example, they're both http servers and need the same port. I can't think of an example where CPAN has needed that for modules. "A breaks B" is if A is installed B will break. This is what we need on CPAN for things like Test::Builder breaks Test::Class < 0.39. "A superfluous B" is if A is installed B is no longer necessary. Usually called "obsoletes". This is mostly useful if you rename a package, though I'd rather that was made more explicit in the meta data. Most of the use cases I can think of are better handled by the installed modules database and CPAN distribution meta data. >> * Let's see what Debian does. > > Or MacPorts, HomeBrew or pkgsrc :P Whatever packaging system I may actually use, I go to Debian first because they extensively document this sort of thing, both the meanings and the rationales. Let's have a look at what the others do... MacPorts has a conflicts tag, but I can't find the docs. The only mention of conflicts I can find in the MacPorts manual is "variant X conflicts Y" but there's no explanation what that means. https://www.macports.org/guide/chunked/reference.variants.html It's not mentioned in the dependencies section. https://www.macports.org/guide/chunked/reference.dependencies.html pkgsrc has CONFLICTS=Some-Name-[0-9]* essentially a regex. http://www.netbsd.org/docs/pkgsrc/fixes.html#conflicts All they say is the "package may conflict with other packages a user might already have installed on his system" Homebrew has an undocumented "conflicts_with". https://github.com/mxcl/homebrew/blob/master/Library/Homebrew/formula.rb rpm has "Conflicts" and "BuildConflicts" which is only defined as "where one package conflicts with a capability provided by another" which isn't very useful. rpm also has "Obsoletes" "where one package obsoletes capabilities provided by another, usually used when a package changes name and the new package obsoletes the old name". https://docs.fedoraproject.org/en-US/Fedora_Draft_Documentation/0.1/html/RPM_Guide/ch-advanced-packaging.html It doesn't shine much new light on the issue except that package management systems agree, you need a conflict tag.