[Toybox] Toybox Installer/setup routine?
scsijon
scsijon at lamiaworks.com.au
Mon Sep 2 16:33:04 PDT 2019
sed was an example I gave, not a direct command.
On 03/09/19 07:58, Rob Landley wrote:
> On 9/1/19 8:47 PM, Denys Nykula wrote:
>>> Which is where we come back to the question, what and how are others
>>> dealing with this problem and is there a need for a simple and basic
>>> installer inside toybox?
>>
>> In gentoo I have this /etc/portage/bashrc hook symlink toybox to every
>> command missing or linked to nowhere, after package install or removal:
>>
>> if test "$EBUILD_PHASE" = postinst || test "$EBUILD_PHASE" = postrm; then
>> for i in `toybox`; do
>> toybox which $i 2>&1 >/dev/null || toybox ln -fsv toybox /bin/$i
>> done
>> which awk 2>&1 >/dev/null || ln -fsv nawk /bin/awk
>> which vi 2>&1 >/dev/null || ln -fsv vim /bin/vi
>> fi
>
> Those last two are on the todo list. But after toysh and route, which mkroot
> needs. (And vi might be after make, and promoting half the stuff currently in
> pending.)
Sorry, but I like vi, it was the first 'editor' I learn't to use on a
mainframe back in the early years, a lot better and easier than ed was,
and you did have to be carefull what you did back then as you were
working on a 'live' system. And it's pretty much the same format and
commands to use across any operating system linux/unix/cpm/os2/etc...,
even dos and windows origonally had it.
>
>> Since I symlink `/sbin` to `bin` and `/usr` to `.`,
>
> I go the other way with /usr (symlink the top level bin/sbin/lib into usr)
> because I don't want more debris (include, local, share...) at the top level.
>
I've seen and used these systems, but sorry I prefer to keep some
separation, the only ones we usually use are related to /usr/X11n to
/usr, /usr/lib64 to /usr/lib and the various icons directories, most
others can be fixed with a configure switch.
>> I don't have to deal
>> with paths. When I need some replacements from busybox:
>>
>> for i in head ifconfig route sed; do ln -fsv busybox /bin/$i; done
>
> What do you need head, ifconfig or sed for? (What is the toybox version missing
> and/or getting wrong?)
not necessary wrong, just not what's wanted in the instance, maybe it's
the format or it's providing too much information to parse with and
therefor taking unnecessary processor cycles to process or causing extra
cleanup cycles, thus taking up visable time.
>
>> # Use... And restore toybox:
>> find /bin -lname busybox -print -delete
>> EBUILD_PHASE=postrm . /etc/portage/bashrc
>>
>> You can't link sed-BB to busybox because busybox guesses it's sed by
>> name match.
>
I did say it was an example, the change is changing busybox's sed link
to sed-BB and it works still, trying a sed-BB --version gives a busybox
answer (and doing it the wrong way gives an applet missing error), while
with toybox installed the command sed --version should give a toybox
answer and sed-FULL --version gives a sed command answer.
> When toybox can't find a command I made it dereference one level of symlink to
> get a new name to try. (And then if that name is "toybox", barf.)
>
Not sure I like this, if I understand you correctly, so, with toybox
installed, I couldn't create a sed-TOY with a link to toybox, and expect
toybox's version of sed to work, it doesn't do a internal partial-name
lookup? If so, sorry, but it's a little user unfriendly.
>> I don't manually touch standalone binaries, letting Portage
>> write them over symlinks when installing a build dependency, and after
>> their auto removal the above hook returns Toybox.
>
> As long as it doesn't dereference the symlink and stomp the binary at its end.
> (The bzip2 installer used to do that to busybox. THAT was a fun one to debug.
> And this is why the "install" command has different defaults than the "cp"
> command. :)
>
> Rob
>
scsijon
More information about the Toybox
mailing list