DESTDIR 和 PREFIX 的 make

新手上路,请多包涵

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

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

我对这三个的功能感到困惑。他们实现了相同的目标吗?

原文由 Sean 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1k
2 个回答

./configure --prefix=***

数字 1 决定了软件包在安装时的去向,以及在运行时查找相关文件的位置。如果您只是编译某些东西以在单个主机上使用,那么您应该使用它。


make install DESTDIR=***

数字 2 用于安装到一个临时目录,该目录不是运行包的位置。例如,这在构建 deb 包时使用。构建包的人实际上并没有将所有东西都安装到他自己系统上的最终位置。他可能已经安装了不同的版本并且不想打扰它,或者他甚至可能不是 root。所以他用

./configure --prefix=/usr

所以程序在运行时预计会安装在 /usr 中,然后

make install DESTDIR=debian/tmp

实际创建目录结构。


make install prefix=***

3 号 将把它安装到不同的地方,但不会像 DESTDIR=/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 中安装二进制文件。

原文由 Alan Curry 发布,翻译遵循 CC BY-SA 4.0 许可协议

这可以帮助说明 DESTDIR--prefix 的使用(从 这里):

使用 –prefix 和 DESTDIR 进行多次安装:

在配置时为每个构建指定不同的 –prefix 位置/选项。例如:

 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

原文由 sancho.s ReinstateMonicaCellio 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏