summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--perl-install/install/NEWS4
-rw-r--r--perl-install/services.pm15
2 files changed, 17 insertions, 2 deletions
diff --git a/perl-install/install/NEWS b/perl-install/install/NEWS
index 1db4c40f8..61f04dada 100644
--- a/perl-install/install/NEWS
+++ b/perl-install/install/NEWS
@@ -1,3 +1,7 @@
+- summary:
+ o fix not listing some services (mga#17288)
+ o fix updating firewall status after configuration (mga#17288)
+
Version 17.42 - 22 June 2016
- bootloader configuration:
diff --git a/perl-install/services.pm b/perl-install/services.pm
index 6c8b79943..9d3450231 100644
--- a/perl-install/services.pm
+++ b/perl-install/services.pm
@@ -360,8 +360,13 @@ sub _systemd_services() {
my %loaded;
# Running system using systemd
log::explanations("Detected systemd running. Using systemctl introspection.");
- foreach (run_program::rooted_get_stdout($::prefix, '/bin/systemctl', '--no-legend', '--no-pager', '--full', '--all', 'list-units')) {
- if (my ($name) = m!^(\S+)\.service\s+loaded!) {
+ # even if systemd is not running, we can detect status of shorewell service which is not wanted by:
+ my @opts = $::isInstall ? 'list-unit-files' : qw(--all list-units);
+ print "chroot $::prefix /bin/systemctl --no-legend --no-pager --full @opts";
+ foreach (run_program::rooted_get_stdout($::prefix, '/bin/systemctl', '--no-legend', '--no-pager', '--full', @opts)) {
+ my ($name) = m!^(\S+)\.service\s+loaded!;
+ ($name) = m!^(\S+)\.service\s+enabled! if $::isInstall && !$name;
+ if ($name) {
# We only look at non-template, non-linked service files in /lib
# We also check for any non-masked sysvinit files as these are
# also handled by systemd
@@ -459,6 +464,12 @@ sub services() {
@services = _systemd_services();
} else {
@services = _legacy_services();
+ # list shorewall and the like which are not "wantedBy":
+ if ($::isInstall) {
+ # prevent listing some services twice:
+ my @found = map { $_->[0] } @services;
+ push @services, grep { !member($_->[0], @found) } _systemd_services();
+ }
}
my @l = xinetd_services();