RPM打包es
1.下载rpm-build打包软件以及依赖
yum install -y ruby ruby-devel gcc make rpm-build lrzsz
2.创建打包所需要的目录
mkdir -p ~/rpmbuild/{BUILD,RPMS,SOURCES,SPECS,SRPMS}
3.将所需要的文件放入对应目录下
vim ~/rpmbuild/SPECS/elasticsearch.spec
Name: elasticsearch
Version: 5.6.16
Release: 1%{?dist}
Summary: Elasticsearch search engine
License: Apache-2.0
URL: https://www.elastic.co/
%global debug_package %{nil}
Source0: %{name}-%{version}.tar.gz
Source1: elasticsearch.service
BuildArch: aarch64
Requires: java-1.8.0-openjdk
BuildRequires: java-1.8.0-openjdk-devel
%description
Elasticsearch 5.6.16 packaged for aarch64 (ARM64).
This package is based on the official tar.gz release and is suitable for CentOS/RHEL/Alma/Rocky ARM systems.
%prep
%setup -q
%build
# No compilation needed - Java precompiled distribution.
%install
rm -rf %{buildroot}
# Install main files
mkdir -p %{buildroot}/usr/share/%{name}
cp -a * %{buildroot}/usr/share/%{name}/
# Configs
mkdir -p %{buildroot}/etc/%{name}
cp -a config/* %{buildroot}/etc/%{name}/
# Data & logs
mkdir -p %{buildroot}/var/lib/%{name}
mkdir -p %{buildroot}/var/log/%{name}
# Systemd service
mkdir -p %{buildroot}/usr/lib/systemd/system
install -m 644 %{SOURCE1} %{buildroot}/usr/lib/systemd/system/elasticsearch.service
%post
# Add system user if not exists
if ! id elasticsearch >/dev/null 2>&1; then
useradd -r -s /sbin/nologin -d /var/lib/elasticsearch elasticsearch || true
fi
chown -R elasticsearch:elasticsearch /var/lib/elasticsearch /var/log/elasticsearch /etc/elasticsearch || true
systemctl daemon-reload >/dev/null 2>&1 || true
%preun
if [ "$1" = 0 ]; then
systemctl stop elasticsearch.service >/dev/null 2>&1 || true
systemctl disable elasticsearch.service >/dev/null 2>&1 || true
fi
%postun
systemctl daemon-reload >/dev/null 2>&1 || true
%files
%defattr(-,root,root,-)
%dir /usr/share/elasticsearch
/usr/share/elasticsearch/*
%config(noreplace) /etc/elasticsearch/*
%dir /var/lib/elasticsearch
%dir /var/log/elasticsearch
/usr/lib/systemd/system/elasticsearch.service
%changelog
* Tue Nov 04 2025 ChatGPT <packager@example.com> - 5.6.16-1
- Initial ARM64 RPM packaging
vim ~/rpmbuild/SOURCES/elasticsearch.service
[Unit]
Description=Elasticsearch 5.6.16
Documentation=https://www.elastic.co
Wants=network-online.target
After=network-online.target
[Service]
Type=simple
User=elasticsearch
Group=elasticsearch
Environment=ES_HOME=/usr/share/elasticsearch
Environment=ES_PATH_CONF=/usr/share/elasticsearch
Environment=PID_DIR=/var/run/elasticsearch
Environment=JAVA_HOME=/usr/lib/jvm/jre-1.8.0-openjdk
ExecStart=/usr/share/elasticsearch/bin/elasticsearch \
-p ${PID_DIR}/elasticsearch.pid \
--quiet
LimitNOFILE=65536
Restart=on-failure
TimeoutStopSec=20
WorkingDirectory=/usr/share/elasticsearch
StandardOutput=journal
StandardError=inherit
[Install]
WantedBy=multi-user.target
4.把 elasticsearch-5.6.16.tar.gz 放到 ~/rpmbuild/SOURCES/
5.开始执行打包命令
rpmbuild -ba ~/rpmbuild/SPECS/elasticsearch.spec
6.开始安装
sudo rpm -Uvh elasticsearch-5.6.16-1.aarch64.rpm
sudo systemctl daemon-reload
sudo systemctl enable --now elasticsearch
sudo systemctl status elasticsearch

浙公网安备 33010602011771号