[maemo-developers] Busybox version

From: Eero Tamminen eero.tamminen at nokia.com
Date: Thu Aug 14 19:10:50 EEST 2008
Hi,

So far this is mostly just an idea, if you notice any holes in it,
please shoot...

ext Graham Cobb wrote:
>> I think better solution would be to provide the Busybox symlinks in
>> separate packages and the packages would be split so that they
>> correspond to packages in Debian.  For example the Busybox symlinks
>> for utilities that in Debian are in the "coreutils" package would be
>> e.g. in "busybox-symlinks-coreutils" package.
 >
> Let me see if I understand how this could work.  Let's take a few examples: ls 
> (part of coreutils in Debian), tar (its own package in Debian), pinky (part 
> of coreutils in Debian but not included in maemo), xyzzy (a fictitious 
> command that may be included in busybox in the future).
> 
> ITOS would ship with a package called busybox-maemo which 
> installed /bin/busybox.

It would be called just busybox.

Note that the main issue that I though this would fix is being able to
install the real tools without screwing up the system.  (Personally
I'm missing real tools from procps; proper top & ps, slabtop etc).


> ITOS would also ship with busybox-symlinks-coreutils which depends on 
> busybox-maemo and links everything in the normal debain coreutils (including 
> pinky) to /bin/busybox.  Note that at this point ls would work and pinky 
> would appear to exist but would not actually work.

How I thought this would work is that:
- the symlinks package would contain symlinks *only* to utilities
   included into the busybox binary[1]
- the dependency from symlinks package to busybox would be versioned
   (exact version to guarantee that the list of included tools and their
   symlinks would match)

[1] As the symlinks point to valid executable (busybox), it would
     be really bad to have them for utilities that the linked busybox
     binary doesn't provide.  That would screw up all scripts that check
     for the existance of the tools they need


> ITOS also ships with busybox-symlinks-tar which links tar to /bin/busybox.

And Provides/Replaces/Conflicts with tar package.


> Then the community creates a busybox-maemo-plus which has more options and 
> more commands (including, say pinky and xyzzy).  It 
> Provides/Replaces/Conflicts busybox-maemo and installs /bin/busybox.  
> Anything which needs pinky can depend on busybox-maemo-plus.

If you want to replace busybox, then also all the symlink packages
would be removed because of the versioned dependency. The community
Busybox would need to provide correct symlinks packages too.

Maemo busybox replacement case isn't improved with this proposal,
but I don't think this is really an issue that would need solving.


> The community also create busybox-symlinks-xyzzy which depends on 
> busybox-maemo-plus and which links /usr/bin/xyzzy to /bin/busybox.

If you want to:
- replace a utility that's already provided by maemo busybox
   (e.g. because it doesn't have fixes or new features that are
   in newer busybox version)
- install a utility that is not provided by maemo busybox, but belongs
   *in Debian* to a package that one of the symlinks packages claims
   to provide

Then you would build a version of busybox that includes also all
the other utilities linked by the symlinks package(s) you're going
to replace.

Hopefully there won't be that many of these additional busyboxes. :-)


> And the community creates GNU tar.  It Provides/Replaces/Conflicts 
> busybox-symlinks-tar and installs tar.  Anything which needs gnu tar can 
> depend on tar and anything which doesn't care which tar it needs can depend 
> on busybox-symlinks-tar (which GNU tar still provides).

Busybox utilities should be good enough replacements that in most
cases its utilities work well enough and issues are exceptions.
If something in Busybox doesn't work well enough for majority of
the cases, either it should be fixed or replaced with the real
thing^{tm}.

So, the rare exceptions needing real GNU tar would depend on tar and
conflict with busybox-symlinks-tar (if it's know that the problem
is fixed in a newer busybox version, it could conflict with version
smaller than the fixed upstream busybox version).

All other packages needing just some tar, depend just on tar.


> That could work but ONLY if Nokia allow busybox-maemo and busybox-symlinks-tar 
> to be replaced (and this works even through OS upgrades).  That seems 
> unlikely to me.

That would be a configuration that Nokia hasn't tested, so I don't see
how we could support it in the consumer sense.  As to "allowing" the
replacement AFAIK only thing needed before replacing any of the
pre-installed packages is that you remove the "lock" meta-package?

I'm not really familiar with how the OS upgrades work though, so
please correct me if I'm wrong and somebody else needs to answer
(or test :-)) what happens when trying to OS upgrade a system that
has been unlocked and where some of the system packages have been
replaced.


> Have I missed something in how this could work?

Did I miss something? :-)


	- Eero

More information about the maemo-developers mailing list