[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: [i386] - busybox conflicts whit sysv-rc - long msg



On Thu, 2008-07-31 at 10:21 -0300, Herbert P Fortes Neto wrote:
> Hi,
> > > Busybox for example. What is in emdebian-control.patch:
> > > 
> > > -Conflicts: busybox-static
> > > +Conflicts: busybox-static, sysv-rc, coreutils

Reasons:
1. sysv-rc contains update-rc.d which is a perl script.
2. sysv-rc replaces any shell version of update-rc.d put into place by
the emdebian-rootfs scripts (albeit that this script, until v. recently
was a simple:
#!/bin/sh
exit 0;
You could do worse than implement this to replace the perl version (and
make it executable).
3. This is a bug in emdebian-rootfs (even in 1.4.2) - not all the suite
scripts have been updated to remove sysv-rc. 

I've filed the bug, awaiting the number.

> > > 
> > >  I changed Conflicts field to have sysv-rc.
> Why? The scripts in sysv-rc are perl and busybox doesn't support
> > runlevels so you don't need all the rc[0-9].d directories.
> >
>  What is in busybox.old/debian/control file
> 
> Package: busybox
> Architecture: any
> Depends: ${shlibs:Depends}
> Conflicts: busybox-static
> Replaces: busybox-static

Which is the Debian config that relies on having perl, coreutils and a
configuration for busybox that prevents you using it as the main shell
of the installation and only supports local testing. That config simply
will not work for Emdebian - the busybox with that config will not allow
you to boot or login.

> :/# dpkg -l | grep busy
> ii  busybox                   1:1.10.2-1em2.1         Tiny utilities for small and embedded system
> cliente:/# dpkg -l | grep sysv
> ii  sysv-rc                   2.86.ds1-60em1.1        System-V-like runlevel change mechanism

The right option here is to remove sysv-rc and replace update-rc.d. The
solution is never to select sysv-rc in the first place.

This has changed during development and the current suite scripts in
emdebian-rootfs were updated a long time ago. (Well, long time is
relative - things can change quickly around here.)
:-)

Unfortunately, I didn't update all the suite scripts, only the Gtk and
GPE ones. Sorry about that.

> Conflicts: busybox-static, coreutils, sysv-rc
> Description: Tiny utilities for small and embedded systems
> 
> The following packages have unmet dependencies:
>   busybox: Conflicts: sysv-rc but 2.86.ds1-60em1.1 is to be installed
> E: Unmet dependencies. Try 'apt-get -f install' with no packages (or specify a s
> olution).
> 
> :/# apt-get -f install
> Reading package lists... Done
> Building dependency tree... Done
> Correcting dependencies... Done
> The following packages will be REMOVED:
>   sysv-rc
> 0 upgraded, 0 newly installed, 1 to remove and 0 not upgraded.
> After this operation, 258kB disk space will be freed.
> Do you want to continue [Y/n]? 

> Can not write log, openpty() failed (/dev/pts not mounted?)
> (Reading database ... 3245 files and directories currently installed.)
> Removing sysv-rc ...
> cliente:/# 
> 
> :/# apt-get install dropbear
> Reading package lists... Done
> Building dependency tree       
> Reading state information... Done
> Suggested packages:
>   openssh-client runit
> The following NEW packages will be installed:
>   dropbear
> 0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
> Need to get 213kB of archives.
> After this operation, 541kB of additional disk space will be used.
> WARNING: The following packages cannot be authenticated!
>   dropbear
> Install these packages without verification [y/N]? y
> Get:1 http://192.168.1.3 unstable/main dropbear 0.51-1 [213kB]
> Fetched 213kB in 0s (3737kB/s)  
> Can not write log, openpty() failed (/dev/pts not mounted?)
> dpkg: `update-rc.d' not found on PATH.          <<< here the problem

Yes, and it has only just been solved - with thanks to Phil Hands here
at DebConf. However, /dev/pts should have been mounted too - your config
needs some adaptation (/etc/inittab?).

Which version of emdebian-tools do you have installed? I'll be releasing
1.4.3 to Emdebian unstable fairly soon. You should be using 1.4.2.

Don't be afraid to create updated emsandbox tarballs and reinstall -
until Emdebian is in a state to be released, there will remain the need
to refresh many installations.

> :/# apt-get install sysv-rc 

That won't fix the problem. The update-rc.d in sysv-rc is a perl script
and would simply fail to run - it is no better than not having an
update-rc.d in the first place.

I'm hoping to get these changes into Lenny but the empty script
workaround does work as long as sysv-rc is never installed (which is
what the Conflicts: in busybox was intended to achieve).

>    I had to do that to be possible to install other packages.

No, you did not need to put sysv-rc back - it only makes things worse.

> If I remove sysv-rc to solve conflict of busybox, no packages
> gets installed. I understand what you say about sysv-rc , but
> this is what happend and I do not have a 'because'.

Installing sysv-rc (despite the Conflicts:) took out the workaround that
already existed but as this was a workaround and the shell version was
put into the rootfilesystem pending a proper shell version (that Phil
and I have since written), the workaround was not part of a package and
therefore dpkg did not prevent sysv-rc overwriting it. Normally this
would not be a problem because svsv-rc Conflicts with busybox and that
should have been sufficient to prevent your situation. The new
update-rc.d is put in place by emsandbox (if one does not already exist
from another package), e.g. your machine:variant customisation package.
Depending on how well it works, I might add it to busybox or another
package. It's not sufficiently intelligent to be a shell replacement for
update-rc.d in Debian (it does almost no error checking) - making it
suitable for submission to Debian is left as an exercise for the reader.
:-(

>  What do I have to do to check this?

Never install sysv-rc again and don't worry about whether and how
update-rc.d runs or operates - just create a no-op that has executable
permissions and let other packages install. Until the latest changes get
into the emdebian-rootfs package, you will have to manage the symlinks
in /etc/rc.d/ manually (they were originally created within the root
filesystem by emsandbox but this method has been superceded by the
functional update-rc.d support currently being tested).

If you really want a functional update-rc.d, note that it has not been
fully tested and will only operate when packages are installed so old
links will not be updated. You can get the shell version from Emdebian
SVN (emdebian-tools/pbuilder).

-- 


Neil Williams
=============
http://www.data-freedom.org/
http://www.nosoftwarepatents.com/
http://www.linux.codehelp.co.uk/


Attachment: signature.asc
Description: This is a digitally signed message part


Reply to: