On Mon, Mar 26, 2012 at 12:02:28PM +0100, Richard Purdie wrote: > On Mon, 2012-03-26 at 11:26 +0200, Martin Jansa wrote: > > On Sat, Mar 24, 2012 at 08:46:47PM +0100, Andreas Oberritter wrote: > > > Commit 68dc2a3fa30c03a196d650de34d0c657a7b85454 broke opkg upgrade: > > > > > > | update-alternatives: Error: cannot register alternative watch to > > > | /usr/bin/watch since it is already registered to /bin/watch > > > > > > Signed-off-by: Andreas Oberritter > > > --- > > > * Martin, can you please verify whether this really helps? I've built a > > > rootfs with both busybox watch and procps installed. I didn't actually > > > do an opkg upgrade. > > > > Maybe it does for 2nd and later upgrades, but for some reason I now get > > the same error from busybox upgrade too, probably because old u-a for > > watch is removed only in busybox's prerm and not during upgrade. > > > > SHR root@Nokia-N900 / $ ll /usr/bin/watch* > > lrwxrwxrwx 1 root root 17 Mar 26 09:13 /usr/bin/watch -> > > ../../bin/busybox > > -r-xr-xr-x 1 root root 9508 Mar 26 08:48 /usr/bin/watch.procps > > SHR root@Nokia-N900 / $ ls -l /bin/watch > > lrwxrwxrwx 1 root root 7 Mar 23 16:06 /bin/watch -> busybox > > > > SHR root@Nokia-N900 / $ cat /etc/busybox.links | grep watch > > /usr/bin/watch > > SHR root@Nokia-N900 / $ cat /var/lib/opkg/alternatives/watch > > /bin/watch > > busybox 50 > > > > And also busybox is upgraded after procps so even with old alternative > > removed it would take 2 opkg upgrades to get it sorted.. but that's > > quite common issue :/. e.g. u-a for runlevel causes many postinst issues > > because update-rc.d assumes that runlevel is available during upgrade, > > but if sysvinit (as runlevel provider) is configured after e.g. dbus you > > get: > > > > Configuring dbus-1. > > Cannot create link over existing -/etc/resolv.conf-. > > /usr/sbin/update-rc.d: line 173: runlevel: not found > > Unable to determine current runlevel > > ... > > Configuring busybox-syslog. > > update-alternatives: Linking //etc/init.d/syslog to syslog.busybox > > update-alternatives: Linking //etc/syslog-startup.conf to syslog-startup.conf.busybox > > /usr/sbin/update-rc.d: line 173: runlevel: not found > > Unable to determine current runlevel > > ... > > Configuring busybox-udhcpc. > > /usr/sbin/update-rc.d: line 173: runlevel: not found > > Unable to determine current runlevel > > ... > > Configuring sysvinit. > > update-alternatives: Linking //bin/mountpoint to mountpoint.sysvinit > > update-alternatives: Linking //sbin/halt to halt.sysvinit > > update-alternatives: Linking //sbin/reboot to reboot.sysvinit > > update-alternatives: Linking //sbin/runlevel to runlevel.sysvinit > > update-alternatives: Linking //sbin/shutdown to shutdown.sysvinit > > update-alternatives: Linking //sbin/poweroff to poweroff.sysvinit > > update-alternatives: Linking //usr/bin/last to last.sysvinit > > update-alternatives: Linking //usr/bin/mesg to mesg.sysvinit > > update-alternatives: Linking //usr/bin/wall to wall.sysvinit > > update-alternatives: Linking //sbin/init to /sbin/init.sysvinit > > > > And dbus-1. busybox-syslog. busybox-udhcpc. postinsts are fine on 2nd run. > > > > So this patch looks good, but there are still issues with u-a calls in postinst. > > I'll merge the patch but we should probably open a bug about these u-a yes please it improves situation for people with reflashed image.. other need just rm /var/lib/opkg/alternatives/watch to fix upgrade path > issues so we can properly fix it at some point. Fixing this issue will be a bit problematic, because for busybox when you use -force-reinstall it can remove some required commands you need to install it after it's removed. So e.g. you need standalone wget and sed to be able to use opkg install -force-reinstall, but -force-reinstall also doesn't resolve this watch issue completely, because after first upgrade there is new /usr/bin/watch path in /etc/busybox.links so prerm also doesn't remove stalled /bin/watch alternative :/. Cheers, -- Martin 'JaMa' Jansa jabber: Martin.Jansa@gmail.com