RPMはファイルの場所をどのように処理しますか?

RPMはファイルの場所をどのように処理しますか?

rpmパッケージでmapserverを生成するための.specファイルを生成しようとしています。私はRHEL6 64ビットサーバーを構築しています。

rpmファイルでは%{_libdir}%{_bindir}などのいくつかのディレクトリ参照を使用できます%{_libexecdir}。これらのディレクトリパスはどこに設定されており、どのパスを使用できますか?

私のrpm仕様の%filesセクションは次のとおりです。

%files
%defattr(-,root,root)
%doc README COMMITERS GD-COPYING HISTORY.TXT
%doc INSTALL MIGRATION_GUIDE.txt
%doc symbols tests
%doc fonts
%{_bindir}/*
%{_libdir}/libmapserver*.so
%{_libexecdir}/mapserv

しかし、ビルドを実行するとエラーが発生します。

File not found by glob: /home/kfadm/rpmbuild/BUILDROOT/mapserver-6.2.1-3.x86_64/usr/lib64/libmapserver*.so
File not found: /home/kfadm/rpmbuild/BUILDROOT/mapserver-6.2.1-3.x86_64/usr/libexec/mapserv

不足しているファイルがインストールされているようです。

/home/kfadm/rpmbuild/BUILDROOT/mapserver-6.2.1-3.x86_64/usr/lib/libmapserver-6.2.1.so
/home/kfadm/rpmbuild/BUILDROOT/mapserver-6.2.1-3.x86_64/usr/lib/libmapserver.la
/home/kfadm/rpmbuild/BUILDROOT/mapserver-6.2.1-3.x86_64/usr/lib/libmapserver.so
/home/kfadm/rpmbuild/BUILDROOT/mapserver-6.2.1-3.x86_64/usr/lib/debug/usr/lib/libmapserver-6.2.1.so.debug
/home/kfadm/rpmbuild/BUILDROOT/mapserver-6.2.1-3.x86_64/usr/lib/debug/usr/lib/libmapserver.so.debug

/home/kfadm/rpmbuild/BUILDROOT/mapserver-6.2.1-3.x86_64/usr/bin/mapserv
/home/kfadm/rpmbuild/BUILDROOT/mapserver-6.2.1-3.x86_64/var/www/cgi-bin/mapserv

正しいパスでファイルを見つけるには、rpm仕様をどのように変更する必要がありますか?

答え1

この問題は、64ビットライブラリをデフォルトの/usr/libディレクトリではなく/usr/lib64ディレクトリにインストールしようとしているRHELで発生します。

mapserver 6.2.1はautoconfを使用し、--libdirオプションを含みます。 .specファイルで./configureコマンドを変更します。%configure --libdir=$RPM_BUILD_ROOT%{_libdir}

答え2

この問題は特定のディレクトリを生成するインストールコマンドがないために発生しました。以下のインストールコマンドを追加すると正常に作成されました%installrpm

install -m 755 -d $RPM_BUILD_ROOT%{_sysconfdir}/php.d

関連情報