Rpm
rpmbuild 失敗 |缺少依賴項(但是安裝了缺少的依賴項)
我正在嘗試為我們在我公司使用的各種代理建構 RPM 和 Repo。這個特定的包有一個私人圖書館,我無法弄清楚問題是什麼。
該軟體包似乎建構得很好,但是我收到以下錯誤:
[root@test ~]# rpm -ivh rpmbuild/RPMS/x86_64/ir-agent-1-1.el8.x86_64.rpm error: Failed dependencies: libc.so.6 is needed by ir-agent-1-1.el8.x86_64 libc.so.6(GLIBC_2.0) is needed by ir-agent-1-1.el8.x86_64 libc.so.6(GLIBC_2.1.3) is needed by ir-agent-1-1.el8.x86_64 libdl.so.2 is needed by ir-agent-1-1.el8.x86_64
glib-2.28-164.el8.x86_64 安裝在系統上,所以我不清楚問題是什麼。
以下是我正在使用的規範文件:
[root@test ~]# cat rpmbuild/SPECS/ir-agent-1.0.spec Name: ir-agent Version: 1 Release: 1%{?dist} Summary: Rapid7 Insight Agent Group: Application/Other License: BSD URL: www.rapid7.com Source0: %{name}-%{version}.tar.gz BuildArch: x86_64 BuildRequires: systemd Requires: glibc %description Aires installation of Rapid7 Insight Agent. %global debug_package %{nil} %global __provides_exclude_from $RPM_BUILD_ROOT/opt/rapid7/ir_agent/components/insight_agent/3.1.3.80/lib/.*\\.so$ %prep %setup -q %build %install #%{__mkdir} -p %{buildroot}%{base_install_dir} #%{__install} -D -m 755 %{SOURCE0} rm -rf $RPM_BUILD_ROOT mkdir -p $RPM_BUILD_ROOT/usr/lib/systemd/{system,system-preset} mkdir -p $RPM_BUILD_ROOT/opt/rapid7/ir_agent/components/network_sensor/{0,common} mkdir -p $RPM_BUILD_ROOT/opt/rapid7/ir_agent/components/insight_agent/{3.1.3.80,common} mkdir -p $RPM_BUILD_ROOT/opt/rapid7/ir_agent/components/bootstrap/{2.4.0.5,common,ssl} cp 90-ir-agent.preset $RPM_BUILD_ROOT/usr/lib/systemd/system-preset/ cp ir-agent.service $RPM_BUILD_ROOT/usr/lib/systemd/system/ cp config.json $RPM_BUILD_ROOT/opt/rapid7/ir_agent/components/insight_agent/common/ cp client.{key,crt} $RPM_BUILD_ROOT/opt/rapid7/ir_agent/components/bootstrap/ssl/ cp cafile.pem $RPM_BUILD_ROOT/opt/rapid7/ir_agent/components/bootstrap/ssl/ cp -r local/* $RPM_BUILD_ROOT/opt/rapid7/ir_agent/components/insight_agent/3.1.3.80/ cp local/bootstrap $RPM_BUILD_ROOT/opt/rapid7/ir_agent mv local/bootstrap $RPM_BUILD_ROOT/opt/rapid7/ir_agent/components/insight_agent/3.1.3.80/ir_agent ln -s /opt/rapid7/ir_agent/components/insight_agent/3.1.3.80/ir_agent $RPM_BUILD_ROOT/opt/rapid7/ir_agent/components/insight_agent/insight_agent %clean rm -rf $RPM_BUILD_ROOT %post %systemd_post ir-agent.service %preun %systemd_preun ir-agent.service %postun %systemd_postun_with_restart ir-agent.service %files %defattr(600,root,root,751) %dir /opt/rapid7/ir_agent %config %attr(600, root, root) /opt/rapid7/ir_agent/components/insight_agent/common/config.json %attr(600, root, root) /opt/rapid7/ir_agent/* %ghost /opt/rapid7/ir_agent/components/insight_agent/insight_agent %attr(700, root, root) /opt/rapid7/ir_agent/components/insight_agent/3.1.3.80/bootstrap %attr(700, root, root) /opt/rapid7/ir_agent/components/insight_agent/3.1.3.80/bootstrap_upgrader %attr(700, root, root) /opt/rapid7/ir_agent/components/insight_agent/3.1.3.80/connectivity_test %attr(700, root, root) /opt/rapid7/ir_agent/components/insight_agent/3.1.3.80/get_proxy %attr(700, root, root) /opt/rapid7/ir_agent/components/insight_agent/3.1.3.80/ir_agent %attr(700, root, root) /opt/rapid7/ir_agent/components/insight_agent/3.1.3.80/token_handler %attr(700, root, root) /opt/rapid7/ir_agent/components/insight_agent/3.1.3.80/upgrade_agent %attr(644, root, root) /usr/lib/systemd/system/ir-agent.service %attr(644, root, root) /usr/lib/systemd/system-preset/90-ir-agent.preset %doc %changelog * Sat Mar 5 2022 - release 1.0 - initial release
我在建構 RPM 方面做得併不多,所以我不清楚除了定義“要求”之外還能做什麼。
看來您的軟體包
ir-agent
需要glibc.i686
版本。您可以使用dnf install glibc.i686
如果 x86 架構(此 64 位)需要缺少模組,則需要
libdl.so.2()(64bit)
. 注意那裡的**(64位)**。使用
dnf provides \*libbdl.so\*
會給你的。
要回答有關如何明確指定
i686
版本的問題,您可以完全使用該版本(包名稱原樣)。例如Requires: glibc.i686
這也是可能的:
Requires: /lib/libc.so.6
這與您使用
yum
或dnf
安裝軟體包的方式相同。例如dnf install */bin/lsof
.. 將安裝
.rpm
提供此二進製文件的軟體包。提示:
mock
如果您正在建構 rpm 包,請使用。想了解更多關於 rpm 打包的資訊:https ://www.redhat.com/sysadmin/create-rpm-package