Bug 186411 - rpm macro %{_sysconfdir} points to /usr/etc
rpm macro %{_sysconfdir} points to /usr/etc
Product: Red Hat Enterprise Linux 4
Classification: Red Hat
Component: rpm (Show other bugs)
x86_64 Linux
medium Severity medium
: ---
: ---
Assigned To: Paul Nasrat
Depends On:
Blocks: 176344
  Show dependency treegraph
Reported: 2006-03-23 08:56 EST by Rainer Traut
Modified: 2007-11-30 17:07 EST (History)
1 user (show)

See Also:
Fixed In Version: RHBA-2007-0315
Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of:
Last Closed: 2007-05-01 18:50:20 EDT
Type: ---
Regression: ---
Mount Type: ---
Documentation: ---
Verified Versions:
Category: ---
oVirt Team: ---
RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: ---

Attachments (Terms of Use)

  None (edit)
Description Rainer Traut 2006-03-23 08:56:24 EST
Description of problem:
rpmbuild macro %{_sysconfdir} points to /usr/etc because rpm looks for

Version-Release number of selected component (if applicable):

How reproducible:
always, try to rebuild a src rpm with this macro or:
# rpm --eval %{_sysconfdir}

Steps to Reproduce:
1. # rpm --eval %{_sysconfdir}
2. /usr/etc
Actual results:

Expected results:

Additional info:
The macro %{_sysconfdir} is defined in a couple of files under /usr/lib/rpm/
always with the filename macros
But here on the 64bit version it tries to open:
open("/usr/lib/rpm/ia32e-linux/macros", O_RDONLY) = -1 ENOENT (No such file or
so the wrong path /usr/etc from /usr/lib/rpm/macros is used.
I did an strace:
# grep macros strace_rpm
open("/usr/lib/rpm/macros", O_RDONLY)   = 3
read(3, "#/*! \\page config_macros Default"..., 8192) = 8192
open("/usr/lib/rpm/ia32e-linux/macros", O_RDONLY) = -1 ENOENT (No such file or
open("/etc/rpm/macros.jpackage", O_RDONLY) = 3
read(3, "#\n# RPM macros for Java applicat"..., 8192) = 6657
open("/etc/rpm/macros.prelink", O_RDONLY) = 3
open("/etc/rpm/macros.solve", O_RDONLY) = 3
open("/etc/rpm/macros.specspo", O_RDONLY) = 3
open("/etc/rpm/macros.up2date", O_RDONLY) = 3
open("/etc/rpm/macros", O_RDONLY)       = -1 ENOENT (No such file or directory)
open("/etc/rpm/ia32e-linux/macros", O_RDONLY) = -1 ENOENT (No such file or
stat("/root/.rpmmacros", 0x7fbfffe180)  = -1 ENOENT (No such file or directory)
Comment 1 Jeff Johnson 2006-03-23 15:33:35 EST
The %{_sysconfdir} macro is overridden by per-platform macros
    -14: _sysconfdir        /etc

Edit /etc/rpm/platform, and change "ia32e" to "x86_64" is one fix.
    ln -s x86_64-linux /usr/lib/rpm/ia32e-linux
Comment 2 Rainer Traut 2006-03-24 08:16:54 EST
The symlink was what I thought of, too.
I did:
ln -s /usr/lib/rpm/x86_64-linux/ /usr/lib/rpm/ia32e-linux

and now it works:

# rpm --eval %{_sysconfdir}

Comment 6 Jeff Johnson 2006-08-07 14:24:52 EDT
This bug is likely fixed (by setting arch as "x86_64" from --target) in rpm-4.4.7-0.15.

Comment 7 RHEL Product and Program Management 2006-08-18 12:25:07 EDT
This request was evaluated by Red Hat Product Management for inclusion in a Red
Hat Enterprise Linux maintenance release.  Product Management has requested
further review of this request by Red Hat Engineering, for potential
inclusion in a Red Hat Enterprise Linux Update release for currently deployed
products.  This request is not yet committed for inclusion in an Update
Comment 15 Red Hat Bugzilla 2007-05-01 18:50:20 EDT
An advisory has been issued which should help the problem
described in this bug report. This report is therefore being
closed with a resolution of ERRATA. For more information
on the solution and/or where to find the updated files,
please follow the link below. You may reopen this bug report
if the solution does not work for you.


Note You need to log in before you can comment on or make changes to this bug.