rpmbuildライブラリ登録「必要」

rpmbuildライブラリ登録「必要」

大画像:私はカスタマイズされたPHPのための社内rpmを構築しています。動作するrpmを作成しましたが、生成されたライブラリ要件が「nodeps」を使用しない限り、満たされないようです。他の要件を確保するためにこれを避けたいと思います。はい今後の使用時に発生します。

この問題の原因は次のとおりです。 (Linuxでは通常、独自のソフトウェアとして帰結します。)... Oracleクライアントライブラリです。私が構築したRPMは「提供」を正しく登録していないので、RPMは自分がこのライブラリ機能を提供していることを知りました。

%prep
%setup -q -n %{shortname}-%{version}

%build

%install
mkdir -p %{buildroot}/%{prefix}
mkdir -p %{buildroot}/%{_sysconfdir}/profile.d
mkdir -p %{buildroot}%{_sysconfdir}/ld.so.conf.d

cp -a %{_builddir}/%{shortname}-%{version} %{buildroot}/%{prefix}/

%{__install} -m 644 -p %{SOURCE1} \
   $RPM_BUILD_ROOT%{_sysconfdir}/profile.d/oracle-instantclient.sh
echo %{prefix}/%{shortname}-%{version}>%{buildroot}%{_sysconfdir}/ld.so.conf.d/%{name}.conf
rm -fv /opt/%{shortname}-%{version} /opt/%{shortname} /thisDir/%{shortname}-%{version} /thisDir/%{shortname}
ln -sv %{prefix}/%{shortname}-%{version} /opt/
ln -sv /opt/%{shortname}-%{version} /opt/%{shortname}
ln -sv %{prefix}/%{shortname}-%{version} /thisDir/
ln -sv /thisDir/%{shortname}-%{version} /thisDir/%{shortname}
chown -h user:user /opt/%{shortname}-%{version} /opt/%{shortname} /thisDir/%{shortname}-%{version} /thisDir/%{shortname}

%clean
rm -rf %{buildroot}

%files
###%defattr(-,root,root,0755)
%{prefix}/%{shortname}-%{version}
/%{_sysconfdir}/profile.d/%{name}.sh
/%{_sysconfdir}/ld.so.conf.d/%{name}.conf

%post -p /sbin/ldconfig

%postun
rm -f /%{_sysconfdir}/profile.d/%{name}.sh /%{_sysconfdir}/ld.so.conf.d/%{name}.conf
rm -rfv /opt/%{shortname}-%{version} /opt/%{shortname} /thisDir/%{shortname}-%{version} /thisDir/%{shortname} %{_sysconfdir}/profile.d/%{source1}
ldconfig
rm -rf %{prefix}/%{shortname}-%{version}
rm -fv /opt/%{shortname}-%{version}
rm -fv /opt/%{shortname}
rm -fv /thisDir/%{shortname}-%{version}
rm -fv /thisDir/%{shortname}
rm -fv %{_sysconfdir}/profile.d/%{name}.sh
/sbin/ldconfig

これらのほとんどは、私たちの環境全体で使用される標準的な場所へのシンボリックリンクを提供するスクリプトです。機能的な部分はldconfigです。 rpmbuildが「提供」されるようにするために私は何を間違っていますか? Cent6用の最新のrpmbuildでは、これがどのように機能するかについてのドキュメントを見つけるのが困難です。

ベストアンサー1

OracleライブラリのsonameをパッケージのProvide:として自動的に追加しますか?

最も簡単な方法は、* .specファイルにProvide:を直接入力することです。

自動抽出が必要な場合は、rpmdepsを使用して次のようにsoname依存関係を抽出できます。

$ echo /lib64/libpopt.so.0.0.0 | /usr/lib/rpm/rpmdeps -P
libpopt.so.0()(64bit)
libpopt.so.0(LIBPOPT_0)(64bit)

次のように *.spec ファイルの %(...) パイプで上記を実行します。

Provides: %(echo /lib64/libpopt.so.0.0.0 | /usr/lib/rpm/rpmdeps -P)

必要に応じてOracleライブラリのパスを変更します。

おすすめ記事