Jurij Smakov wrote: > I noticed that as well with today's dailies. This is displayed by > tasksel, installer just invokes it in /target. I can also reproduce it > on an installed system by running 'tasksel -t'. Since I can't reproduce this, I can only guess. tasksel contains a sub list_installed() that parses /var/lib/dpkg/status. Perhaps something about the status file format has changed? Parsing the file is a bit gratuitous, so I've attached a patch that switches it to dpkg-query. Does it fix the issue? -- see shy jo
From af213911196f47c4cbe3fb0ba9f54999a32f9684 Mon Sep 17 00:00:00 2001
From: Joey Hess <joey@kitenet.net>
Date: Sun, 29 Jan 2012 02:26:33 -0400
Subject: [PATCH] Use dpkg-query to list packages, rather than parsing the
status file. Closes: #657389
---
debian/changelog | 4 ++++
tasksel.pl | 10 ++++------
2 files changed, 8 insertions(+), 6 deletions(-)
diff --git a/debian/changelog b/debian/changelog
index ff17af3..1e81501 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -16,6 +16,10 @@ tasksel (3.08) UNRELEASED; urgency=low
- Add ibus-gtk3 to task-korean-gnome-desktop
- Replace ttf-* with fonts-*
+ [ Joey Hess ]
+ * Use dpkg-query to list packages, rather than parsing the status file.
+ Closes: #657389
+
-- Christian Perrier <bubulle@debian.org> Mon, 05 Dec 2011 21:29:17 +0100
tasksel (3.07) unstable; urgency=low
diff --git a/tasksel.pl b/tasksel.pl
index d32c456..0b05d74 100755
--- a/tasksel.pl
+++ b/tasksel.pl
@@ -115,15 +115,13 @@ sub list_avail {
# Returns a list of all installed packages.
sub list_installed {
my @list;
- local $/="\n\n";
- open (STATUS, $statusfile);
- local $_;
- while (<STATUS>) {
- if (/^Status: .* installed$/m && /Package: (.*)$/m) {
+ open (LIST, q{dpkg-query -W -f='${Package} ${Status}\n' |});
+ while (<LIST>) {
+ if (/^([^ ]+) .* installed$/m) {
push @list, $1;
}
}
- close STATUS;
+ close LIST;
return @list;
}
--
1.7.8.3
Attachment:
signature.asc
Description: Digital signature