@@ -67,13 +67,19 @@ assert_unmodified_apt_config() {
67
67
}
68
68
69
69
# Check whether perl and LWP::Simple module are installed
70
- exists_perl () {
71
- if perl -e ' use LWP::Simple;' > /dev/null 2>&1
72
- then
70
+ exists_perl_lwp () {
71
+ if perl -e ' use LWP::Simple;' > /dev/null 2>&1 ; then
72
+ return 0
73
+ fi
74
+ return 1
75
+ }
76
+
77
+ # Check whether perl and File::Fetch module are installed
78
+ exists_perl_ff () {
79
+ if perl -e ' use File::Fetch;' > /dev/null 2>&1 ; then
73
80
return 0
74
- else
75
- return 1
76
81
fi
82
+ return 1
77
83
}
78
84
79
85
# Get command line arguments
@@ -421,9 +427,9 @@ do_fetch() {
421
427
return 0
422
428
}
423
429
424
- # do_perl URL FILENAME
425
- do_perl () {
426
- info " Trying perl..."
430
+ # do_perl_lwp URL FILENAME
431
+ do_perl_lwp () {
432
+ info " Trying perl (LWP::Simple) ..."
427
433
run_cmd " perl -e 'use LWP::Simple; getprint(\$ ARGV[0]);' '$1 ' > '$2 ' 2>$tmp_stderr "
428
434
rc=$?
429
435
@@ -434,13 +440,33 @@ do_perl() {
434
440
unable_to_retrieve_package
435
441
fi
436
442
437
- # check for bad return status or empty output
438
- if test $rc -ne 0 || test ! -s " $2 " ; then
439
- capture_tmp_stderr " perl"
440
- return 1
443
+ if test $rc -eq 0 && test -s " $2 " ; then
444
+ return 0
441
445
fi
442
446
443
- return 0
447
+ capture_tmp_stderr " perl"
448
+ return 1
449
+ }
450
+
451
+ # do_perl_ff URL FILENAME
452
+ do_perl_ff () {
453
+ info " Trying perl (File::Fetch)..."
454
+ run_cmd " perl -e 'use File::Fetch; use File::Copy; my \$ ff = File::Fetch->new(uri => \$ ARGV[0]); my \$ outfile = \$ ff->fetch() or die \$ ff->server; copy(\$ outfile, \$ ARGV[1]) or die \" copy failed: \$ !\" ; unlink(\$ outfile) or die \" delete failed: \$ !\" ;' '$1 ' '$2 ' 2>>$tmp_stderr "
455
+ rc=$?
456
+
457
+ # check for 404
458
+ grep " HTTP response: 404" $tmp_stderr 2>&1 > /dev/null
459
+ if test $? -eq 0 ; then
460
+ critical " ERROR 404"
461
+ unable_to_retrieve_package
462
+ fi
463
+
464
+ if test $rc -eq 0 && test -s " $2 " ; then
465
+ return 0
466
+ fi
467
+
468
+ capture_tmp_stderr " perl"
469
+ return 1
444
470
}
445
471
446
472
# do_download URL FILENAME
@@ -463,11 +489,15 @@ do_download() {
463
489
do_fetch $1 $2 && return 0
464
490
fi
465
491
466
- if exists_perl; then
467
- do_perl $1 $2 && return 0
492
+ if exists_perl_lwp; then
493
+ do_perl_lwp $1 $2 && return 0
494
+ fi
495
+
496
+ if exists_perl_ff; then
497
+ do_perl_ff $1 $2 && return 0
468
498
fi
469
499
470
- critical " Cannot download package as none of wget/curl/fetch/perl-LWP-Simple is found"
500
+ critical " Cannot download package as none of wget/curl/fetch/perl-LWP-Simple/perl-File-Fetch is found"
471
501
unable_to_retrieve_package
472
502
}
473
503
0 commit comments