Packaging is definitely a problem and a solution.
I'm a big fan of the FreeBSD ports and packages method as mentioned above.
While it's a pretty good answer to the problem of keeping thousands of packages up to date and handling the installation of commercial software for Linux on *BSD -- it's not perfect and there are people looking to improve it.
I'd also like to see a package format and tools compatible with the commercial Solaris packages so software from commercial vendors can run under Linux and *BSD as well (since binary compatibility is possible within the same architecture).
Imagine a modified BSD ports makefile system that would make packages that could be installed by a Solaris-compatible pkgadd utility. We could also load Solaris compatibility packages with it.