3.4. Defining custom RPM macros in a spec file


In addition to using the built-in and distribution RPM macros, you can define custom RPM macros to simplify package maintenance and make it consistent across packages. RPM spec files can use either the %define and %global macros.

The differences between the %define and %global macros are the following:

  • %define has global scope, except when used in a parametric macro, where its scope is local to this macro. The body of the %define macro is expanded when used.
  • %global has global scope. The body of the %global macro is expanded at definition time.
중요

Use %global macros for the following actions:

  • To avoid multiple redundant evaluations
  • To define global macros inside parametric macros

Otherwise, use %define macros.

The %define and %global macro use the %global <name> <body> or %define <name>[(opts)] <body> pattern:

  • All whitespace, the preceding and succeeding, that surrounds <body> is removed during the macro expansion.
  • The macro name might be composed of alphanumeric characters and the underscore (_) character.
  • Inclusion of the (opts) field is optional:

    • Simple macros do not contain the (opts) field. In this case, only recursive macro expansion is performed.
    • Parametric options are function-like macros that accept arguments and possible options. For more details, see the /usr/share/doc/rpm/macros.md file.
중요

Macros are evaluated and expanded everywhere in the spec file, even on lines commented by using the hash (#) and in spec file sections, such as %changelog.

To escape macro expansion, you can use the %dnl macro which comments out everything up to the next new line.

You can also escape macro expansion by placing a second percent sign (%) in front of the macro, for example %%{name}.

For more information about macros, see the /usr/share/doc/rpm/macros.md file.

Procedure

  • Define the macro. For example, you can include the following line in the RPM spec file.

    %define date 20241114
    %define upstream_version 2.5.4-pre1
Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다. 최신 업데이트를 확인하세요.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

Theme

© 2026 Red Hat
맨 위로 이동