Annotation of embedaddon/libiconv/doc/relocatable.texi, revision 1.1.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>