X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=scripts%2Finstallation_check.pl;h=72f0605406ab03b6468c09b950406b3283416057;hb=0cb0a30142224785c73b545b6729b1d5b8892fca;hp=a50d184d2863e06a91d2e05c5e34dae7b92fb1a0;hpb=e3ff1eb6af5a2f6410be2bc28860d6237613cf3d;p=kivitendo-erp.git diff --git a/scripts/installation_check.pl b/scripts/installation_check.pl index a50d184d2..72f060540 100755 --- a/scripts/installation_check.pl +++ b/scripts/installation_check.pl @@ -4,6 +4,7 @@ use strict; 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). @@ -13,9 +14,30 @@ BEGIN { $master_templates = './templates/print/'; } +unless (eval { require Config::Std; 1 }){ + print STDERR < \ $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" @@ -71,6 +101,20 @@ if ($check{l}) { 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); @@ -135,6 +179,7 @@ sub check_module { 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'; @@ -146,10 +191,12 @@ sub check_module { 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); @@ -221,7 +268,7 @@ __END__ =head1 NAME -scripts/installation_check.pl - check Lx-Office dependancies +scripts/installation_check.pl - check kivitendo dependancies =head1 SYNOPSIS @@ -229,9 +276,9 @@ scripts/installation_check.pl - check Lx-Office dependancies =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. @@ -291,6 +338,12 @@ Don't probe for LaTeX document classes and packages in master templates. (Useful 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