Bug 88689 - rpmbuild gives misleading/meaningless "Package already exists" errors
rpmbuild gives misleading/meaningless "Package already exists" errors
Product: Red Hat Linux
Classification: Retired
Component: rpm-build (Show other bugs)
All Linux
medium Severity medium
: ---
: ---
Assigned To: Jeff Johnson
Depends On:
  Show dependency treegraph
Reported: 2003-04-11 18:03 EDT by Gilles Detillieux
Modified: 2007-04-18 12:52 EDT (History)
0 users

See Also:
Fixed In Version:
Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of:
Last Closed: 2003-04-14 14:43:55 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 Gilles Detillieux 2003-04-11 18:03:51 EDT
Description of problem:
Under Red Hat 9, rpmbuild rejected a couple of my .spec files,
giving the very unhelpful error message:

error: Package already exists: %package debuginfo

After hours of scratching my head, fruitlessly searching for the
origin and meaning of this message, I found out by systematically
hacking off bits of my .spec file that what it was choking on was
a comment in %changelog that made reference to %install, e.g.:

  - cleaned up %install to make use of new features

Removing the "%" made rpmbuild happy.

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

How reproducible:

Steps to Reproduce:
1. Add a comment like the one above containing the string "%install"
to the %changelog section of just about any .spec file.
2. "rpmbuild -bp your.spec"
Actual results:
error: Package already exists: %package debuginfo

Expected results:
Something that would at least remotely suggest where the problem might
actually lie, or better still not treating the above, normal condition,
as an error.

Additional info:
Comment 1 Jeff Johnson 2003-04-14 14:23:32 EDT
Yes, the redhat-rpm-config package is overloading
%install, so innocent uses of %install now get expanded
in mysterious ways.

Escaping the % (i.e. "%%install" not "%install") in comment
is the best fix.
Comment 2 Gilles Detillieux 2003-04-14 14:36:15 EDT
Thanks, Jeff.  Your response explains why rpmbuild now has problems with the
%install in the changelog, but it doesn't explain why the error message is so
misleading.  What does 'error: Package already exists: %package debuginfo' have
to do with anything that I was doing?  If it gave a useful message like

error: Section already exists: %install

instead, I wouldn't have wasted hours trying to figure out what could possibly
be the problem with my .spec files.
Comment 3 Jeff Johnson 2003-04-14 14:43:55 EDT
There are two objects both with name "%install".

The first is a section marker, this is the object you know well.

The other is a macro, which is expanded wherever found, and, in
this case, is being used as a vehicle to carry a definition for
a -debuginfo sub-package into a spec file just before the %install
section. Unfortunately, if "%install" is used elsewhere, then
there are unintended side effects.

The config is in /usr/lib/rpm/redhat/macros if you're interested.

BTW, this is a requested feature that -debuginfo packages can be produced
w/o changing spec files, although is is very mysterious.
Comment 4 Gilles Detillieux 2003-04-14 15:18:55 EDT
This is all very informative, but it only confirms my suspicion that without
some pretty intimate knowledge of how rpmbuild works internally, a casual user
doesn't have a hope of understanding this particular error message.  If it's too
difficult to change the error message to give a bit of context as to where the
error occurs (even just a .spec file line number would be a HUGE help), then
there really ought to be a section in the rpmbuild man page that gives a proper
explanation of what this error message means.  Red Hat 9 has only been out a
week, so I don't think I'm going to be the only user to be totally baffled by
this very mysterious message.
Comment 5 Greg Ercolano 2004-11-25 12:39:27 EST
I have to agree with Gilles, having been through the same process
myself with the exact same error, and not knowing wtf was wrong.

I had to hack off the bottom half of my spec file, basically the
entire %changelog section which had some comments containing %%'s, and
others having single %'s (which seemed to be causing the problem).
There were so many single %'s, that it was easier to just remove the
whole changelog to get things working.


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