diff options
author | Bruno Haible <bruno@clisp.org> | 2007-10-03 12:13:20 +0000 |
---|---|---|
committer | Bruno Haible <bruno@clisp.org> | 2009-06-23 12:15:08 +0200 |
commit | 7bb6293f74bd53f7cee4f671b71ae6c0cc911415 (patch) | |
tree | aa6e683b9c2082f03ec27a3f1977d1fd6512114b /INSTALL | |
parent | 95cf740a0124a453a17c5b86938c56c5f10415e3 (diff) | |
download | external_gettext-7bb6293f74bd53f7cee4f671b71ae6c0cc911415.zip external_gettext-7bb6293f74bd53f7cee4f671b71ae6c0cc911415.tar.gz external_gettext-7bb6293f74bd53f7cee4f671b71ae6c0cc911415.tar.bz2 |
Update section about relocatable installation.
Diffstat (limited to 'INSTALL')
-rw-r--r-- | INSTALL | 91 |
1 files changed, 59 insertions, 32 deletions
@@ -106,38 +106,65 @@ you can set and what kinds of files go in them. with an extra prefix or suffix on their names by giving `configure' the option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'. -Relocatable Installation -======================== - - By default, `make install' will install a package with hardwired -file names, and the package will not work correctly when copied or -moved to a different location in the filesystem. - - Some packages pay attention to the `--enable-relocatable' option to -`configure'. This option makes the entire installed package -relocatable. This means, it can be moved or copied to a different -location on the filesystem. It is possible to make symlinks to the -installed and moved programs, and invoke them through the symlink. It -is possible to do the same thing with a hard link _only_ if the hard -linked file is in the same directory as the real program. - - For reliability it is best to give together with --enable-relocatable -a `--prefix' option pointing to an otherwise unused (and never used -again) directory, for example, `--prefix=/tmp/inst$$'. This is -recommended because on some OSes the executables remember the location -of shared libraries (and prefer them over LD_LIBRARY_PATH !), therefore -such an executable will look for its shared libraries first in the -original installation directory and only then in the current -installation directory. - - Installation with `--enable-relocatable' will not work for setuid / -setgid executables. (This is because such an executable kills its -LD_LIBRARY_PATH variable when it is launched.) - - The runtime penalty and size penalty are nearly zero on Linux 2.2 or -newer (just one system call more when an executable is launched), and -small on other systems (the wrapper program just sets an environment -variable and execs the real program). +Enabling Relocatability +======================= + + It has been a pain for many users of GNU packages for a long time +that packages are not relocatable. It means a user cannot copy a +program, installed by another user on the same machine, to his home +directory, and have it work correctly (including i18n). So many users +need to go through `configure; make; make install' with all its +dependencies, options, and hurdles. + + Red Hat, Debian, and similar package systems solve the "ease of +installation" problem, but they hardwire path names, usually to `/usr' +or `/usr/local'. This means that users need root privileges to install +a binary package, and prevents installing two different versions of the +same binary package. + + A relocatable program can be moved or copied to a different location +on the filesystem. It is possible to make symlinks to the installed +and moved programs, and invoke them through the symlink. It is possible +to do the same thing with a hard link _only_ if the hard link file is +in the same directory as the real program. + + To configure a program to be relocatable, add `--enable-relocatable' +to the `configure' command line. + + On some OSes the executables remember the location of shared +libraries and prefer them over any other search path. Therefore, such +an executable will look for its shared libraries first in the original +installation directory and only then in the current installation +directory. Thus, for reliability, it is best to also give a `--prefix' +option pointing to a directory that does not exist now and which never +will be created, e.g. `--prefix=/nonexistent'. You may use +`DESTDIR=DEST-DIR' on the `make' command line to avoid installing into +that directory. + + We do not recommend using a prefix writable by unprivileged users +(e.g. `/tmp/inst$$') because such a directory can be recreated by an +unprivileged user after the original directory has been removed. We +also do not recommend prefixes that might be behind an automounter +(e.g. `$HOME/inst$$') because of the performance impact of directory +searching. + + Here's a sample installation run that takes into account all these +recommendations: + + ./configure --enable-relocatable --prefix=/nonexistent + make + make install DESTDIR=/tmp/inst$$ + + Installation with `--enable-relocatable' will not work for setuid or +setgid executables, because such executables search only system library +paths for security reasons. Also, installation with +`--enable-relocatable' might not work on OpenBSD, when the package +contains shared libraries and libtool versions 1.5.xx are used. + + The runtime penalty and size penalty are negligible on GNU/Linux +(just one system call more when an executable is launched), and small on +other systems (the wrapper program just sets an environment variable +and executes the real program). Optional Features ================= |