DESTDIR and PREFIX of make

陌路散爱 提交于 2019-11-28 14:58:29
Alan Curry

./configure --prefix=***

Number 1 determines where the package will go when it is installed, and where it will look for its associated files when it is run. It's what you should use if you're just compiling something for use on a single host.


make install DESTDIR=***

Number 2 is for installing to a temporary directory which is not where the package will be run from. For example this is used when building deb packages. The person building the package doesn't actually install everything into its final place on his own system. He may have a different version installed already and not want to disturb it, or he may not even be root. So he uses

./configure --prefix=/usr

so the program will expect to be installed in /usr when it runs, then

make install DESTDIR=debian/tmp

to actually create the directory structure.


make install prefix=***

Number 3 is going to install it to a different place but not create all the directories as DESTDIR=/foo/bar/baz would. It's commonly used with GNU stow via

./configure --prefix=/usr/local && make && sudo make install prefix=/usr/local/stow/foo

, which would install binaries in /usr/local/stow/foo/bin. By comparison,

make install DESTDIR=/usr/local/stow/foo

would install binaries in /usr/local/stow/foo/usr/local/bin.

This can help illustrating the use of DESTDIR and --prefix (from here):

Multiple installs using --prefix and DESTDIR:

Sepcify a different --prefix location/option for each build - at configure time. For eg:

untar petsc tar ball
./configure --prefix=/opt/petsc/petsc-3.9.0-mpich --with-mpi-dir=/opt/mpich
make
make install DESTDIR=/tmp/petsc-pkg
untar petsc tar ball
./configure --prefix=/opt/petsc/petsc-3.9.0-openmpi --with-mpi-dir=/opt/openmpi
make
make install DESTDIR=/tmp/petsc-pkg

From openssl/INSTALL

Package builders who want to configure the library for standard locations, but have the package installed somewhere else so that it can easily be packaged, can use

$ make INSTALL_PREFIX=/tmp/package-root install

(or specify "--install_prefix=/tmp/package-root" as a configure option). The specified prefix will be prepended to all installation target filenames.

This is non-standard but INSTALL_PREFIX is used in some other programs.

This works for OpenSSL versions before 1.1.x. OpenSSL 1.1.x and later are able to recognize usual DESTDIR.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!