From e8198517caad8a97977a29cb5350018165eae2df Mon Sep 17 00:00:00 2001 From: Oliver Tappe Date: Fri, 18 May 2007 17:59:01 +0000 Subject: * 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 --- installer/OpenSLX/OSSetup/Engine.pm | 13 ++++++++++++- installer/OpenSLX/OSSetup/Packager/Base.pm | 4 ++++ installer/OpenSLX/OSSetup/Packager/rpm.pm | 9 +++++++++ 3 files changed, 25 insertions(+), 1 deletion(-) (limited to 'installer') 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 -- cgit v1.2.3-55-g7522