gpt4 book ai didi

centos - 无法从 src 构建 rpm

转载 作者:行者123 更新时间:2023-12-04 19:33:15 25 4
gpt4 key购买 nike

我需要通过对一些静态文件的更改来重建 rabbitmq-server-3.1.5。
但在此之前,我想确定是否可以在不进行更改的情况下重建 rpm,并遇到以下问题。
我刚刚安装了 source-rpm 并编辑了 SPEC 文件并将版本更改为下一个次要编号,然后运行命令

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}

我收到以下错误,
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)
[david@thetemplate SPECS]$

而我在其他更高版本的 Rabbitmq-server 上执行这些步骤时没有遇到这个问题,而且我也成功地重建了 rpm。我不知道为什么会发生这种情况,而且我对这类构建也很陌生。

需要一些专家的建议来解决这个问题。

最佳答案

这是错误输出中的重要行:

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

在 Erlang/OTP 17.0 中,类型 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。

关于centos - 无法从 src 构建 rpm,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37135785/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com