use Getopt::Long;
use Pod::Usage;
use Term::ANSIColor;
+use Text::Wrap;
our $master_templates;
BEGIN {
unshift @INC, "modules/override"; # Use our own versions of various modules (e.g. YAML).
Debian: you may install the needed *.deb package with:
apt-get install libconfig-std-perl
- RPM: There is a rpm package "perl-Config-Std"
+ Red Hat/Fedora/CentOS: you may install the needed *.rpm package with:
+ yum install perl-Config-Std
- Suse: you may install the needed *.rpm package with:
+ SUSE: you may install the needed *.rpm package with:
zypper install perl-Config-Std
+------------------------------------------------------------------------------+
use SL::InstallationCheck;
use SL::LxOfficeConf;
-
+my @missing_modules;
my %check;
Getopt::Long::Configure ("bundling");
GetOptions(
"r|required!" => \ $check{r},
"h|help" => sub { pod2usage(-verbose => 2) },
"c|color!" => \ ( my $c = 1 ),
+ "i|install!" => \ my $apt,
+);
+
+my %install_methods = (
+ apt => { key => 'debian', install => 'sudo apt-get install', system => "Debian, Ubuntu" },
+ yum => { key => 'fedora', install => 'sudo yum install', system => "RHEL, Fedora, CentOS" },
+ zypper => { key => 'suse', install => 'sudo zypper install', system => "SLES, openSUSE" },
+ cpan => { key => 'name', install => "sudo cpan", system => "CPAN" },
);
# if nothing is requested check "required"
check_latex();
}
+if (@missing_modules && $apt) {
+ print "\nHere are some sample installation lines, choose one apporpriate for your system:\n\n";
+ local $Text::Wrap::separator = " \\\n";
+
+ for (keys %install_methods) {
+ my $method = $install_methods{$_};
+ if (my @install_candidates = grep $_, map { $_->{$method->{key}} } @missing_modules) {
+ print "$method->{system}:\n";
+ print wrap(" ", " ", $method->{install}, @install_candidates);
+ print $/;
+ }
+ }
+}
+
sub check_latex {
my ($res) = check_kpsewhich();
print_result("Looking for LaTeX kpsewhich", $res);
my ($module, %role) = @_;
my $line = "Looking for $module->{fullname}";
+ $line .= " (from $module->{dist_name})" if $module->{dist_name};
my ($res, $ver) = SL::InstallationCheck::module_available($module->{"name"}, $module->{version});
if ($res) {
my $ver_string = ref $ver && $ver->can('numify') ? $ver->numify : $ver ? $ver : 'no version';
return if $res;
+ push @missing_modules, $module;
+
my $needed_text =
- $role{optional} ? 'It is OPTIONAL for Lx-Office but RECOMMENDED for improved functionality.'
- : $role{required} ? 'It is NEEDED by Lx-Office and must be installed.'
- : $role{devel} ? 'It is OPTIONAL for Lx-Office and only useful for developers.'
+ $role{optional} ? 'It is OPTIONAL for kivitendo but RECOMMENDED for improved functionality.'
+ : $role{required} ? 'It is NEEDED by kivitendo and must be installed.'
+ : $role{devel} ? 'It is OPTIONAL for kivitendo and only useful for developers.'
: 'It is not listed as a dependancy yet. Please tell this the developers.';
my @source_texts = module_source_texts($module);
=head1 NAME
-scripts/installation_check.pl - check Lx-Office dependancies
+scripts/installation_check.pl - check kivitendo dependancies
=head1 SYNOPSIS
=head1 DESCRIPTION
-Check dependencys. List all perl modules needed by Lx-Office, probes for them,
+Check dependencys. List all perl modules needed by kivitendo, probes for them,
and warns if one is not available. List all LaTeX document classes and
-packages needed by Lx-Office master templates, probes for them, and warns if
+packages needed by kivitendo master templates, probes for them, and warns if
one is not available.
Print additional info for missing dependancies
+=item C<-i, --install>
+
+Tries to generate installation commands for the most common package managers.
+Note that these lists can be slightly off, but it should still save you a lot
+of typing.
+
=back
=head1 BUGS, CAVEATS and TODO