Sven Joachim wrote:
> On 2009-08-07 17:39 +0200, Luk Claes wrote:
> 
>> Sven Joachim wrote:
>>> Here is a scenario in which I could reproduce this bug.  In a Lenny
>>> chroot, I installed mksh and ran "dpkg-reconfigure mksh" to let it point
>>> at /bin/sh.  Upgrading to Squeeze, I confirmed the question to let dash
>>> provide /bin/sh.  This brought up another debconf screen:
>>>
>>>
>>>  ┌─────────────────────────────────────┤ Configuring mksh 
>>> ├──────────────────────────────────────┐
>>>  │                                                                          
>>>                      │
>>>  │ Cannot install mksh as /bin/sh!                                          
>>>                      │
>>>  │                                                                          
>>>                      │
>>>  │ Because dash has already been configured to be installed as /bin/sh, 
>>> mksh cannot be           │
>>>  │ installed as /bin/sh. Use "dpkg-reconfigure dash" to change dash to not 
>>> install as /bin/sh,   │
>>>  │ then "dpkg-reconfigure mksh" to install mksh there.                      
>>>                      │
>>>  │                                                                          
>>>                      │
>>>  │                                            <Ok>                          
>>>                      │
>>>  │                                                                          
>>>                      │
>>>  
>>> └───────────────────────────────────────────────────────────────────────────────────────────────┘
>>>
>>> Unpacking dash failed then:
>>>
>>> ,----
>>> | Unpacking dash (from .../dash_0.5.5.1-2.3_i386.deb) ...
>>> | dpkg: error processing /var/cache/apt/archives/dash_0.5.5.1-2.3_i386.deb 
>>> (--unpack)
>>> |  trying to overwrite `/usr/share/man/man1/sh.1.gz', which is also in 
>>> package bash
>>> `----
>> Because mksh apparently does not divert the manpage...
> 
> It does:
> 
> ,----
> | # LANG=C dpkg -S man1/sh.1
> | diversion by mksh from: /usr/share/man/man1/sh.1.gz
> | diversion by mksh to: /usr/share/man/man1/sh.distrib.1.gz
> | bash: /usr/share/man/man1/sh.1.gz
> `----
> 
>>> And /bin/sh still pointed at mksh.  The only way to resolve this was to
>>> "dpkg-reconfigure mksh" again to let it _not_ provide /bin/sh, after
>>> which the upgrade succeeded.
>> The postinst did not even run because the unpack failed...
> 
> True.
> 
>>> I haven't analyzed this in detail, but I suppose this situation will
>>> occur whenever /bin/sh is diverted and points to something else than
>>> dash.
>> It's something fishy with the manpage, apparently it did not run the
>> preinst of dash next to mksh not diverting the manpage or something like
>> that?
> 
> I suppose dash's preinst ran, because dpkg tried to unpack dash after
> all...

dash's preinst guarantees that there is a diversion so that the unpack
always succeeds...

Cheers

Luk



-- 
To UNSUBSCRIBE, email to [email protected]
with a subject of "unsubscribe". Trouble? Contact [email protected]

Reply via email to