There are a few bugs in the package management system. Here are a couple that I've come across and quick fixed:
I have partitioned the internal HD on my 3100 into 5 partitions, the 2 extra partitions being ext3 and a 256MB swap.
Originally I had the ext3 partition mounted at /mnt/hdd, but the package manager stubbornly refuses to let me install apps there, even though I had added it to /etc/ipkg.conf. I have since found that for some reason the (gui) package manager doesn't seem to read (or use that file), furthermore changes that I make to /etc/ipkg.conf gets overwritten (ie restored to "factory defaults") by the package manager. Anyway in order to install to my ext3 partition I had to use /mnt/hd as the mount point.
So now I was able to install stuff to the HD, but when I looked at the installation log I saw that after each package installed there was an error saying "couldn't find <PACKAGE> on /mnt/hd". After reading around, I learnt that after installing to "external storage", links must be made in the internal filesystem so the programs will be referenced correctly. This linking business is performed by /usr/bin/ipkg-link.
So for the 1st bug, in ipkg-link, the paths for the possible "external storage" locations are hardcoded into the "findpackage()" function, ie it does not read them from /etc/ipkg.conf. My quick and dirty fix was hijack one of the hardcoded locations and modify it to /mnt/hd. That fixed the installation problems.
The 2nd bug is found in the uninstallation of programs. Again the program that deals with this /usr/bin/ipkg-uninstall has the possible "external storage" locations hardcoded. BTW the code in this is much neater than that of ipkg-link. The quick fix is to add /mnt/hd into the PREFIXES.
The real fix for both these problems is to have them read the config from /etc/ipkg.conf, but I'll leave that as an exercise for the reader
-- cheers