构建系统中的 DESTDIR 与前缀选项?



有人可以解释一下构建系统中$(DESTDIR)变量的用途吗? 我的意思是我知道它指向当前安装的软件包的临时目录,但我无法想象它的实际用途是什么。

澄清一下,好吧,我知道--prefix选项是什么,例如,如果我们像./configure --prefix="/usr"这样的 buldsystem 指向所有包的文件都将属于/usr,例如/usr/lib/usr/share等,但在 Makefiles 中我还看到了以下结构:

$(DESTDIR)/$(prefix)

这又有什么用呢?简而言之,DESTDIRprefix之间有区别吗,什么时候应该同时使用两者?

是的,有一个非常重要的区别...在某些环境中。

前缀旨在是完成所有操作后将安装(或似乎已安装(包的位置。 例如,如果包中任何位置都有硬编码路径,它们将基于前缀路径(当然,我们都希望包避免硬编码路径,原因有很多(。

DESTDIR 允许人们实际将内容安装在实际前缀以外的其他位置:DESTDIR 附加到所有前缀值的前面,以便安装位置具有与最终位置完全相同的目录结构/布局,但植根于/以外的其他位置。

出于各种原因,这可能很有用。 一个例子是像GNU stow这样的设施,它允许同时安装多个实例并易于控制。 其他示例是使用 RPM 或 DEB 创建软件包文件:安装软件包后,您希望在 root 端解压缩它,但为了创建软件包,您需要将其安装在其他位置。

其他人出于自己的原因使用它:基本上这一切都归结为 DESTDIR 用于为安装创建一个"暂存区域",而无需实际安装到最终位置。

等。

相关内容

  • 没有找到相关文章

最新更新