2016-05-10 18 views
0

静的ファイルの変更を加えてrabbitmq-server-3.1.5を再構築する必要があります。 しかし、それを行う前に、最初に変更を加えずにrpmを再構築できるかどうかを確かめ、以下の問題にぶつかりました。 私はちょうど私が以下だソースRPMをインストールし、SPECファイルを編集して、次のマイナー番号にバージョンを変更し、srcからrpmを構築できません

以下
rpmbuild -ba rabbitmq-server.spec 

はSPECファイルでコマンドを実行し、

%define debug_package %{nil} 

Name: rabbitmq-server 
Version: 3.1.5 
Release: 2%{?dist} 
License: MPLv1.1 and MIT and ASL 2.0 and BSD 
Group: %{group_tag} 
#Source: http://www.rabbitmq.com/releases/rabbitmq-server/v%{version}/%{name}-%{version}.tar.gz 
Source:rabbitmq-server-3.1.5.tar.gz 
Source1: rabbitmq-server.init 
Source2: rabbitmq-script-wrapper 
Source3: rabbitmq-server.logrotate 
Source4: rabbitmq-server.ocf 
URL: http://www.rabbitmq.com/ 
BuildArch: noarch 
BuildRequires: erlang >= R12B-3, python-simplejson, xmlto, libxslt 
Requires: erlang >= R12B-3, logrotate 
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-%{_arch}-root 
Summary: The RabbitMQ server 
Requires(post): chkconfig initscripts 
Requires(pre): chkconfig initscripts 

%description 
RabbitMQ is an implementation of AMQP, the emerging standard for high 
performance enterprise messaging. The RabbitMQ server is a robust and 
scalable implementation of an AMQP broker. 

# We want to install into /usr/lib, even on 64-bit platforms 
%define _rabbit_libdir %{_exec_prefix}/lib/rabbitmq 
%define _rabbit_erllibdir %{_rabbit_libdir}/lib/rabbitmq_server-%{version} 
%define _rabbit_wrapper %{_builddir}/`basename %{S:2}` 
%define _rabbit_server_ocf %{_builddir}/`basename %{S:4}` 
%define _plugins_state_dir %{_localstatedir}/lib/rabbitmq/plugins 


%define _maindir %{buildroot}%{_rabbit_erllibdir} 


%prep 
%setup -q 

%build 
cp %{S:2} %{_rabbit_wrapper} 
cp %{S:4} %{_rabbit_server_ocf} 
make %{?_smp_mflags} 

%install 
rm -rf %{buildroot} 

make install TARGET_DIR=%{_maindir} \ 
      SBIN_DIR=%{buildroot}%{_rabbit_libdir}/bin \ 
      MAN_DIR=%{buildroot}%{_mandir} 

mkdir -p %{buildroot}%{_localstatedir}/lib/rabbitmq/mnesia 
mkdir -p %{buildroot}%{_localstatedir}/log/rabbitmq 

#Copy all necessary lib files etc. 
install -p -D -m 0755 %{S:1} %{buildroot}%{_initrddir}/rabbitmq-server 
install -p -D -m 0755 %{_rabbit_wrapper} %{buildroot}%{_sbindir}/rabbitmqctl 
install -p -D -m 0755 %{_rabbit_wrapper} %{buildroot}%{_sbindir}/rabbitmq-server 
install -p -D -m 0755 %{_rabbit_wrapper} %{buildroot}%{_sbindir}/rabbitmq-plugins 
install -p -D -m 0755 %{_rabbit_server_ocf} %{buildroot}%{_exec_prefix}/lib/ocf/resource.d/rabbitmq/rabbitmq-server 

install -p -D -m 0644 %{S:3} %{buildroot}%{_sysconfdir}/logrotate.d/rabbitmq-server 

mkdir -p %{buildroot}%{_sysconfdir}/rabbitmq 

rm %{_maindir}/LICENSE %{_maindir}/LICENSE-MPL-RabbitMQ %{_maindir}/INSTALL 

#Build the list of files 
echo '%defattr(-,root,root, -)' >%{_builddir}/%{name}.files 
find %{buildroot} -path %{buildroot}%{_sysconfdir} -prune -o '!' -type d -printf "/%%P\n" >>%{_builddir}/%{name}.files 

%pre 

if [ $1 -gt 1 ]; then 
    # Upgrade - stop previous instance of rabbitmq-server init.d script 
    /sbin/service rabbitmq-server stop 
fi 

# create rabbitmq group 
if ! getent group rabbitmq >/dev/null; then 
     groupadd -r rabbitmq 
fi# create rabbitmq user 
if ! getent passwd rabbitmq >/dev/null; then 
     useradd -r -g rabbitmq -d %{_localstatedir}/lib/rabbitmq rabbitmq \ 
      -c "RabbitMQ messaging server" 
fi 

%post 
/sbin/chkconfig --add %{name} 
if [ -f %{_sysconfdir}/rabbitmq/rabbitmq.conf ] && [ ! -f %{_sysconfdir}/rabbitmq/rabbitmq-env.conf ]; then 
    mv %{_sysconfdir}/rabbitmq/rabbitmq.conf %{_sysconfdir}/rabbitmq/rabbitmq-env.conf 
fi 

%preun 
if [ $1 = 0 ]; then 
    #Complete uninstall 
    /sbin/service rabbitmq-server stop 
    /sbin/chkconfig --del rabbitmq-server 

    # We do not remove /var/log and /var/lib directories 
    # Leave rabbitmq user and group 
fi 

# Clean out plugin activation state, both on uninstall and upgrade 
rm -rf %{_plugins_state_dir} 
for ext in rel script boot ; do 
    rm -f %{_rabbit_erllibdir}/ebin/rabbit.$ext 
done 

%files -f ../%{name}.files 
%defattr(-,root,root,-) 
%attr(0755, rabbitmq, rabbitmq) %dir %{_localstatedir}/lib/rabbitmq 
%attr(0755, rabbitmq, rabbitmq) %dir %{_localstatedir}/log/rabbitmq 
%dir %{_sysconfdir}/rabbitmq 
%{_initrddir}/rabbitmq-server 
%config(noreplace) %{_sysconfdir}/logrotate.d/rabbitmq-server 
%doc LICENSE* 

%clean 
rm -rf %{buildroot} 

RabbitMQのサーバの他の上位バージョンにこれらの手順を実行中にエラーが、

escript generate_app ebin/rabbit_app.in ebin/rabbit.app src 
erlc -I include -o ebin -Wall -v +debug_info -Duse_specs -pa ebin src/app_utils.erl 
erlc -I include -o ebin -Wall -v +debug_info -Duse_specs -pa ebin src/gen_server2.erl 
erlc -I include -o ebin -Wall -v +debug_info -Duse_specs -pa ebin src/credit_flow.erl 
src/credit_flow.erl:40: Warning: opaque type bump_msg() is not exported 
erlc -I include -o ebin -Wall -v +debug_info -Duse_specs -pa ebin src/delegate_sup.erl 
src/gen_server2.erl:526: Warning: erlang:now/0: Deprecated BIF. See the "Time and Time Correction in Erlang" chapter of the ERTS User's Guide for more information. 
src/gen_server2.erl:590: Warning: erlang:now/0: Deprecated BIF. See the "Time and Time Correction in Erlang" chapter of the ERTS User's Guide for more information. 
src/gen_server2.erl:598: Warning: erlang:now/0: Deprecated BIF. See the "Time and Time Correction in Erlang" chapter of the ERTS User's Guide for more information. 
erlc -I include -o ebin -Wall -v +debug_info -Duse_specs -pa ebin src/dtree.erl 
erlc -I include -o ebin -Wall -v +debug_info -Duse_specs -pa ebin src/file_handle_cache.erl 
src/dtree.erl:44: type gb_tree() undefined 
make: *** [ebin/dtree.beam] Error 1 
make: *** Waiting for unfinished jobs.... 
src/file_handle_cache.erl:476: Warning: erlang:now/0: Deprecated BIF. See the "Time and Time Correction in Erlang" chapter of the ERTS User's Guide for more information. 
src/file_handle_cache.erl:571: Warning: erlang:now/0: Deprecated BIF. See the "Time and Time Correction in Erlang" chapter of the ERTS User's Guide for more information. 
src/file_handle_cache.erl:605: Warning: erlang:now/0: Deprecated BIF. See the "Time and Time Correction in Erlang" chapter of the ERTS User's Guide for more information. 
src/file_handle_cache.erl:640: Warning: erlang:now/0: Deprecated BIF. See the "Time and Time Correction in Erlang" chapter of the ERTS User's Guide for more information. 
src/file_handle_cache.erl:1139: Warning: erlang:now/0: Deprecated BIF. See the "Time and Time Correction in Erlang" chapter of the ERTS User's Guide for more information. 
error: Bad exit status from /var/tmp/rpm-tmp.FjNb8Z (%build) 


RPM build errors: 
    Bad exit status from /var/tmp/rpm-tmp.FjNb8Z (%build) 
[[email protected] SPECS]$ 

私はこの問題に直面していなかったのに対し、私は成功しすぎてrpmを再構築。なぜこのようなことが起こっているのかわかりません。また、私はこれらのビルドにはとても新しいです。

この問題を解決するには、専門家の助言が必要です。

答えて

3

これは、エラー出力で重要なラインです:アーラン/ OTP 17.0で

src/dtree.erl:44: type gb_tree() undefined 

、タイプgb_tree()は廃止されました、そしてタイプgb_trees:tree()は、それを置き換えるために導入されました。 gb_tree()はErlang/OTP 18.0で最終的に削除されました。

RabbitMQ 3.4.0は、より新しいタイプを使用するようにタイプ仕様を変更しました。したがって、Erlang/OTP 18で構築できる最も早いRabbitMQバージョンです。ここではthe commit where the change was madeです。

この問題を解決するには、新しいバージョンのRabbitMQまたは古いバージョンのErlang/OTPを使用してください。

+0

"yum install"で古いバージョンのerlang(R14B02)をインストールしましたが、rpmを再構築しようとしましたが、エラーが認識されませんでした。それは....... [root @ thetemplate SPECS]#rpmbuild -ba rabbitmq-server.spec エラー:ビルドの依存関係に失敗しました: erlang> = R12B-3がrabbitmq-server-3.1.5-2で必要です.el6.noarch –

+0

いいえ、私は恐れています。私はCentosについて何も知らない。それは古いErlangのパッケージ名が異なっているか、またはそのようなものに終わるように聞こえます... – legoscia

+0

あなたが再インストールしたErlangはシステムパスに表示されていますか?例えば。 erlは何を返しますか? Erlangを検索するためにインストールされたパッケージを一覧表示できますか? 'yum list | grep -i erlang'? 'erl'を実行するとどうなりますか? ErlangシェルのショーでErlang VMを起動しますか? – Amiramix

関連する問題