Apt-dater-host auf alten Debian-Versionen

Aus Knowledgebase
Zur Navigation springen Zur Suche springen

Apt-dater ist ein praktisches Tool zum Verwalten von Debian Installationen. Auf den Clients wird ein Perl-Script benötigt, apt-dater-host mitsamt seinen notwendigen Modulen.

Aufgabenstellung war, zwei historische Systeme, Debian Woody (3.0) und Sarge (3.1) in apt-dater einzubinden.

Einfach installieren
Schlägt fehl, Paket gab es damals schlicht noch nicht.
Fertiges Paket von Debian 10 kopieren, installieren mit dpkg -i
Schlägt fehl: Kompressionsmethode xz nicht bekannt.
Kopieren der fertigen Dateien (ist ja nur Text).
tar cvf /tmp/adh.tar /etc/apt/apt.conf.d/99apt-dater-host_periodic /etc/apt-dater-host.conf /usr/bin/apt-dater-host /usr/share/doc/apt-dater-host /usr/share/man/man1/apt-dater-host.1.gz; scp /tmp/adh.tar …
Auspacken auf der Zielmaschine mit cd /; tar xvf /tmp/adh.tar.
Testlauf fällt auf die Nase, Perl-Modul für apt-handling fehlt.
apt-get install libapt-pkg-perl
Testlauf fällt auf die Nase, weiteres Perl-Modul für bin-ich-Blech-oder-VM fehlt.
Gibt's nicht als Package, Funktionalität aus Script entfernen:
--- /usr/bin/apt-dater-host	2018-01-24 15:08:04.000000000 +0100
+++ apt-dater-host.sauber	2020-06-01 21:39:34.008222165 +0200
@@ -28,7 +28,6 @@
 use AptPkg::Config '$_config';
 use AptPkg::System '$_system';
 use AptPkg::Cache;
-use ImVirt;
 use strict;
 use warnings;
 
@@ -125,10 +124,6 @@
     }
 }
 
-sub get_virt() {
-    return imv_get(IMV_PROB_DEFAULT);
-}
-
 sub get_uname() {
     my $kernel;
     my $machine;
@@ -168,9 +163,6 @@
     }
     print "LSBREL: $lsb{'Distributor ID'}|$lsb{'Release'}|$lsb{'Codename'}\n";
 
-    # retrieve virtualization informations
-    print "VIRT: ".&get_virt."\n";
-
     # retrieve uname informations
     print "UNAME: ".&get_uname."\n";
Testlauf fällt nur bei Woody auf die Nase, da kein dpkg-query existiert.
Dumme Nachbildung von dpkg-query in /usr/local/bin
#!/bin/bash

# Satisfy apt-dater for running with Debian Woody

TMPFILE="/tmp/dpkg-query.$$"
touch ${TMPFILE}
chmod 600 ${TMPFILE}

for PKG in `dpkg -l |sed -n '6,$p' |awk '{print $2}'`; do
	dpkg -s ${PKG} > ${TMPFILE}
	VERSION="`grep ^Version: ${TMPFILE} |sed 's/^Version: //'`"
	STATUS="`grep ^Status: ${TMPFILE} |sed 's/^Status: //'`"
	printf "%s\t%s\t%s\n" "${PKG}" "${VERSION}" "${STATUS}"
done

rm -f ${TMPFILE}
Testlauf
OK