Fedora

如何修復此規範文件:它不斷給我 sed 錯誤,但唯一的 sed 早在錯誤發生之前?

  • March 1, 2017

是我的 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/fusion809/rpmbuild/BUILD
+ cd codelite-10.0
+ DOCDIR=/home/fusion809/rpmbuild/BUILDROOT/codelite-10.0-1.fc25.x86_64/usr/share/doc/codelite
+ export DOCDIR
+ /usr/bin/mkdir -p /home/fusion809/rpmbuild/BUILDROOT/codelite-10.0-1.fc25.x86_64/usr/share/doc/codelite
+ cp -pr AUTHORS /home/fusion809/rpmbuild/BUILDROOT/codelite-10.0-1.fc25.x86_64/usr/share/doc/codelite
+ cp -pr LICENSE /home/fusion809/rpmbuild/BUILDROOT/codelite-10.0-1.fc25.x86_64/usr/share/doc/codelite
+ cp -pr COPYING /home/fusion809/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/fusion809/rpmbuild/BUILD/codelite-10.0/debugfiles.list


RPM build errors:
   Empty %files file /home/fusion809/rpmbuild/BUILD/codelite-10.0/debugfiles.list

sed此規範文件中只有一個命令,位於宏中的第 87 行%build,但此錯誤在執行時稍後發生%files。這個 sed 錯誤來自哪裡的任何想法?我已嘗試以下努力來修復此錯誤:

  1. 卸下L118-120
  2. 移除L122並將L127從更改%files -f %{name}.lang%files

兩種嘗試都沒有成功,甚至沒有改變我得到的錯誤資訊。我rpmbuild -ba codelite.spec在我的 64 位 Fedora 25 系統上本地(使用 )建構這個包。

%filter_from_requires第60行是錯誤的。

根據EPEL:Packaging Autoprovides and Requires Filtering

%filter_from_requires宏用於過濾“需求”;它的作用需要%filter_from_provides宏的作用提供並以相同的方式呼叫。

關於%filter_from_provides宏,它說

可以為這個宏提供一個 sed 表達式以從自動找到的提供流中進行過濾。

在第 60 行,您沒有提供 sed 表達式。

我想你可以使用

%filter_from_requires /lib\(codelite\|plugin\|wxscintilla\|wxsqlite3\)u\.so/d

…或類似的東西。

引用自:https://unix.stackexchange.com/questions/334320