On Sun, 2008-02-03 at 15:30 +0100, Christopher Friedt wrote:
> Hi everyone,
> 
> Are there any pointers for a light(er) weight package manager for 
> embedded devices with <= 16 MB of flash storage ?
> 
> I've grown accustomed to using emerge to build binary packages for all 
> of my boards. Up until now we've just blasted the binary packages onto 
> our boards in the shop, but we're turning towards updates on live 
> systems in the field.
> 
> Paludis has struck my interest but I'm just not sure what the runtime 
> requirements are, and how well it deals with normal gentoo binary tbz2's 
> (and their metadata). I think that libstdc++.so is a bit too big for our 
> boards, so any options with C++ dependencies are likely out the door.
> 
> Having python on our boards is not really an option either, and 
> therefore the factory 'emerge' also won't work (or will it??).
> 
> Does anyone have any suggestions? I'm sure that some of you have dealt 
> with the same problem before.

Having has the same need myself I wrote in c a util called qmerge.
qmerge is apart of portage-utils. portage-utils provides applets much in
the same way as busybox does that can be disabled at compile time.
qmerge only deals with gentoo based binary.tbz2 files. 

# Setup basic embedded ROOT...

uClibc shm  # mkdir ROOT; cd ROOT ; mkdir proc root sys dev
uClibc ROOT # \
  INSTALL_MASK="*.a /bin/bb /usr/lib/*.o /usr/include" \
  ROOT=$PWD/ \
  emerge -KOq uclibc busybox portage-utils

uClibc ROOT # tar -xf /usr/share/busybox/busybox-links.tar
uClibc ROOT # rm -rf usr/share/busybox
uClibc ROOT # du -hcs . 
2.2M    .
uClibc ROOT # mkdir usr/portage/packages/ var/tmp/portage/portage
uClibc ROOT # cp /etc/resolv.conf  etc/
uClibc ROOT # mount -obind /proc/ proc/ ; mount -obind /sys/ sys/ ;
mount -obind /dev/ dev/

uClibc ROOT # chroot . /bin/sh --login

# Inside of the chroot or on an embedded device with networking.
/ # export QMERGE=1
/ # qmerge -KOq dropbear
MD5:  [OK] 4176096ccf8680d595de20514e65d928 net-misc/dropbear-0.50

/ # dbclient 
dbclient: can't load library 'libz.so.1'
/ # qmerge -K zlib
Connecting to tinderbox.dev.gentoo.org (140.211.166.181:80)
zlib-1.2.3-r1.tbz2   100% |
***************************************************************************************************************************************************|
   139k --:--:-- ETA
MD5:  [OK] 5db12eac15c6910c179e4be1fd7bf030 sys-libs/zlib-1.2.3-r1
=== sys-libs/zlib-1.2.3-r1
+++ sys-libs/zlib-1.2.3-r1 == sys-libs/zlib-1.2.3-r1
>>> //lib/libz.so.1.2.3
>>> //usr/lib/libz.so
>>> //usr/lib/libz.a
>>> //usr/include/zconf.h
>>> //usr/include/zlib.h
>>> //var/db/pkg/sys-libs/zlib-1.2.3-r1


# opps looks like we never set up a make.conf and made sure to set an
INSTALL_MASK=..

/ # dbclient 
Dropbear client v0.50
Usage: dbclient [options] [EMAIL PROTECTED] [command]
Options are:
-p <remoteport>
-l <username>
-t    Allocate a pty
-T    Don't allocate a pty
-N    Don't run a remote command
-f    Run in background after auth
-y    Always accept remote host key if unknown
-i <identityfile>   (multiple allowed)
-L <listenport:remotehost:remoteport> Local port forwarding
-g    Allow remote hosts to connect to forwarded ports
-R <listenport:remotehost:remoteport> Remote port forwarding
-W <receive_window_buffer> (default 24576, larger may be faster, max
1MB)
-K <keepalive>  (0 is never, default 0)



# well there we go.. One portage gentoo pkg built on a remote host and
installed on the local one that we did not have to alter server side in
any way..


/ # qsize portage-utils
app-portage/portage-utils-0.1.29: 17 files, 2 non-files, 163.667 KB


###########
Few notes.. These can be mounted by the embedded device as a tmpfs.
$ROOT/usr/portage/packages/ var/tmp/portage. You can/should delete the
contents in there on embedded devices.

1) Never make/allow qmerge to touch the libc
2) Never make/allow qmerge to touch the *busybox*/bin/sh..

Final note.. It's still an applet in development. If you find a bug in
it. I'd much would rather have a patch that fixes it up vs a bugzilla
entry telling me whats wrong with it. Good luck.



-- 
[email protected] mailing list

Reply via email to