DESTDIR和PREFIX的

我正在尝试将软件安装到特定的目录。 我find了几种方法,但不知道它们之间有什么区别。

  1. ./configure --prefix=***
  2. make install --prefix=***
  3. make install DESTDIR=***
  4. make install prefix=***

我对这三者的function感到困惑。 他们是否达到了相同的目标?

就我所知, 数字2只是一个错误。

编号1确定软件包安装的位置,以及在运行时将查找关联文件的位置。 这是你应该使用,如果你只是编译东西在一个单一的主机上使用。

编号3用于安装到临时目录,该目录不在运行包的位置。 例如,在构builddeb包时使用。 构build软件包的人实际上并没有把所有东西都安装到自己系统的最后一个地方。 他可能已经安装了一个不同的版本,不想打扰它,或者甚至可能不是根。 所以他使用configure --prefix=/usr所以程序会在运行时安装在/usr ,然后make install DESTDIR=debian/tmp来实际创build目录结构。

4号将安装到不同的地方,但不创buildDESTDIR=/foo/bar/baz所有的目录。 它通常用于GNU stow,通过./configure --prefix=/usr/local && make && sudo make install prefix=/usr/local/stow/foo ,这会在/usr/local/stow/foo/bin安装二进制文件。
make install DESTDIR=/usr/local/stow/foo ,比较而言,会在/usr/local/stow/foo/usr/local/bin安装二进制文件。
这可能是第2号实际上应该是。