summaryrefslogtreecommitdiffstats
path: root/installer
diff options
context:
space:
mode:
authorOliver Tappe2007-05-18 19:59:01 +0200
committerOliver Tappe2007-05-18 19:59:01 +0200
commite8198517caad8a97977a29cb5350018165eae2df (patch)
tree537740c3ac5be6371be6993ed491a4b9b6649cf6 /installer
parent* fixed incorrect use of private-path instead of stage1-path, as reported (diff)
downloadcore-e8198517caad8a97977a29cb5350018165eae2df.tar.gz
core-e8198517caad8a97977a29cb5350018165eae2df.tar.xz
core-e8198517caad8a97977a29cb5350018165eae2df.zip
* added support to packager for getting a list of the packages that are
already installed git-svn-id: http://svn.openslx.org/svn/openslx/trunk@1087 95ad53e4-c205-0410-b2fa-d234c58c8868
Diffstat (limited to 'installer')
-rw-r--r--installer/OpenSLX/OSSetup/Engine.pm13
-rw-r--r--installer/OpenSLX/OSSetup/Packager/Base.pm4
-rw-r--r--installer/OpenSLX/OSSetup/Packager/rpm.pm9
3 files changed, 25 insertions, 1 deletions
diff --git a/installer/OpenSLX/OSSetup/Engine.pm b/installer/OpenSLX/OSSetup/Engine.pm
index bc5856d2..006e31a4 100644
--- a/installer/OpenSLX/OSSetup/Engine.pm
+++ b/installer/OpenSLX/OSSetup/Engine.pm
@@ -863,11 +863,22 @@ sub stage1D_installPackageSelection
vlog 1, "installing package selection <$selectionName>...";
my $pkgSelection = $self->{'distro-info'}->{selection}->{$selectionName};
my @pkgs = string2Array($pkgSelection);
+ my @installedPkgs = $self->{'packager'}->getInstalledPackages();
+ @pkgs
+ = grep {
+ my $pkg = $_;
+ if (grep { $_ eq $pkg; } @installedPkgs) {
+ vlog 1, "package '$pkg' filtered, it is already installed.";
+ 0;
+ } else {
+ 1;
+ }
+ } @pkgs;
if (scalar(@pkgs) == 0) {
vlog 0, _tr("No packages listed for selection '%s', nothing to do.",
$selectionName);
} else {
- vlog 2, "installing these packages:\n".join("\n\t", @pkgs);
+ vlog 1, "installing these packages:\n".join("\n\t", @pkgs);
$self->{'meta-packager'}->startSession();
$self->{'meta-packager'}->installSelection(join " ", @pkgs);
$self->{'distro'}->updateDistroConfig();
diff --git a/installer/OpenSLX/OSSetup/Packager/Base.pm b/installer/OpenSLX/OSSetup/Packager/Base.pm
index 6ab76cfa..a9205dd4 100644
--- a/installer/OpenSLX/OSSetup/Packager/Base.pm
+++ b/installer/OpenSLX/OSSetup/Packager/Base.pm
@@ -55,6 +55,10 @@ sub installPackages
{
}
+sub getInstalledPackages
+{
+}
+
1;
################################################################################
diff --git a/installer/OpenSLX/OSSetup/Packager/rpm.pm b/installer/OpenSLX/OSSetup/Packager/rpm.pm
index d689f160..12093501 100644
--- a/installer/OpenSLX/OSSetup/Packager/rpm.pm
+++ b/installer/OpenSLX/OSSetup/Packager/rpm.pm
@@ -93,4 +93,13 @@ sub installPackages
}
}
+sub getInstalledPackages
+{
+ my $self = shift;
+
+ my $rpmCmd = 'rpm -qa --queryformat="%{NAME}\n"';
+ my $pkgList = `$rpmCmd`;
+ return split "\n", $pkgList;
+}
+
1; \ No newline at end of file