RPM-MACROS(7) Miscellaneous Information Manual RPM-MACROS(7) rpm-macros - RPM % %([]) % % [] [] %{} %{ [] } %{:} %{?} %{?:--} %{!?:---} %(-) %[] %[ ? -- : --] %{lua:-lua} RPM . RPM (spec files). : o o o o Lua Lua o : . (_) . ( ) . . . rpm-macrofile(5) %define %global %undefine RPM rpm-common(8) (C Lua). . RPM . . RPM rpm-macrofile(5) . % . : % . %{} ( ${ENV} ). % [] [] / . -- . %{ [] []} / }. . %{:} / : . . : 4.18 %{:} . % %%{name} %{name}. %_undefined %_undefined. . 64 . %( ). _ /bin/sh . . : %(echo aa-bb-cc | tr '-' '.') . %{?:} . %{!?:} . %{?} %{?:%{}}. Lua. %if %ifarch (spec) . RPM >= 4.17 . . %[]. . RPM : o o ( "-") o v ( v"3:1.2-1") RPM . : o && || ! o != == < > <= >= o + - / * o ? : o %[ 3 + 4 * (1 + %two) ] 15 %two 2. RPM ([:][-]) . %[] %{expr:}. ( ). rpm --define 'foo 1 + 2' --eval '%{expr:%foo}' 3. %[%foo] "1 + 2" . . RPM . %["%file"] %file . : 4.16.0 Lua Lua RPM: %{lua:-lua} -LUA Lua RPM print() . rpm-lua(7) . . : ([]) ( ) getopt(3) argc/argv . . - RPM. - . : +----------------------+-----------------------------------------------+ | | | +----------------------+-----------------------------------------------+ |%0 | | | | | +----------------------+-----------------------------------------------+ |%* | ( | | | shell | | | | | | ) | +----------------------+-----------------------------------------------+ |%** | ( | | | | | | ) | +----------------------+-----------------------------------------------+ |%# | | +----------------------+-----------------------------------------------+ |%{-f} | | | | | | | f | | | ( ) | +----------------------+-----------------------------------------------+ |%{-f*} | | | | | | | f | +----------------------+-----------------------------------------------+ |%1 %2 ... | | | | ( getopt(3)) | +----------------------+-----------------------------------------------+ - OPTIONS : +----------------------+-----------------------------------------------+ | | | +----------------------+-----------------------------------------------+ |%0 | | | | | +----------------------+-----------------------------------------------+ |%* %** | | +----------------------+-----------------------------------------------+ |%# | | +----------------------+-----------------------------------------------+ |%1 %2 ... | | +----------------------+-----------------------------------------------+ . . %{-f} () -f -f . %{-f:X}. () X . %{!-f:Y} () Y -f . . : o o ( ). %global %define. %global . : 1. 2. 3. 4. 5. RPM . . : %{name:arg} . . . %. %define [([])] . %define : . . : %define mypath /usr/bin/mine %global [([])] %global %define : %global . . %global . . %global OPTIONS . : %global snapver 0-0.48.20240616git %undefine %undefine %undefine . . : %undefine mypath %{load:} rpm-macrofile(5). ( : 4.12.0) : %{load:/some/dir/macros.foo} %{expand:} . . : %{expand:%{foo_prefix}%{foo_suffix}} %{expr:} . Expression expansion. ( : 4.15.0) : %{expr:5*1024} %{lua:-lua} LUA-CODE Lua . Lua expansion. : %{lua:for i=65,90 do print(string.char(i)) end} %{macrobody:} . ( : 4.16.0) : %{macrobody:_libdir} %dnl ( ). %dnl . ( : 4.15.0) : %dnl %{mymacro} %{gsub , , [,N]} ( N ) . : 4.19.0 : %{gsub aabbaacc aa dd 1} %{len:} . ( : 4.19.0) : %{len:9bf7da058a7c582878310e75be3d56a5a8b67f95} %{lower:} . ( : 4.19.0) : %{lower:CamelCase}' %{quote:} . ( : 4.14.0) : %myzip -x %{quote:empty spaces.zip} %{rep , N [,]} N ( ). : 4.19.0 : %{rep a 5} %{reverse:} . ( : 4.19.0) : %{reverse:tac} %{shescape:} shell. ( : 4.18.0) : %{shescape:foo's} %{shrink:} . ( : 4.14.0) : %{shrink:aa bb ccc } %{span:} . (: 6.0.0) : %{span: % % } %{sub STRING I [J]} STRING I J. I J . J -1 ( ). : 4.19.0 : *%{sub myfile.zip 3 6}* %{upper:STRING} STRING . (: 4.19.0) : %{upper:CamelCase}' %{basename:PATH} basename(1). : %{basename:/some/dir/file.suf} %{dirname:PATH} dirname(1). : %{dirname:/some/dir/file.suf} %{exists:PATH} 1/0. (: 4.18.0) : %{exists:%{builddir}/myflag.txt} %{suffix:PATH} . : %{suffix:myfile.zip} %{url2path:URL} (URL) . : %{url2path:http://rpm.org/not/there} %{uncompress:PATH} PATH . : %{uncompress /my/source.tar.gz} %{xdg:KIND} XDG . KIND : o cache: ( ) o config: o data: o state: : 6.0.0 : %{xdg config} %getncpus . (: 4.15.0) %{getncpus:KIND} KIND o total: ( %getncpus) o proc: o thread: proc thread . : 4.19.0. : %{getncpus proc} %getconfdir RPM "" ( /usr/lib/rpm). %{getenv:NAME} getenv(3). : %{getenv:HOME} %rpmversion RPM . %{echo:STRING} STRING . : %{echo:Building with foo} %{warn:STRING} STRING "warning: " . : %{warning:Foo is deprecated} %{error:STRING} STRING "error: " . : %{error:Invalid argument} %verbose 1/0 RPM . (: 4.17.1) %{verbose:STRING} STRING RPM . (: 4.17.1) : %{verbose:-x} (spec) %{S:NUMBER} (Source) NUMBER. %{S:n} %{SOURCEn}. %{P:NUMBER} (Patch) NUMBER. %{P:n} %{PATCHn}. %trace / . %dump ( ). %__file_name ( ). (: 4.15) %__file_lineno ( ). (: 4.15) 1. mylib %{_libdir} : %define mylib %{_libdir}/mine 2. myhelper %myprog --some-opt --xtra -x : %define myhelper(x) %{myprog} --some-opt %{?-x:--xtra} %{1} 3. %today YYMMDD date(1). % date(1): %define today %(date +%%y%%m%%d) 4. mypath : %{!?mypath: %define mypath /some/where} 5. 1 use_foo 0 : %{?use_foo:1}%{!?use_foo:0} 6. 5 * 1024: %[5 * 1024] true false : %[1 < 2 ? "true" : "false"] 1 0 /: %[ v"3.1.0-1" < v"1.0~alpha-2" ? 1 : 0] 1 %aa 5 2: %[ "%{aa}" == "5" ? 1 : 2] : rpm --eval "" . rpm --define "aa 11" --eval "%aa" . rpm --eval "%global unamer %(uname -r)" --eval "%{macrobody:unamer}" %global . rpm --eval "%define unamer %(uname -r)" --eval "%{macrobody:unamer}" %define . rpmlua Lua . rpmlua -e 'print(macros.defined("_libdir"))' Lua 1/0 _libdir . rpmspec --shell . rpmspec --shell telnet.spec telnet.spec. rpm(8) rpm-common(8) rpm-macrofile(5) rpm-config(5) rpm-lua(7) rpmspec(1) rpmlua(1) 3 . . : . RPM 6.0.1 6 2026 RPM-MACROS(7)