[packages/util-linux] - package lastlog2 components (as lastlog2-*, pam-pam_lastlog2 packages)

qboosh qboosh at pld-linux.org
Wed May 22 21:54:44 CEST 2024


commit 88c0352e615e730924bae188d61a3eae9fd41a7d
Author: Jakub Bogusz <qboosh at pld-linux.org>
Date:   Wed May 22 21:47:42 2024 +0200

    - package lastlog2 components (as lastlog2-*, pam-pam_lastlog2 packages)

 util-linux.spec | 144 ++++++++++++++++++++++++++++++++++++++++++++++++++++++--
 1 file changed, 140 insertions(+), 4 deletions(-)
---
diff --git a/util-linux.spec b/util-linux.spec
index 9b3c8c9..afc089d 100644
--- a/util-linux.spec
+++ b/util-linux.spec
@@ -17,7 +17,7 @@
 %bcond_without	selinux		# SELinux support
 %bcond_without	su		# su/runuser programs
 %bcond_without	systemd		# systemd support
-%bcond_with	lastlog2	# y2038 safe lastlog
+%bcond_without	lastlog2	# y2038 safe lastlog
 
 %define		pam_ver 1:1.1.8-5
 
@@ -63,6 +63,10 @@ BuildRequires:	automake >= 1:1.10
 BuildRequires:	gettext-tools >= 0.21
 # for fallocate
 BuildRequires:	glibc-devel >= 6:2.11
+%if %{with lastlog2}
+# _TIME_BITS=64
+BuildRequires:	glibc-devel >= 6:2.34
+%endif
 %if %{with apidocs}
 BuildRequires:	gtk-doc >= 1.10
 BuildRequires:	gtk-doc-automake >= 1.10
@@ -88,7 +92,7 @@ BuildRequires:	rpm-build >= 4.6
 BuildRequires:	rpmbuild(macros) >= 1.752
 BuildRequires:	ruby-asciidoctor
 BuildRequires:	sed >= 4.0
-%{?with_lastlog2:BuildRequires:	sqlite3-devel}
+%{?with_lastlog2:BuildRequires:	sqlite3-devel >= 3}
 %{?with_systemd:BuildRequires:	systemd-devel >= 1:209}
 BuildRequires:	tar >= 1:1.22
 BuildRequires:	udev-devel
@@ -764,6 +768,97 @@ libsmartcols API documentation.
 %description -n libsmartcols-apidocs -l pl.UTF-8
 Dokumentacja API libsmartcols.
 
+%package -n lastlog2
+Summary:	Y2038 safe version of lastlog
+Summary(pl.UTF-8):	Wersja usługi lastlog bezpieczna pod kątem Y2038
+Group:		Libraries
+
+%description -n lastlog2
+The standard /var/log/lastlog implementation using lastlog.h from
+glibc uses a 32bit time_t in struct lastlog on bi-arch systems like
+x86-64 (so which can execute 64bit and 32bit binaries). So even if you
+have a pure 64bit system, on many architectures using glibc you have a
+Y2038 problem.
+
+Additional, /var/log/lastlog can become really huge if there are big
+UIDs in use on the system. Since it is a sparse file, this is normally
+not a problem, but depending on the filesystem or the tools used for
+backup, this can become a real problem.
+
+Since there are only few applications which really support lastlog,
+the data is also not always correct.
+
+lastlog2 tries to solve this problems:
+- It's using sqlite3 as database backend.
+- Data is only collected via a PAM module, so that every tools can
+  make use of it, without modifying existing packages.
+- The output is as compatible as possible with the old lastlog
+  implementation.
+- The old /var/log/lastlog file can be imported into the new database.
+- The size of the database depends on the amount of users, not how big
+  the biggest UID is.
+
+%description -n lastlog2 -l pl.UTF-8
+Standardowa implementacja /var/log/lastlog z użyciem lastlog.h z glibc
+wykorzystuje 32-bitowy time_t w strukturze lastlog na systemach
+wieloarchitekturowych, takich jak x86-64 (który może wykonywać binaria
+64- i 32-bitowe). Przez to nawet na czysto 64-bitowym systemie, na
+wielu architekturach wykorzystujących glibc można napotkać problem
+roku 2038.
+
+Ponadto /var/log/lastlog może stać się bardzo duży, jeśli w systemie
+używane są duże UID-y. Ponieważ jest to plik rzadki, zwykle nie jest
+to problem, ale może być w zależności od używanego systemu plików i
+narzędzi do wykonywania kopii zapasowych.
+
+Ponieważ tylko kilka aplikacji tak naprawdę obsługuje lastlog, dane
+nie muszą być zawsze poprawne.
+
+lastlog2 próbuje rozwiązać te problemy:
+- wykorzystuje sqlite3 jako backend bazy danych
+- dane są zbierane tylko przez moduł PAM, więc wszystkie narzędzia
+  mogą go używać bez dodatkowych modyfikacji
+- wyjście jest zgodne ze starą implementacją lastlog na ile to możliwe
+- stary plik /var/log/lastlog można zaimportować do nowej bazy danych
+- rozmiar bazy danych zależy od liczby użytkowników, a nie najwyższej
+  wartości UID-a
+
+%package -n lastlog2-devel
+Summary:	Header files for lastlog2 library
+Summary(pl.UTF-8):	Pliki nagłówkowe biblioteki lastlog2
+Group:		Development/Libraries
+Requires:	lastlog2 = %{version}-%{release}
+
+%description -n lastlog2-devel
+Header files for lastlog2 library.
+
+%description -n lastlog2-devel -l pl.UTF-8
+Pliki nagłówkowe biblioteki lastlog2.
+
+%package -n lastlog2-static
+Summary:	Static lastlog2 library
+Summary(pl.UTF-8):	Statyczna biblioteka lastlog2
+Group:		Development/Libraries
+Requires:	lastlog2-devel = %{version}-%{release}
+
+%description -n lastlog2-static
+Static lastlog2 library.
+
+%description -n lastlog2-static -l pl.UTF-8
+Statyczna biblioteka lastlog2.
+
+%package -n pam-pam_lastlog2
+Summary:	PAM module to display date of last login
+Summary(pl.UTF-8):	Moduł PAM do wyświetlania daty ostatniego logowania
+Group:		Base
+Requires:	lastlog2 = %{version}-%{release}
+
+%description -n pam-pam_lastlog2
+PAM module to display date of last login.
+
+%description -n pam-pam_lastlog2 -l pl.UTF-8
+Moduł PAM do wyświetlania daty ostatniego logowania.
+
 %package initrd
 Summary:	blkid - initrd version
 Summary(pl.UTF-8):	blkid - wersja dla initrd
@@ -956,7 +1051,8 @@ export CPPFLAGS="%{rpmcppflags} -I/usr/include/ncurses -DHAVE_LSEEK64_PROTOTYPE
 	--with-readline \
 	%{!?with_systemd:--without-systemd}
 
-%{__make}
+%{__make} \
+	securelibdir=/%{_lib}/security
 
 %install
 rm -rf $RPM_BUILD_ROOT
@@ -968,7 +1064,8 @@ install -d $RPM_BUILD_ROOT%{dietlibdir}
 %endif
 
 %{__make} -j1 install \
-	DESTDIR=$RPM_BUILD_ROOT
+	DESTDIR=$RPM_BUILD_ROOT \
+	securelibdir=/%{_lib}/security
 
 %{__mv} $RPM_BUILD_ROOT%{_sbindir}/{addpart,delpart,partx} $RPM_BUILD_ROOT/sbin
 
@@ -1043,6 +1140,13 @@ done
 %{__rm} $RPM_BUILD_ROOT%{_docdir}/%{name}/getopt-example.{bash,tcsh}
 %endif
 
+%if %{with lastlog2}
+install -d $RPM_BUILD_ROOT/var/lib/lastlog
+:> $RPM_BUILD_ROOT/var/lib/lastlog/lastlog2.db
+%{__rm} $RPM_BUILD_ROOT%{_libdir}/liblastlog2.la
+%{__rm} $RPM_BUILD_ROOT/%{_lib}/security/pam_lastlog2.la
+%endif
+
 %if %{with initrd}
 install -d $RPM_BUILD_ROOT%{_libdir}/initrd
 install -p initrd/bin/* $RPM_BUILD_ROOT%{_libdir}/initrd
@@ -1112,6 +1216,9 @@ fi
 %post	-n libsmartcols -p /sbin/ldconfig
 %postun -n libsmartcols -p /sbin/ldconfig
 
+%post	-n lastlog2 -p /sbin/ldconfig
+%postun -n lastlog2 -p /sbin/ldconfig
+
 %files -f %{name}.lang
 %defattr(644,root,root,755)
 %doc AUTHORS ChangeLog NEWS README README.licensing Documentation misc-utils/getopt-example.{bash,tcsh}
@@ -2426,6 +2533,35 @@ fi
 %{_gtkdocdir}/libsmartcols
 %endif
 
+%files -n lastlog2
+%defattr(644,root,root,755)
+%attr(755,root,root) %{_bindir}/lastlog2
+%attr(755,root,root) %{_libdir}/liblastlog2.so.*.*.*
+%attr(755,root,root) %ghost %{_libdir}/liblastlog2.so.2
+%{bash_compdir}/lastlog2
+%{_mandir}/man8/lastlog2.8*
+%{systemdunitdir}/lastlog2-import.service
+%{systemdtmpfilesdir}/lastlog2-tmpfiles.conf
+%dir /var/lib/lastlog
+%ghost /var/lib/lastlog/lastlog2.db
+
+%files -n lastlog2-devel
+%defattr(644,root,root,755)
+%attr(755,root,root) %{_libdir}/liblastlog2.so
+%{_includedir}/liblastlog2
+%{_pkgconfigdir}/lastlog2.pc
+%{_mandir}/man3/lastlog2.3*
+%{_mandir}/man3/ll2_*.3*
+
+%files -n lastlog2-static
+%defattr(644,root,root,755)
+%{_libdir}/liblastlog2.a
+
+%files -n pam-pam_lastlog2
+%defattr(644,root,root,755)
+%attr(755,root,root) /%{_lib}/security/pam_lastlog2.so
+%{_mandir}/man8/pam_lastlog2.8*
+
 %if %{with initrd}
 %files initrd
 %defattr(644,root,root,755)
================================================================

---- gitweb:

http://git.pld-linux.org/gitweb.cgi/packages/util-linux.git/commitdiff/88c0352e615e730924bae188d61a3eae9fd41a7d



More information about the pld-cvs-commit mailing list