![이 사양 파일을 어떻게 수정합니까? 계속 sed 오류가 발생하지만 유일한 sed 파일은 오류가 발생하기 오래 전입니까?](https://linux55.com/image/102075/%EC%9D%B4%20%EC%82%AC%EC%96%91%20%ED%8C%8C%EC%9D%BC%EC%9D%84%20%EC%96%B4%EB%96%BB%EA%B2%8C%20%EC%88%98%EC%A0%95%ED%95%A9%EB%8B%88%EA%B9%8C%3F%20%EA%B3%84%EC%86%8D%20sed%20%EC%98%A4%EB%A5%98%EA%B0%80%20%EB%B0%9C%EC%83%9D%ED%95%98%EC%A7%80%EB%A7%8C%20%EC%9C%A0%EC%9D%BC%ED%95%9C%20sed%20%ED%8C%8C%EC%9D%BC%EC%9D%80%20%EC%98%A4%EB%A5%98%EA%B0%80%20%EB%B0%9C%EC%83%9D%ED%95%98%EA%B8%B0%20%EC%98%A4%EB%9E%98%20%EC%A0%84%EC%9E%85%EB%8B%88%EA%B9%8C%3F.png)
여기내 codelite.spec 파일입니다. 소스 코드는 문제 없이 컴파일되지만 다음과 같은 오류가 발생합니다(예, 컨텍스트를 제공하기 위해 몇 줄을 추가했습니다).
Processing files: codelite-10.0-1.fc25.x86_64
Executing(%doc): /bin/sh -e /var/tmp/rpm-tmp.zYPKNH
+ umask 022
+ cd /home/username/rpmbuild/BUILD
+ cd codelite-10.0
+ DOCDIR=/home/username/rpmbuild/BUILDROOT/codelite-10.0-1.fc25.x86_64/usr/share/doc/codelite
+ export DOCDIR
+ /usr/bin/mkdir -p /home/username/rpmbuild/BUILDROOT/codelite-10.0-1.fc25.x86_64/usr/share/doc/codelite
+ cp -pr AUTHORS /home/username/rpmbuild/BUILDROOT/codelite-10.0-1.fc25.x86_64/usr/share/doc/codelite
+ cp -pr LICENSE /home/username/rpmbuild/BUILDROOT/codelite-10.0-1.fc25.x86_64/usr/share/doc/codelite
+ cp -pr COPYING /home/username/rpmbuild/BUILDROOT/codelite-10.0-1.fc25.x86_64/usr/share/doc/codelite
+ exit 0
Finding Provides: /bin/sh -c " while read FILE; do echo "${FILE}" | /usr/lib/rpm/rpmdeps -P; done | /bin/sort -u "
Finding Requires(interp):
Finding Requires(rpmlib):
Finding Requires(verify):
Finding Requires(pre):
Finding Requires(post):
Finding Requires(preun):
Finding Requires(postun):
Finding Requires(pretrans):
Finding Requires(posttrans):
Finding Requires: /bin/sh -c " while read FILE; do echo "${FILE}" | /usr/lib/rpm/rpmdeps -R; done | /bin/sort -u | /usr/bin/sed -e 'libcodeliteu.so; libpluginu.so; libwxscintillau.so; libwxsqlite3u.so;'"
/usr/bin/sed: -e expression #1, char 2: extra characters after command
Provides: application() application(codelite.desktop) codelite = 10.0-1.fc25 codelite(x86-64) = 10.0-1.fc25 libdatabaselayersqlite.so()(64bit) liblibcodelite.so()(64bit) libplugin.so()(64bit) libwxshapeframework.so()(64bit) libwxsqlite3.so()(64bit) mimehandler(application/x-codelite-project) mimehandler(application/x-codelite-workspace)
Requires(interp): /bin/sh /bin/sh /bin/sh
Requires(rpmlib): rpmlib(CompressedFileNames) <= 3.0.4-1 rpmlib(FileDigests) <= 4.6.0-1 rpmlib(PartialHardlinkSets) <= 4.0.4-1 rpmlib(PayloadFilesHavePrefix) <= 4.0-1
Requires(post): /bin/sh
Requires(postun): /bin/sh
Requires(posttrans): /bin/sh
Processing files: codelite-debuginfo-10.0-1.fc25.x86_64
error: Empty %files file /home/username/rpmbuild/BUILD/codelite-10.0/debugfiles.list
RPM build errors:
Empty %files file /home/username/rpmbuild/BUILD/codelite-10.0/debugfiles.list
sed
이 사양 파일에는 명령이 하나만 있습니다.87호선%build
이는 매크로 에 있지만 이 오류는 나중에 런타임에 발생합니다 %files
. 이 sed 오류가 어디서 발생하는지 아시나요? 이 오류를 해결하기 위해 다음과 같은 노력을 시도했습니다.
두 시도 모두 실패했으며 받은 오류 메시지도 변경되지 않았습니다. 저는 rpmbuild -ba codelite.spec
이 패키지를 64비트 Fedora 25 시스템에서 로컬로 구축하고 있습니다(다음을 사용).
답변1
%filter_from_requires
오류는 60번째 줄입니다.
~에 따르면EPEL: 패키지가 자동으로 제공되며 필터링이 필요합니다.:
이
%filter_from_requires
매크로는 "requires"를 필터링하는 데 사용됩니다. 매크로가 제공에 대해 수행하는 것과 동일한 작업을 수행하며%filter_from_provides
동일한 방식으로 호출됩니다.
매크로에 관해서는 다음 과 같이 %filter_from_provides
말합니다.
자동으로 발견된 제공된 스트림에서 필터링하기 위해 이 매크로에 sed 표현식을 제공할 수 있습니다.
60행에서는 sed 표현식을 제공하지 않았습니다.
사용하시면 될 것 같아요
%filter_from_requires /lib\(codelite\|plugin\|wxscintilla\|wxsqlite3\)u\.so/d
...또는 그런 것.