Hallo,
ich fühle mich in dieser Rubrik etwas OT, habe aber keine bessere gefunden...
Mein Problem:
Ich möchte gerne, dass De-/Installationen (z.b. apt-get install irgendwas) in einem Logfile (z.b. /var/log/apt.log) mitgeschnitten werden.
Momentan tauchen diese Aktionen in keinem Log auf.
Grüße,
a²
Logging von hinzugefügten/entfernten Paketen
hmm.. wie wäre es z.B. mit tee?
Dann installierst du z.B. so:
Hab's aber nicht getestet, also vorsicht!
Code: Alles auswählen
$ man tee
Code: Alles auswählen
# apt-get install a-new-package | tee /var/log/apt-get.log
Benutze einfach statt apt-get aptitude. Die Syntax ist die selbe (aptitude install foobar, z.B.), als Bonus hast du auch noch einen dselect-ersatz, wenn du aptitude ohne parameter startest. Desweiteren merkt aptitude sich, welche Pakete nur aufgrund von abhängigkeiten installiert wurden und löscht sie gegebenenfalls wieder.
dann kannst du unter /var/log/aptitude dir alle Aktionen ansehen.
dann kannst du unter /var/log/aptitude dir alle Aktionen ansehen.
Ich habe mir ein Apt-Logging-Script schrieben, welches den "Pre-Install-Pkgs" -Event verarbeitet. Neue oder upgegradete Pakete werden daher eingetragen, nicht aber deinstallierte Pakete.
/etc/apt/apt.conf.d/99log:
/usr/local/sbin/apt-log:
Code: Alles auswählen
root@csxgen4:~# tail /var/log/apt.log
2005-01-04 10:34 install: cupsys 1.1.22-8_i386
2005-01-04 10:45 install: configure-debian 0.9.3_all
Code: Alles auswählen
DPkg::Pre-Install-Pkgs { "/usr/local/sbin/apt-log install"; };
Code: Alles auswählen
#!/usr/bin/perl
use POSIX qw(strftime);
die "usage $0: install [logfile]" if scalar(@ARGV)<1 || scalar(@ARGV)>2;
die "usage $0: install [logfile]" if $ARGV[0] != "install";
my $op = $ARGV[0];
my $logfile = scalar(@ARGV)==2 ? $ARGV[1] : "/var/log/apt.log";
my $LOGFILE;
open($LOGFILE,">>",$logfile) or die "Can't open logfile \"$logfile\"";
while (<STDIN>) {
chomp;
my $package = $_;
$package =~ s/^.*\///;
$package =~ s/\.deb.*$//;
$package =~ s/\_/ /;
print $LOGFILE strftime("%Y-%m-%d %H:%M ",localtime time),$ARGV[0],": ",$package,"\n";
}
close($LOGFILE);