rpmbuild 실패 | 종속성 누락(그러나 누락된 종속성이 설치됨)

rpmbuild 실패 | 종속성 누락(그러나 누락된 종속성이 설치됨)

회사에서 사용하는 다양한 에이전트에 대한 RPM과 Repos를 구축하려고 합니다. 이 특정 패키지에는 개인 라이브러리가 있는데 문제가 무엇인지 알 수 없습니다.

패키지가 제대로 빌드된 것 같지만 다음 오류가 발생합니다.

[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을 구축하는 작업을 많이 수행하지 않았으므로 "필요"를 정의하는 것 외에 무엇을 해야 할지 명확하지 않습니다.

답변1

패키지에 버전 관리가 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.. 이 바이너리를 제공하는 패키지를 설치합니다 .

팁: mockrpm 패키지를 빌드하는 경우 사용하십시오.

rpm 패키징에 대해 더 알고 싶으십니까?https://www.redhat.com/sysadmin/create-rpm-package

관련 정보