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
posted @ 2025-11-07 11:23  caibutou  阅读(0)  评论(0)    收藏  举报