Hide Forgot
Description of problem: The -D option does not work while --define does. $ rpm --help | grep define -D, --define='MACRO EXPR' define MACRO with value EXPR $ rpm --eval "%{dist}" .el6 $ rpm -D "dist foo" --eval "%{dist}" .el6 $ rpm --define "dist foo" --eval "%{dist}" foo Version-Release number of selected component (if applicable): rpm-4.8.0-19.el6.x86_64 How reproducible: Every time Steps to Reproduce: See steps above Actual results: -D does not change defines Expected results: -D should work the same as --define. Additional info:
Yup, for a long long time -D has been erronously been alias for --predefine instead of --define. The difference matters when trying to override macros that are defined in the macro configuration files, like dist is. This was patched in rhel-4 back in the day (bug 166311) but has been broken in rhel-5 and rhel-6 throughout their lifetimes. Anyway, the fix is trivial: http://rpm.org/gitweb?p=rpm.git;a=commitdiff;h=3d657d5cc22652c71bc15a56b6b4462e228526d6
Technical note added. If any revisions are required, please edit the "Technical Notes" field accordingly. All revisions will be proofread by the Engineering Content Services team. New Contents: Previously, the -D shortcut option for --define was incorrectly taken as a shortcut for --predefine, which would lead to incorrect macro evaluation when attempting to override macros from system configuration. The -D shortcut option now equals --define as intended and documented.
Since the problem described in this bug report should be resolved in a recent advisory, it has been closed with a resolution of ERRATA. For information on the advisory, and where to find the updated files, follow the link below. If the solution does not work for you, open a new bug report. http://rhn.redhat.com/errata/RHBA-2012-0909.html