現在、Oracle Linux 6 システム (本番環境と同じ) で DRBD 9 (drbd-9.0.21-1 および drbd-utils-9.13.0) をテストしようとしていますが、外部ネットワークから分離されているため、yum の使用は問題外です (また、実行中の本番環境で使用されるため、ディストリビューションをアップグレードすることもできません)。現在、tarball を使用してビルドしています。
ドキュメント必要なパッケージとバージョンについては何も言及されていないので、実行しmake
て必要なrpmを取得し、このCentos 6ガイドそしてこのCentos 7ガイドパッケージ。
最後に、私はこのCentos 6ガイド(DRBDのバージョンは8.4だとはわかっていますが、私のケースに関する他のガイドがないので、これで我慢しなければなりません。このCentos 7ガイドかなり似ていますが、drbdmanage がないので (最近 linstor に置き換えられました)、ビルドする必要があります。
make kmp-rpm
DRBD9 と./configure
drbd-utils は問題なく実行できますが、 make rpm
dbrd-utils を実行すると、次のエラーが発生します (root として実行しています)。
RPM build errors:
%defattr doesn't define directory mode so file mode defined in %defattr is used for directory: /root/rpmbuild/BUILDROOT/drbd-9.13.0-1.el6.x86_64/lib/drbd
File not found: /root/rpmbuild/BUILDROOT/drbd-9.13.0-1.el6.x86_64/usr/sbin/drbdmon
%defattr doesn't define directory mode so file mode defined in %defattr is used for directory: /root/rpmbuild/BUILDROOT/drbd-9.13.0-1.el6.x86_64/usr/lib/drbd
%defattr doesn't define directory mode so file mode defined in %defattr is used for directory: /root/rpmbuild/BUILDROOT/drbd-9.13.0-1.el6.x86_64/var/lib/drbd
%defattr doesn't define directory mode so file mode defined in %defattr is used for directory: /root/rpmbuild/BUILDROOT/drbd-9.13.0-1.el6.x86_64/var/run/drbd
File not found by glob: /root/rpmbuild/BUILDROOT/drbd-9.13.0-1.el6.x86_64/usr/share/man/man8/drbdmon-*
make: *** [rpm] Error 1
# ls /root/rpmbuild/BUILDROOT/drbd-9.13.0-1.el6.x86_64/lib/
drbd udev
# ls /root/rpmbuild/BUILDROOT/drbd-9.13.0-1.el6.x86_64/usr/sbin/
drbdadm drbdmeta drbdsetup
# ls /root/rpmbuild/BUILDROOT/drbd-9.13.0-1.el6.x86_64/usr/lib/
debug drbd ocf
# ls /root/rpmbuild/BUILDROOT/drbd-9.13.0-1.el6.x86_64/var/lib/
drbd
# ls /root/rpmbuild/BUILDROOT/drbd-9.13.0-1.el6.x86_64/var/run/
drbd
# ls /root/rpmbuild/BUILDROOT/drbd-9.13.0-1.el6.x86_64/usr/share/man/man8/
drbd-8.3.8.gz drbdadm-8.4.8.gz drbdmeta-8.3.8.gz drbdsetup-8.4.8.gz
drbd-8.4.8.gz drbdadm-9.0.8.gz drbdmeta-8.4.8.gz drbdsetup-9.0.8.gz
drbd-9.0.8.gz drbddisk-8.3.8.gz drbdmeta-9.0.8.gz
drbdadm-8.3.8.gz drbddisk-8.4.8.gz drbdsetup-8.3.8.gz
私の理解では、drbdmon が見つかりませんでした。これを解決する方法はありますか? 何か見落としているのでしょうか、それとも EL6 で DRBD 9 をビルドできないのでしょうか?
答え1
ようやく、新しいバージョンの gcc を使用して drbd-utils をビルドできるようになりました。Oracle Linux に組み込まれている gcc バージョンは 4.4 で、C++11 は含まれていません。