[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#30891: dpkg: Patch for update-alternatives to fix jdk problems



Package: dpkg
Version: 1.4.0.31
Severity: important

The Debian jdk1.1 and jdk1.1-dev packages are one of the heaviest users
of update-alternatives.  Over the years, several versions of the jdk packages
have had bugs, resulting in stale entries in /var/lib/dpkg/alternatives.

Some of the stale entries are preventing the new jdk1.1 packages from
being installed on some systems that had the old buggy packages
installed.

Here's a simple patch against update-alternatives which removes stale
entries when update-alternatives is run.  I'd really like to see this
fixed for slink, and it would solve some release-critical problems.

Cheers,

 - Jim



--- update-alternatives.debian	Sat Dec 19 12:04:25 1998
+++ update-alternatives	Sat Dec 19 12:58:02 1998
@@ -110,14 +110,23 @@
     }
     while (($version= &gl("version")) ne '') {
         defined($versionnum{$version}) && &badfmt("duplicate path $tver");
-        push(@versions,$version);
-        $versionnum{$version}= $i= $#versions;
-        $priority= &gl("priority");
-        $priority =~ m/^[-+]?\d+$/ || &badfmt("priority $version $priority");
-        $priorities[$i]= $priority;
-        for ($j=0; $j<=$#slavenames; $j++) {
-            $slavepath{$i,$j}= &gl("spath");
-        }
+	if ( -r $version ) {
+	    push(@versions,$version);
+	    $versionnum{$version}= $i= $#versions;
+	    $priority= &gl("priority");
+	    $priority =~ m/^[-+]?\d+$/ || &badfmt("priority $version $priority");
+	    $priorities[$i]= $priority;
+	    for ($j=0; $j<=$#slavenames; $j++) {
+		$slavepath{$i,$j}= &gl("spath");
+	    }
+	} else {
+	    # File not found - remove
+            &pr("Alternative for $name points to $version - which wasn't found.  Removing from list of alternatives.");
+	    &gl("priority");
+	    for ($j=0; $j<=$#slavenames; $j++) {
+		&gl("spath");
+	    }
+	}
     }
     close(AF);
     $dataread=1;



-- System Information
Debian Release: slink
Kernel Version: Linux fleming 2.1.131 #1 SMP Wed Dec 2 18:48:33 PST 1998 i586 unknown

Versions of the packages dpkg depends on:
ii  libc6           2.0.7u-7.1     The GNU C library version 2 (run-time files)
ii  libncurses4     4.2-3          Shared libraries for terminal handling
ii  libstdc++2.9    2.91.60-1      The GNU stdc++ library (egcs version)


Reply to: