File xmrig.spec of Package xmrig
Name: xmrig
Version: 6.24.0
Release: 1%{?dist}
Summary: High performance, open source CPU miner for Monero
License: GPLv3+
URL: https://github.com/xmrig/xmrig
Source0: https://github.com/xmrig/xmrig/releases/download/v%{version}/xmrig-%{version}-linux-static-x64.tar.gz
Source1: README.md
Source2: LICENSE
BuildArch: x86_64
BuildRequires: tar
BuildRequires: gzip
# Runtime зависимости
Requires: systemd
Requires(post): shadow
%description
XMRig is a high performance, open source CPU miner for Monero (XMR) and other
cryptonight-based cryptocurrencies. Static binary version for Linux x64.
%prep
%setup -q -n xmrig-%{version}
%build
echo "Using pre-built static binary"
%install
# Создаем директории
install -d -m 0755 %{buildroot}%{_bindir}
install -d -m 0755 %{buildroot}%{_sysconfdir}/xmrig
install -d -m 0755 %{buildroot}%{_datadir}/doc/xmrig
install -d -m 0755 %{buildroot}%{_unitdir}
install -d -m 0755 %{buildroot}%{_sharedstatedir}/xmrig
# Копируем бинарник
install -m 0755 xmrig %{buildroot}%{_bindir}/xmrig
# Копируем конфигурационный файл
if [ -f config.json ]; then
install -m 0644 config.json %{buildroot}%{_sysconfdir}/xmrig/config.json.example
fi
# Копируем документацию из локальных файлов
install -m 0644 %{SOURCE1} %{buildroot}%{_datadir}/doc/xmrig/
install -m 0644 %{SOURCE2} %{buildroot}%{_datadir}/doc/xmrig/
# Создаем systemd юнит
cat > %{buildroot}%{_unitdir}/xmrig.service << 'EOF'
[Unit]
Description=XMRig CPU Miner
After=network.target
Wants=network-online.target
StartLimitIntervalSec=0
[Service]
Type=simple
User=xmrig
Group=xmrig
ExecStart=/usr/bin/xmrig --config=/etc/xmrig/config.json
Restart=always
RestartSec=10
Nice=10
IOSchedulingClass=idle
CPUSchedulingPolicy=idle
# Security hardening
NoNewPrivileges=yes
PrivateTmp=yes
ProtectSystem=strict
ProtectHome=yes
ReadWritePaths=/var/lib/xmrig
[Install]
WantedBy=multi-user.target
EOF
# Создаем конфигурационный файл по умолчанию
cat > %{buildroot}%{_sysconfdir}/xmrig/config.json << 'EOF'
{
"autosave": true,
"cpu": {
"enabled": true,
"max-threads-hint": 75
},
"opencl": false,
"cuda": false,
"pools": [
{
"coin": "monero",
"url": "pool.supportxmr.com:443",
"user": "YOUR_WALLET_ADDRESS",
"pass": "x",
"tls": true,
"keepalive": true,
"nicehash": false
}
]
}
EOF
chmod 0640 %{buildroot}%{_sysconfdir}/xmrig/config.json
# Устанавливаем правильные владельцев в buildroot (символические ID)
chown 0:0 %{buildroot}%{_sysconfdir}/xmrig/config.json
chown 0:0 %{buildroot}%{_sysconfdir}/xmrig/config.json.example
%pre
getent group xmrig >/dev/null 2>&1 || groupadd -r xmrig
getent passwd xmrig >/dev/null 2>&1 || \
useradd -r -g xmrig -d /var/lib/xmrig -s /sbin/nologin \
-c "XMRig Miner" xmrig
%post
# Создаем директорию для данных
mkdir -p /var/lib/xmrig
chown xmrig:xmrig /var/lib/xmrig
chmod 750 /var/lib/xmrig
# Настраиваем права доступа на конфигурационные файлы
if [ -f /etc/xmrig/config.json ]; then
chown root:xmrig /etc/xmrig/config.json 2>/dev/null || true
chmod 0640 /etc/xmrig/config.json 2>/dev/null || true
fi
if [ -f /etc/xmrig/config.json.example ]; then
chown root:xmrig /etc/xmrig/config.json.example 2>/dev/null || true
chmod 0640 /etc/xmrig/config.json.example 2>/dev/null || true
fi
# Обновляем systemd
systemctl daemon-reload >/dev/null 2>&1 || :
%preun
if [ "$1" = "0" ]; then
# Удаление пакета
systemctl stop xmrig.service >/dev/null 2>&1 || :
systemctl disable xmrig.service >/dev/null 2>&1 || :
fi
%postun
if [ "$1" = "0" ]; then
# Удаление пакета - очищаем директории
rm -rf /var/lib/xmrig 2>/dev/null || :
systemctl daemon-reload >/dev/null 2>&1 || :
fi
%files
%defattr(-,root,root,-)
%{_bindir}/xmrig
%{_unitdir}/xmrig.service
%config(noreplace) %{_sysconfdir}/xmrig/config.json
%config(noreplace) %{_sysconfdir}/xmrig/config.json.example
%doc %{_datadir}/doc/xmrig/*
%dir %{_sysconfdir}/xmrig
%dir %attr(0750, xmrig, xmrig) %{_sharedstatedir}/xmrig
%changelog
* Wed Dec 10 2025 Your Name <your.email@example.com> - 6.24.0-1
- Fixed user/group creation issues in build environment
- Added %defattr for consistent file permissions
- Fixed directory ownership issues
- Moved user creation to %pre section