summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--perl-install/install_any.pm20
1 files changed, 18 insertions, 2 deletions
diff --git a/perl-install/install_any.pm b/perl-install/install_any.pm
index 11412abd2..b650c2852 100644
--- a/perl-install/install_any.pm
+++ b/perl-install/install_any.pm
@@ -415,7 +415,7 @@ Do you have a supplementary installation media to configure?",
'', $msg,
[ {
val => \my $suppl,
- list => [ N_("None"), N_("CD-ROM"), N_("Network (http)"), N_("Network (ftp)") ],
+ list => [ N_("None"), N_("CD-ROM"), N_("Network (http)"), N_("Network (ftp)"), N_("Network (nfs)") ],
type => 'list',
format => \&translate,
} ],
@@ -461,6 +461,7 @@ sub selectSupplMedia {
'CD-ROM' => 'cdrom',
'Network (http)' => 'http',
'Network (ftp)' => 'ftp',
+ 'Network (nfs)' => 'nfs',
}->{$suppl};
my $medium_name = int(keys %{$o->{packages}{mediums}}) + 1;
#- configure network if needed
@@ -514,6 +515,19 @@ sub selectSupplMedia {
$url = $o->askSupplMirror(N("URL of the mirror?")) or return 'error';
$url =~ m!^ftp://(?:(.*?)(?::(.*?))?\@)?([^/]+)/(.*)!
and $global_ftp_prefix = [ $3, $4, $1, $2 ]; #- for getFile
+ } elsif ($suppl_method eq 'nfs') {
+ $o->ask_from_(
+ { title => N("NFS setup"), messages => N("Please enter the hostname and directory of your NFS media") },
+ [ { label => N("Hostname of the NFS mount ?"), val => \my $host }, { label => N("Directory"), val => \my $dir } ],
+ ) or return 'error';
+ $dir =~ s!/+\z!!; $dir eq '' and $dir = '/';
+ return 'error' if !$host || !$dir || substr($dir, 0, 1) ne '/';
+ my $mediadir = '/mnt/nfsmedia' . $medium_name;
+ $url = "$::prefix$mediadir";
+ -d $url or mkdir_p($url);
+ eval { fs::mount("$host:$dir", "$::prefix$mediadir", 'nfs'); 1 }
+ or do { log::l("Mount failed: $@"); return 'error' };
+ #- TODO add $mediadir in fstab for post-installation
} else {
$url = $o->ask_from_entry('', N("URL of the mirror?")) or return 'error';
$url =~ s!/+\z!!;
@@ -543,10 +557,12 @@ sub selectSupplMedia {
http::getFile("$url/media_info/hdlist.cz");
} elsif ($suppl_method eq 'ftp') {
getFile("media_info/hdlist.cz");
+ } elsif ($suppl_method eq 'nfs') {
+ getFile("$url/media_info/hdlist.cz");
} else { undef }
};
if (!defined $f) {
- log::l($@) if $@;
+ log::l($@ || "hdlist.cz unavailable");
#- no hdlist found
$o->ask_warn('', N("Can't find a package list file on this mirror. Make sure the location is correct."));
useMedium($prev_asked_medium);