Annotation of embedaddon/libiconv/doc/relocatable.texi, revision 1.1

1.1     ! misho       1: @node Enabling Relocatability
        !             2: @section Enabling Relocatability
        !             3: 
        !             4: It has been a pain for many users of GNU packages for a long time that
        !             5: packages are not relocatable.  It means a user cannot copy a program,
        !             6: installed by another user on the same machine, to his home directory,
        !             7: and have it work correctly (including i18n).  So many users need to go
        !             8: through @code{configure; make; make install} with all its
        !             9: dependencies, options, and hurdles.
        !            10: 
        !            11: Red Hat, Debian, and similar package systems solve the ``ease of
        !            12: installation'' problem, but they hardwire path names, usually to
        !            13: @file{/usr} or @file{/usr/local}.  This means that users need root
        !            14: privileges to install a binary package, and prevents installing two
        !            15: different versions of the same binary package.
        !            16: 
        !            17: A relocatable program can be moved or copied to a different location
        !            18: on the filesystem.  It is possible to make symlinks to the installed
        !            19: and moved programs, and invoke them through the symlink. It is
        !            20: possible to do the same thing with a hard link @emph{only} if the hard
        !            21: link file is in the same directory as the real program.
        !            22: 
        !            23: To configure a program to be relocatable, add
        !            24: @option{--enable-relocatable} to the @command{configure} command line.
        !            25: 
        !            26: On some OSes the executables remember the location of shared libraries
        !            27: and prefer them over any other search path.  Therefore, such an
        !            28: executable will look for its shared libraries first in the original
        !            29: installation directory and only then in the current installation
        !            30: directory.  Thus, for reliability, it is best to also give a
        !            31: @option{--prefix} option pointing to a directory that does not exist
        !            32: now and which never will be created, e.g.@:
        !            33: @option{--prefix=/nonexistent}.  You may use
        !            34: @code{DESTDIR=@var{dest-dir}} on the @command{make} command line to
        !            35: avoid installing into that directory.
        !            36: 
        !            37: We do not recommend using a prefix writable by unprivileged users
        !            38: (e.g.@: @file{/tmp/inst$$}) because such a directory can be recreated
        !            39: by an unprivileged user after the original directory has been removed.
        !            40: We also do not recommend prefixes that might be behind an automounter
        !            41: (e.g.@: @file{$HOME/inst$$}) because of the performance impact of
        !            42: directory searching.
        !            43: 
        !            44: Here's a sample installation run that takes into account all these
        !            45: recommendations:
        !            46: 
        !            47: @example
        !            48: ./configure --enable-relocatable --prefix=/nonexistent
        !            49: make
        !            50: make install DESTDIR=/tmp/inst$$
        !            51: @end example
        !            52: 
        !            53: Installation with @option{--enable-relocatable} will not work for
        !            54: setuid or setgid executables, because such executables search only
        !            55: system library paths for security reasons.  Also, installation with
        !            56: @option{--enable-relocatable} might not work on OpenBSD, when the
        !            57: package contains shared libraries and libtool versions 1.5.xx are used.
        !            58: 
        !            59: The runtime penalty and size penalty are negligible on GNU/Linux (just
        !            60: one system call more when an executable is launched), and small on
        !            61: other systems (the wrapper program just sets an environment variable
        !            62: and executes the real program).

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>