The following commit has been merged in the master branch:
commit 9fac3bb4985e11a54b3192742149c34f444c3997
Author: Raphael Hertzog <[email protected]>
Date: Sat Feb 21 18:40:18 2009 +0100
update-alternatives: add logging to /var/log/dpkg.log
Add logging statements in update-alternatives for all calls that can
modify the status of the link group. Also log explicitely alternative
removal, auto-reparation and update. Closes: #445270
diff --git a/ChangeLog b/ChangeLog
index f8dd03e..59f5a57 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,10 @@
2009-02-22 Raphael Hertzog <[email protected]>
+ * scripts/update-alternatives.pl: Add logging to
+ /var/log/dpkg.log.
+
+2009-02-22 Raphael Hertzog <[email protected]>
+
* man/update-alternatives.8: The vocabulary used was misleading
and not really uniform. Try to standardize and make it match with
the vocabulary used in the source code too.
diff --git a/debian/changelog b/debian/changelog
index 06275f4..49d0f70 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -156,6 +156,7 @@ dpkg (1.15.0) UNRELEASED; urgency=low
* Rewrite update-alternatives (so that we can understand it again) and
implement new features on top of it:
- the --config output is now sorted. Closes: #437060
+ - it now logs information to /var/log/dpkg.log. Closes: #445270
[ Pierre Habouzit ]
* Add a --query option to update-alternatives. Closes: #336091, #441904
diff --git a/scripts/update-alternatives.pl b/scripts/update-alternatives.pl
index dd98260..5076d84 100755
--- a/scripts/update-alternatives.pl
+++ b/scripts/update-alternatives.pl
@@ -32,6 +32,7 @@ $| = 1;
# Main program
#
+my @COPY_ARGV = @ARGV;
while (@ARGV) {
$_ = shift(@ARGV);
last if m/^--$/;
@@ -136,6 +137,7 @@ if ($action eq 'display') {
}
# Actions below might modify the system
+log_msg("run with @COPY_ARGV");
my $current_choice = '';
if ($alternative->has_current_link()) {
@@ -245,13 +247,15 @@ if ($action eq 'set') {
# No choice left, remove everything
if (not scalar($alternative->choices())) {
+ log_msg("link group " . $alternative->name() . " fully removed");
$alternative->remove();
exit 0;
}
# New choice wanted
-#print "NEW: $new_choice, was $current_choice\n";
if (defined($new_choice) and ($current_choice ne $new_choice)) {
+ log_msg("link group " . $alternative->name() .
+ " updated to point to " . $new_choice);
printf _g("Using '%s' to provide '%s' in %s.") . "\n", $new_choice,
$alternative->name(),
($alternative->status() eq "auto" ? _g("auto mode") : _g("manual
mode"))
@@ -259,6 +263,7 @@ if (defined($new_choice) and ($current_choice ne
$new_choice)) {
$alternative->prepare_install($new_choice);
} elsif ($alternative->is_broken()) {
# TODO: warn & log
+ log_msg("auto-repair link group " . $alternative->name());
$alternative->prepare_install($current_choice) if $current_choice;
}
@@ -350,6 +355,24 @@ sub set_action {
$action = $value;
}
+{
+ my $fh_log;
+ sub log_msg {
+ my ($msg) = @_;
+ # XXX: the C rewrite must use the std function to get the
+ # filename from /etc/dpkg/dpkg.cfg or from command line
+ if (!defined($fh_log) and -w "/var/log/dpkg.log") {
+ open($fh_log, ">>", "/var/log/dpkg.log") ||
+ quit(_g("Can't append to %s"), "/var/log/dpkg.log");
+ }
+ if (defined($fh_log)) {
+ $msg = POSIX::strftime("%Y-%m-%d %H:%M:%S", localtime()) .
+ " $progname: $msg\n";
+ print $fh_log $msg;
+ }
+ }
+}
+
sub config_all {
opendir(ADMINDIR, $admdir)
or quit(_g("can't readdir %s: %s"), $admdir, $!);
@@ -525,6 +548,7 @@ sub set_status {
if (!defined($self->status()) or $status ne $self->status()) {
$self->{modified} = 1;
}
+ main::log_msg("status of link group " . $self->name() . " set to $status");
$self->{status} = $status;
}
sub set_link {
--
dpkg's main repository
--
To UNSUBSCRIBE, email to [email protected]
with a subject of "unsubscribe". Trouble? Contact [email protected]