FS#50875 - pacman removes twice the same conflicting/to-be-replaced package

Attached to Project: Pacman
Opened by Christos Nouskas (nous) - Thursday, 22 September 2016, 20:51 GMT
Last edited by Andrew Gregory (andrewgregory) - Tuesday, 25 December 2018, 18:12 GMT
Task Type Bug Report
Category General
Status Closed
Assigned To Andrew Gregory (andrewgregory)
Architecture x86_64
Severity Medium
Priority Normal
Reported Version 5.0.1
Due in Version 5.1.2
Due Date Undecided
Percent Complete 100%
Votes 0
Private No

Details

This report is about AUR packages hosted in unofficial user repos.

There's dbus-openrc-1.10.10-5 installed, which on -Syu is to be replaced by dbus-openrc-20160917-2. The latter replaces/conflicts with the former and depends on dbus-nosystemd (1.10.10-4). For the sake of clarity, dbus-openrc-1.10.10 is both dbus-nosystemd + dbus-openrc initscript.

Pacman asks whether to replace dbus-openrc with openrc-eudev/dbus-openrc and informs of the following:

:: Replace dbus-openrc with openrc-eudev/dbus-openrc? [Y/n]
resolving dependencies...
looking for conflicting packages...

Packages (3) dbus-nosystemd-1.10.10-4 dbus-openrc-20160917-2 dbus-openrc-1.10.10-5 [removal]

:: Processing package changes...
(1/1) removing dbus-openrc [---------] 100%
(1/2) installing dbus-nosystemd [---------] 100%
error: could not remove database entry dbus-openrc-1.10.10-5
error: could not remove entry 'dbus-openrc' from cache
(2/2) upgrading dbus-openrc [---------] 100%

Running pacman with --debug, I see:

1. dbus-openrc-1.10.10-5 being removed
2. dbus-nosystemd being installed
3. dbus-openrc-20160917 being upgraded, but only after dbus-openrc-1.10.10-5 is removed again (debug: removing old package first)

Step 3 removes all dbus-nosystemd's files common to dbus-openrc-1.10.10. However, if I upgrade with just 'pacman -S dbus-openrc', the operation completes successfully because the installation order is changed and dbus-nosystemd is installed second, after the old dbus-openrc is removed. Please, see the attached debug log (a shorter version for easier reading also included).

I know this is a rare case (and in unofficial repos at that), but shouldn't pacman keep a record of removed packages until the upgrade operation is finished and not remove the same package again later?
This task depends upon

Closed by  Andrew Gregory (andrewgregory)
Tuesday, 25 December 2018, 18:12 GMT
Reason for closing:  Fixed
Additional comments about closing:  v5.1.2
Comment by Doug Newgard (Scimmia) - Thursday, 22 September 2016, 23:30 GMT
You're replacing dbus-openrc with dbus-openrc? Does that make any sense at all?
Comment by Allan McRae (Allan) - Thursday, 22 September 2016, 23:41 GMT
I guess the simple fix is to filter stupid replaces...
Comment by Christos Nouskas (nous) - Friday, 23 September 2016, 21:35 GMT
The versioned replaces() was introduced at an earlier time, when 1.x.y was needed in order to update over previously timestamped versioning and, well, was forgotten there. Updated package with removed replaces() works as expected; thanks for assigning.

Loading...