[ 已解决 ]obs 打包错误:File not found by glob

百度网盘的 linux 端实现需要一个 python3-keyring 包。在本地打包没有任何问题。brp-check-suse 检查输出的都是老样子:3 个 menu 文件不存在;使用 rpmlint 检查软件包也只输出一个 changelog 的 error,而 changelog 我已经放在 python3-keyring.changes 中了,所以可以认为检查没有错误。

但是在 obs 上编译时,error 如下:

File not found by glob: /home/abuild/rpmbuild/BUILDROOT/python3-keyring-3.7-7.1.x86_64/usr/bin/*

python3-keyring 在安装时会在 /usr/bin/ 目录下生成一个文件 keyring,实际在本地打包时也能在 %{buildroot}%{_bindir}/ 目录中找到

spec 文件中 %build 和 %install 以及 %files,还有一些相关字段如下:

BuildArch:      noarch




%build
python3 setup.py build




%install
python3 setup.py install --prefix=%{_prefix} --root=%{buildroot}
# fix non-executable-script issues
chmod a+x %{buildroot}%{python3_sitelib}/keyring/cli.py




%files
%defattr(-,root,root)
%doc CHANGES.rst README.rst CONTRIBUTORS.txt
%{python3_sitelib}/*
%{_bindir}/*
%exclude %{python3_sitelib}/keyring/__pycache__

剩下的都是一些 Requires、summary 之类的无关紧要的描述,无脚本包含。

现在就想请问一下这个错误是怎么引起的?是否 spec 文件有写的不对的地方?
因为是首次接触对于 python 的打包,所以可能有些许错误,多多包含啦~~~

==================================================================

今天已经解决了。一行一行的对比编译日志,发现犯了一个很搞笑的错误:BuildRequires 里没有包含 python3-setuptools。没有这个包 python 编译时就不会执行 install_scripts,自然在 /usr/bin 下就没有可执行文件了。

感谢(女王大人?)的回复及提醒 :sunglasses:

你可以在 %install 的最后面加上这句

ls -l %{buildroot}%{_prefix}/bin

就可以在编译日志里看到编译的时候你的 BUILDROOT/usr/bin 下面究竟是什么内容了。

File not found by glob 错误只有一个原因,你在 %files 里声明的文件无法在 BUILDROOT 的相应位置找到,或者名称不对。