Name: sqs Version: 1.3 Release: 1%{?dist} Summary: File integrity monitor with SHA256 hashing and GDBM cache License: BSD-3-Clause Source0: %{name}-%{version}.tar.gz # No debuginfo/debugsource sub-packages — sources are not installed %global debug_package %{nil} BuildRequires: gcc BuildRequires: make BuildRequires: openssl-devel BuildRequires: gdbm-devel BuildRequires: systemd-rpm-macros Requires: openssl-libs Requires: gdbm # mail command is only needed when mail-to is configured in sqs.mail.conf Recommends: s-nail %description sqs is a file integrity monitor (FIM) that tracks changes to files under configured paths using SHA256 hashes and sub-second mtime comparison. It stores metadata in a GDBM cache (one database per directory) and logs events as JSON. Designed to run periodically via a systemd timer. Results are optionally mailed to an address configured in %{_sysconfdir}/sqs/sqs.mail.conf. %prep %setup -q %build make %{?_smp_mflags} sqs %install install -D -m 755 sqs %{buildroot}%{_sbindir}/sqs install -D -m 755 sqs-run %{buildroot}%{_libexecdir}/sqs/sqs-run install -D -m 644 sqs.conf.sample %{buildroot}%{_sysconfdir}/sqs/sqs.conf install -D -m 644 sqs.mail.conf %{buildroot}%{_sysconfdir}/sqs/sqs.mail.conf install -D -m 644 sqs.service %{buildroot}%{_unitdir}/sqs.service install -D -m 644 sqs.timer %{buildroot}%{_unitdir}/sqs.timer install -D -m 644 sqs.logrotate %{buildroot}%{_sysconfdir}/logrotate.d/sqs install -D -m 644 sqs.8 %{buildroot}%{_mandir}/man8/sqs.8 install -d -m 750 %{buildroot}%{_localstatedir}/cache/sqs install -d -m 750 %{buildroot}%{_localstatedir}/log %post %systemd_post sqs.timer %preun %systemd_preun sqs.timer %postun %systemd_postun_with_restart sqs.timer %files %license LICENSE %doc README.md %{_sbindir}/sqs %dir %{_libexecdir}/sqs %{_libexecdir}/sqs/sqs-run %dir %{_sysconfdir}/sqs %config(noreplace) %{_sysconfdir}/sqs/sqs.conf %config(noreplace) %{_sysconfdir}/sqs/sqs.mail.conf %{_unitdir}/sqs.service %{_unitdir}/sqs.timer %config(noreplace) %{_sysconfdir}/logrotate.d/sqs %dir %attr(750, root, root) %{_localstatedir}/cache/sqs %ghost %{_localstatedir}/log/sqs.log %{_mandir}/man8/sqs.8* %changelog * Sat Mar 07 2026 Raimund Sacherer - 1.3-1 - Add -F text|json output format for -L history; JSON diff uses complete before/after text blocks instead of per-line arrays - Store full SHA256 hash in h: history (was abbreviated) * Sat Mar 07 2026 Raimund Sacherer - 1.2-4 - Add sqs(8) man page * Sat Mar 07 2026 Raimund Sacherer - 1.2-3 - Relicense to BSD-3-Clause; add LICENSE file - Add SPDX license headers to all source files - Update maintainer email to switch1024@gmail.com * Sat Mar 07 2026 Raimund Sacherer - 1.2-2 - Add BuildRequires: systemd-rpm-macros for %%{_unitdir} macro * Tue Mar 03 2026 Raimund Sacherer - 1.2-1 - Reduce peak RSS: disable GDBM mmap (GDBM_NOMMAP), cap GDBM page cache at 1 bucket per handle (GDBM_SETCACHESIZE), limit glibc malloc arenas to 4 (M_ARENA_MAX), reduce worker threads from 8 to 4, reduce DB cache slots from 16 to 8 * Tue Mar 03 2026 Raimund Sacherer - 1.1-1 - Move config to /etc/sqs/ directory - Add sqs.mail.conf and sqs-run helper for optional mail notifications - Add logrotate config (monthly, 24-month retention) - Fix text diff shown on metadata-only changes - Fix mtime_nsec false positives after cache migration - Reduce peak memory usage (flexible MetaNode, smaller slot cache, thread stacks) * Tue Mar 03 2026 Raimund Sacherer - 1.0-1 - Initial package