저는 데비안 패키징과 거의 같은 방식으로 패키징하려고 합니다 libmp3lame
. libmp3lame-devel
그들은 공유 라이브러리를 패키지로 libmp3lame
제공하고 헤더와 문서를 제공하며 실제 바이너리 제공 에 의존합니다 .libmp3lame.so
libmp3lame-dev
lame
libmp3lame
이것은 내 사양 파일입니다 libmp3lame.spec
.
Summary: Shared libraries for LAME.
Name: libmp3lame
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
BuildRequires: gcc => 3.0.1, /usr/bin/find, ncurses-devel, nasm
%description
Shared libraries for LAME.
%package devel
Summary: Shared libraries for LAME (development files).
Group: Development/Libraries
Requires: %{name} = %{version}
%description devel
Shared libraries for LAME (development files).
%prep
%setup -n lame-%{version}
%build
# Vorbis makes the build fail for now. . .
rm -f config.cache
# configuration swiped from debian
%configure \
--enable-nasm \
--disable-rpath \
--enable-dynamic-frontends \
--enable-expopt=full \
--enable-nasm \
--with-fileio=lame
%{__make} %{?_smp_mflags} test CFLAGS="%{optflags}"
%install
%makeinstall
%{__ln_s} -f lame/lame.h %{buildroot}%{_includedir}/lame.h
### make install really shouldn't install these
# %{__rm} -rf %{buildroot}%{_docdir}/lame/
%post
/sbin/ldconfig
%postun
/sbin/ldconfig
%clean
%{__rm} -rf %{buildroot}
%files
%defattr (-,root,root)
%{_libdir}/libmp3lame.so.*
%{_libdir}/libmp3lame.so
%files devel
%defattr (-, root, root)
%doc API HACKING STYLEGUIDE
%{_includedir}/*
%changelog
* Mon Jan 11 2016 Naftuli Tzvi Kay <---> - 3.99.5-1
- Repackaged for reasons.
다음 빌드 오류가 표시됩니다.
RPM build errors:
Installed (but unpackaged) file(s) found:
/usr/bin/lame
/usr/lib64/libmp3lame.a
/usr/lib64/libmp3lame.la
/usr/share/doc/lame/html/about.html
/usr/share/doc/lame/html/abr.html
/usr/share/doc/lame/html/cbr.html
/usr/share/doc/lame/html/contact.html
/usr/share/doc/lame/html/contributors.html
/usr/share/doc/lame/html/detailed.html
/usr/share/doc/lame/html/history.html
/usr/share/doc/lame/html/index.html
/usr/share/doc/lame/html/introduction.html
/usr/share/doc/lame/html/links.html
/usr/share/doc/lame/html/list.html
/usr/share/doc/lame/html/ms_stereo.html
/usr/share/doc/lame/html/usage.html
/usr/share/doc/lame/html/vbr.html
/usr/share/man/man1/lame.1.gz
최종 RPM에 필요한 파일만 포함시키려고 노력했지만 여전히 이에 대한 불만이 있는 것 같습니다.
답변1
make install
이 단계에서 생성된 빌드 파일은 명시적으로 포함되거나 제외되어야 합니다 .%makeinstall
rm
나중에 수동 명령을 실행하여 이 문제를 해결할 수 있지만 %makeinstall
using 절 섹션에 또 다른 해결 방법이 있는 것 같습니다.%files
%exclude
%files
%defattr (-,root,root)
%{_libdir}/libmp3lame.so.*
%{_libdir}/libmp3lame.so
%exclude %{_bindir}/lame
%exclude %{_libdir}/libmp3lame.a
%exclude %{_libdir}/libmp3lame.la