On May 10, 2016, at 6:30 AM, Elan Ruusamäe wrote:

> On 10.05.2016 09:12, Jeffrey Johnson wrote:
>>> Fixed in lirc-0.9.3a-2 / man-pages-4.05-2.
>>> >
>> Is file conflict detection an RPM misfeature?
> no. it's packaging mistake (two packages installing same file path)
> 

Of course it is a packaging mistake: I have fixed dozens of file conflcts
from duplicate man pages

The question was about detecting and failing an rpm upgrade
when there is duplicate content. EVen when content is identical,
there is a timestamp in some compression formats (yes there is an
option to remove the timestamp), and/or the buildtime on the file can/will 
differ.

There are alternative automated resolutions other than human intervention
to rebuild the package that might be attempted.

>> It would not be impossibly hard to resolve a file conflict automatically,
>> perhaps with an alternatives-like symlink farm analogue mechanism
>> to permit multiple copies to coexist.
> there's no alternatives, two packages should not provide same file.
> 

Alternatives (fundamentally) is just a symlink to a unique file path. RPM
could easily install the file on a unique path and install a symlink, and
even add the configuration so that alternatives(8) (literally) could be
used to resolve the file conflict on the machine being installed.

All of the above has to do with automating (at least temporarily) the
install instead of just failing.

> lirc one was the outdated one, according to commits made.
> 

There are other relatively simple automations:
        1) FIFO - first version is installed, all other file versions are 
skipped.
        2) LIFO - last version clobbers all other file versions.
        3) largest - the bigger file is installed
        4) newest - the newest modify time is installed
        5) masked - a file conflict automated resolution is read from 
configuration.
The majority of manual file conflict resolutions are one of the above.

There's also a means to detect file conflicts at buildtime and fail the build,
not the install later, if rpmbuild attempts to maintain a collection of all 
current
headers in a database, and checks for file conflicts at the end of successful 
builds.

73 de Jeff
> -- 
> glen
> 
> _______________________________________________
> pld-devel-en mailing list
> pld-devel-en@lists.pld-linux.org
> http://lists.pld-linux.org/mailman/listinfo/pld-devel-en

_______________________________________________
pld-devel-en mailing list
pld-devel-en@lists.pld-linux.org
http://lists.pld-linux.org/mailman/listinfo/pld-devel-en

Reply via email to