Improvements to install script
Changed install script to use perl File::Copy and File::Path routines
instead of system("cp ...") so that it will still work despite the
historical relics OpenBSD ships in its /bin directory. Also changed
configuration writing to autodetect the location of gpg, or warn you
if it can't find it.
use Config;
use Sys::Hostname;
+use File::Copy;
+use File::Path;
my $etc = '/etc';
my $bin = '/usr/bin';
# No user binaries, LOL!
print "Installing superuser binaries...\n";
-system("cp -fv ag-export ag-flush ag-import ag-keyring ag-listusers ag-passwd ag-update-shadow ag-useradd ag-userdel $sbin/");
+mkpath($sbin) unless -d $sbin;
+for my $file (qw/ag-export ag-flush ag-import ag-keyring ag-listusers ag-passwd ag-update-shadow ag-useradd ag-userdel/) {
+ print "$file => $sbin/$file\n";
+ copy($file, "$sbin/");
+ chmod 0700, "$sbin/$file";
+}
print "Installing perl libraries...\n";
-system("mkdir -p $perllib/AwesomeGrid") unless -d "$perllib/AwesomeGrid";
-system("cp -rfv lib/AwesomeGrid.pm $perllib/");
-system("cp -rfv lib/AwesomeGrid/{Config,Keyring,User}.pm $perllib/AwesomeGrid/");
+mkpath("$perllib/AwesomeGrid") unless -d "$perllib/AwesomeGrid";
+print "lib/AwesomeGrid.pm => $perllib/AwesomeGrid.pm\n";
+copy("lib/AwesomeGrid.pm", "$perllib/");
+for my $file (qw/Config Keyring User/) {
+ print "lib/AwesomeGrid/$file.pm => $perllib/AwesomeGrid/$file.pm\n";
+ copy "lib/AwesomeGrid/$file.pm", "$perllib/AwesomeGrid/";
+}
# Be extra careful for configuration bits
umask 0077;
print "Installing configuration...\n";
-mkdir "$etc/awesomegrid" unless -d "$etc/awesomegrid";
+mkpath("$etc/awesomegrid") unless -d "$etc/awesomegrid";
unless (-f "$etc/awesomegrid/admins") {
open ADMINS, ">$etc/awesomegrid/admins";
print ADMINS <<EOD;
# The shell to give imported users if they don't specify one
default-shell: /bin/bash
EOD
+ my $gpg = `which gpg`;
+ if ($? >> 8 != 0) {
+ print <<EOD;
+I couldn't find gpg on your system. You'll have to edit
+$etc/awesomegrid/awesomegrid.conf and put in the
+location of gpg yourself.
+EOD
+ } else {
+ print CONF "gpg: $gpg\n";
+ }
close CONF;
}
mkdir "$etc/awesomegrid/users" unless -d "$etc/awesomegrid/users";
print "Shall I run 'ag-keyring initialize' to generate a new keyring? [Y/n] ";
my $ans = <STDIN>;
if ($ans =~ /^([Yy]|)$/) {
+ $ENV{AWESOMEGRID_CONFDIR} = "$etc/awesomegrid";
system("$sbin/ag-keyring initialize");
}
}