有人能解释一下构建系统中$(DESTDIR)
变量的用途吗?
我的意思是我知道它指向当前安装的软件包的临时目录,但我无法想象它的实际用途。
为了澄清,我知道--prefix
选项是什么,例如,如果我们指定像./configure --prefix="/usr"
这样的buldsystem,那么所有包的文件都属于/usr
,例如{ {1}},/usr/lib
等等,但在Makefile中,我也看到了以下结构:
/usr/share
那是什么目的?简而言之,$(DESTDIR)/$(prefix)
和DESTDIR
之间是否存在差异,何时应该同时使用?
答案 0 :(得分:1)
是的,在某些环境中存在非常重要的差异。
在完成所有操作后,前缀应该是安装包的位置(或显示)。例如,如果包中有硬编码路径,那么它们将基于前缀路径(当然,我们都希望包避免硬编码路径,原因很多)。
DESTDIR允许人们实际安装除实际前缀之外的其他内容:DESTDIR被添加到所有前缀值之前,以便安装位置与最终位置具有完全相同的目录结构/布局,但是根除{除{之外的某处{1}}。
这可能因各种原因而有用。一个例子是像GNU stow这样的设施,它们允许同时安装多个实例并且易于控制。其他示例使用RPM或DEB创建包文件:安装包后,您希望它在root用户解压缩,但是为了创建包,您需要将其安装在其他位置。
其他人使用它是出于他们自己的原因:基本上归结为DESTDIR用于创建一个"临时区域"用于安装,而不是实际安装到最终位置。
等