I have an RPM build which looks like this:

Summary: LAME Ain't an MP3 Encoder.
Name: lame
Version: 3.99.5
Release: 1
License: LGPL
Vendor: The LAME Project
Packager: Naftuli Tzvi Kay <--->
URL: http://www.mp3dev.org
Group: Applications/Multimedia
Source: lame-%{version}.tar.gz
Requires: ncurses >= 5.0, libmp3lame >= %{_version}
BuildRequires: gcc => 3.0.1, /usr/bin/find, ncurses-devel, nasm

%global _hardened_build 1

LAME Ain't an MP3 Encoder.

%package -n libmp3lame
Summary: Shared libraries for LAME.
Requires: %{nil}
%description -n libmp3lame
Shared libraries for LAME.

%package -n libmp3lame-devel
Summary: Shared libraries for LAME (development files).
Requires: libmp3lame = %{_version}
%description -n libmp3lame-devel
Shared libraries for LAME (development files).



# configuration swiped from debian
%configure \
    --enable-nasm \
    --disable-rpath \
    --enable-dynamic-frontends \
    --enable-expopt=full \
    --enable-nasm \
%{__make} %{?_smp_mflags} test CFLAGS="%{optflags}"


%{__ln_s} -f lame/lame.h %{buildroot}%{_includedir}/lame.h

%post -p /sbin/ldconfig

%postun -p /sbin/ldconfig

%{__rm} -rf %{buildroot}

%defattr (-,root,root)

%files -n libmp3lame
%exclude %{_prefix}/share/doc/lame/html/*.html
%exclude %{_libdir}/libmp3lame.a
%exclude %{_libdir}/libmp3lame.la
%exclude %{_bindir}/lame
%exclude %{_prefix}/share/man/man1/lame.1.gz

%files -n libmp3lame-devel
%defattr (-, root, root)
%exclude %{_libdir}/libmp3lame.a
%exclude %{_libdir}/libmp3lame.la
%exclude %{_bindir}/lame
%exclude %{_prefix}/share/man/man1/lame.1.gz


* Mon Jan 11 2016 Naftuli Tzvi Kay <---> - 3.99.5-1
- Repackaged for reasons.

I'm building three packages out of this spec file:

  1. lame: the binary /usr/bin/lame, requires ncurses and libmp3lame,
  2. libmp3lame: the shared object /usr/lib64/libmp3lame.so, requires nothing.
  3. libmp3lame-devel: the headers, requires libmp3lame.

My build is currently failing because the Requires section is empty for libmp3lame. If I don't define it, it inherits from lame and depends on ncurses, which doesn't actually apply here.

How can I set an empty requires clause to my libmp3lame subpackage?

1 Answer 1


Requires are not inherited to subpackages. Just remove the line

Requires: %{nil}

and it will work.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .