--- Urlader/README 2012/01/08 09:12:52 1.3
+++ Urlader/README 2012/02/06 22:09:40 1.4
@@ -262,6 +262,54 @@
, but
looking at them can lead to premature blindless.
+ Shared Libraries
+ It is often desirable to package shared libraries - for example the
+ Deliantra client packages SD>, Berkely DB, Pango and amny other
+ libraries that are unlikely to be available on the target system.
+
+ This usually requires some fiddling (see below), and additionally
+ some environment variables to be set.
+
+ For example, on ELF systems you usually want LD_LIBRARY_PATH=. and
+ on OS X, you want DYLD_LIBRARY_PATH=. (these are effectively the
+ default on windows).
+
+ These can most easily be specified when building the packfile:
+
+ urlader-util ... LD_LIBRARY_PATH=. ./perl run
+
+ Portability: RPATH
+ Often perl is linked against a shared libperl.so - and might be so
+ using an rpath. Perl extensikns likewise might use an rpath, which
+ means the binary will mostly ignore LD_LIBRARY_PATH, which leads to
+ trouble.
+
+ There is an utility called chrpath, whose -d option can remove the
+ rpath from binaries, shared library and shared objects.
+
+ Portability: OS X DLL HELL
+ OS X has the most severe form of DLL hell I have seen - if you link
+ against system libraries, which is practically unavoidable, you get
+ libraries of well-known names (e.g. libjpeg) that have nothing to do
+ with what you normally expect libjpeg to be, and there is no way to
+ get your version of libjpeg into your program.
+
+ Moreover, even if apple ships well-known libraries (e.g. libiconv),
+ they often ship patched versions which have a different ABI or even
+ API then the real releases.
+
+ The only way aorund this I found was to change all library names in
+ my releases (libjpeg.dylib becomes libdeliantra-jpeg.dylin and so
+ on), by patching the paths in the share dlibraries and shared
+ objects. install-name-tool (with -id and -change) works in many
+ cases, but often paths are embedded indirectly, so you might have to
+ use a *dirty* string replacement.
+
+SECURITY CONSIDERATIONS
+ The urlader executable itself does not support setuig/setgid operation,
+ or running with elevated privileges - it does no input sanitisation, and
+ is trivially exploitable.
+
AUTHOR
Marc Lehmann
http://home.schmorp.de/