类似{?buildroot}这样的宏是什么意思?

例如有个RPM宏是这么定义的:

%make_install %{__make} install DESTDIR=%{?buildroot} INSTALL="%{__install} -p"

我想调用这个宏,但是同时又想自定义DESTDIR的值,应该怎么写?真心求教。

你想调用 %make_install 又想改里面的 %buildroot?那不可能的…除非你自己在 specfile 头部重新 %define 一个,但那样还不如直接在 specfile 里的 %install 写的 make install DESTDIR=

%{?buildroot} 的意思是有 RPM_BUILDROOT 这个环境变量就设为它,没有就拉倒…至于 failback,应该是在 OBS 服务器那边定义的。一般不会没有的,因为在 /use/share/vim/current/skeletons/skeleton.spec 里都定义了 BUILDROOT 是 %{_tmppath}/{name}-%{version}-build。另外覆盖别的还好,这个环境变量不止你一个人在用的…rpm 本身也在用,会出现意想不到的问题的。

明白了,这个问号就是一个条件宏。那我放弃使用%make_install这个宏就好了,谢谢苏姐。