[pacman-dev] [PATCH] libalpm: Fix installing update of a replaced package

Allan McRae allan at archlinux.org
Sun Mar 3 15:41:20 EST 2013


On 04/03/13 06:42, Andrew Gregory wrote:
> On 03/04/13 at 06:29am, Allan McRae wrote:
>> On 04/03/13 06:26, Andrew Gregory wrote:
>>> On 03/04/13 at 05:45am, Allan McRae wrote:
>>>> On 04/03/13 05:43, Allan McRae wrote:
>>>>> On 01/03/13 04:06, Olivier Brunel wrote:
>>>>>> During a sysupgrade, if a package is replaced by another, and an update for the
>>>>>> former package is found (on another repo) the replaced package would be
>>>>>> re-installed.
>>>>>>
>>>>>> Signed-off-by: Olivier Brunel <i.am.jack.mail at gmail.com>
>>>>>> ---
>>>>>> I'm not really familiar with inner workings of ALPM, so this is probably not the
>>>>>> best way to do this.
>>>>>>
>>> <snip>
>>>>>> diff --git a/test/pacman/tests/sync1104.py b/test/pacman/tests/sync1104.py
>>>>>> new file mode 100644
>>>>>> index 0000000..5cec98a
>>>>>> --- /dev/null
>>>>>> +++ b/test/pacman/tests/sync1104.py
>>>>>> @@ -0,0 +1,18 @@
>>>>>> +self.description = "Don't update (reinstall) a replaced package"
>>>>>> +
>>>>>> +lp = pmpkg("old", "1-1")
>>>>>> +self.addpkg2db("local", lp)
>>>>>> +
>>>>>> +p1 = pmpkg("new")
>>>>>> +p1.provides = ["old"]
>>>>>> +p1.replaces = ["old"]
>>>>>> +self.addpkg2db("sync1", p1)
>>>>>> +
>>>>>> +p2 = pmpkg("old", "1-2")
>>>>>> +self.addpkg2db("sync2", p2)
>>>>>> +
>>>>>> +self.args = "-Su"
>>>>>> +
>>>>>> +self.addrule("PACMAN_RETCODE=0")
>>>>>> +self.addrule("!PKG_EXIST=old")
>>>>>> +self.addrule("PKG_EXIST=new")
>>>>>>
>>>>>
>>>>
>>>> Forgot to add - awesome for adding a pactest here!
>>>
>>> Is the test case correct though?  Other than the fact that this one uses two
>>> sync repos, this looks identical to sync132 which has the opposite result.
>>>
>>
>> Hrm...  I'd say that sync132 is wrong...
>>
>> If pkg1 replaces pkg2, I'd expect pkg1 to replace pkg2 whether or not
>> pkg2 has an update.
>>
>> Allan
>>
>> Allan
>>
>>
> 
> I would actually come out the other way.  Where a replacement is
> *unversioned* like in this test I would expect an updated package to
> override it.  Otherwise it would try to replace the other package on
> every update even though it's still in a repo.  Test replace102 (it
> would be awesome if we could get some kind of consistent naming scheme
> going for these tests) handles the situation where you have
> a versioned replace for a package still in a repo (python 2->3
> upgrade).

Huh?

Once a package is replaced, it is gone - no need to replace it again...

At the moment, with pkg1 replacing pkg2 (installed) and an update to pkg2.

pacman -Su
(update pkg2)
pacman -Su
(replace pkg2)

I think it should be

pacman -Su
(replace pkg2)
done...

Allan




More information about the pacman-dev mailing list