会社が使用するさまざまなエージェント用の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
.. このバイナリを提供するパッケージをインストールします。
ヒント:mock
rpmパッケージをビルドするときに使用してください。
rpmパッケージングについてもっと知りたいですか?https://www.redhat.com/sysadmin/create-rpm-package