【发布时间】:2016-09-04 07:52:06
【问题描述】:
我正在尝试将两个符号链接打包到外部 dep1.rpm 和 dep2.rpm 提供的相应 jar 中。这些在my-app-extra.spec 中被声明为依赖项:
Requires: dep1
Requires: dep2
我有我的%install 符号链接他们的罐子(%dep1jar,%dep2jar):
%install
%{__install} -d -m 0755 $RPM_BUILD_ROOT%{_javadir}
%{__install} -d -m 0755 $RPM_BUILD_ROOT%{_javadir}/%{my_app}
pushd $RPM_BUILD_ROOT%{_javadir}/%{my_app}
for jar in %dep1jar %dep2jar
do
ln -sf ../"${jar}" "${jar}"
done
popd
但 rpmbuild 失败:
ERROR: link target doesn't exist (neither in build root nor in installed system):
/usr/share/java/my-app/dep1.jar -> /usr/share/java/dep1.jar
Add the package providing the target to neededforbuild and Requires
// same error for dep2.jar
error: Bad exit status from /var/tmp/rpm-tmp.31253 (%install)
有没有办法绕过这个 rpmbuild 检查?
背景
我有一个 java 应用程序(可选)需要两个外部库来提供扩展功能。为了安装这些库,我创建了 dep1.rpm 和 dep2.rpm 将 jar 存储在 %_datadir/java 下,另外还有一个 my-app-extra rpm 应该符号链接 %_datadir/java/my-app 下的那些(遵循 linux 下一些明显建立的 java 打包约定) .
但是我没有找到如何强制 rpmbuild 构建这个 rpm 而不将外部库声明为 BuidRequires 并首先安装它们。
我想要什么
这就是我所追求的总结(简化,因为完整的解决方案涉及版本控制):
/usr/share/java/dep1.jar (from dep1.rpm)
/usr/share/java/dep2.jar (from dep2.rpm)
/usr/share/java/my-app/dep1.jar -> ../dep1.jar (from my-app-extended.rpm)
/usr/share/java/my-app/dep2.jar -> ../dep2.jar (from my-app-extended.rpm)
注意:我现在正在探索 rpm 子包的可能性,但我希望这在没有子包的情况下是可能的。
【问题讨论】: