Package: debmirror Version: 20060907.1 Severity: normal I added wget-transport in debmirror. This allows you to use debmirror networks with unstable connect.
=begin diff --- debmirror 2006-09-08 17:00:27.000000000 +0400 +++ debmirror.wget 2007-01-06 15:15:08.000000000 +0300 @@ -67,6 +67,7 @@ [--proxy=http://user:[EMAIL PROTECTED]:port/] [--help] [--rsync-options=options] [--ignore-small-errors] [--pdiff=mirror|use|none] + [--use-wget] [--wget-options=options] mirrordir For details, see man page. @@ -137,6 +138,15 @@ server, you need to put ':' prefix in the root directory (i.e. ":debian", which means host::debian). +=item --use-wget + +Use wget for http and ftp methods. + +=item --wget-options=options + +Specify alternative wget options to be used. Default options are +"-c". See 'man wget' for more information. + =item --proxy=http://user:[EMAIL PROTECTED]:port/ Specifies the http proxy (like Squid) to use for http and hftp method. @@ -403,6 +413,8 @@ our $rsync_options="-aIL --partial"; our $ignore_small_errors=0; our $pdiff_mode="use"; +our $use_wget=0; +our $wget_options="-c"; my @errlog; my $HOME; ($HOME = $ENV{'HOME'}) or die "HOME not defined in environment!\n"; @@ -419,6 +431,8 @@ my $help; GetOptions('debug' => \$debug, + 'use-wget' => \$use_wget, + 'wget-options=s' => \$wget_options, 'progress|p' => \$progress, 'verbose|v' => \$verbose, 'source!' => \$do_source, @@ -911,7 +925,7 @@ if (($dirname) = $file =~ m:(.*)/:) { make_dir($dirname); } - http_get($file); + if ($use_wget) { wget_get($file); } else { http_get($file); } if ($max_batch > 0 && ++$i >= $max_batch) { push (@errlog,"Batch limit exceeded, mirror run was partial\n"); $num_errors++; @@ -931,7 +945,7 @@ if (($dirname) = $file =~ m:(.*)/:) { make_dir($dirname); } - ftp_get($file); + if ($use_wget) { wget_get($file); } else { ftp_get($file); } if ($max_batch > 0 && ++$i >= $max_batch) { push (@errlog,"Batch limit exceeded, mirror run was partial\n"); $num_errors++; @@ -1160,7 +1174,15 @@ }; /^http$/ && do { - $res=http_get($file); + if ($use_wget) + { + $res=wget_get($file); + } + else + { + $res=http_get($file); + } + $res=$res && check_lists($file); if (!$res) { say("$file failed md5sum check, removing"); @@ -1169,7 +1191,15 @@ }; /^ftp$/ && do { - $res=ftp_get($file); + if ($use_wget) + { + $res=wget_get($file); + } + else + { + $res=ftp_get($file); + } + $res=$res && check_lists($file); if (!$res) { say("$file failed md5sum check, removing"); @@ -1259,6 +1289,70 @@ return $ret; } +# WGGET a file via http or ftp +sub wget_get +{ + local $_; + my $file=shift; + + my $proto=$download_method; + $proto=~/^hftp$/ and $proto='ftp'; + + my $url="$proto://${host}/${remoteroot}/${file}"; + + my $wget_cmd="wget $wget_options -O $file $url 2>&1"; + + my $percent=0; + $percent = sprintf("%3.0f",(($bytes_gotten/$bytes_to_get)*100)) + unless($bytes_to_get == 0); + + print "$url => " if $debug; + print "[$percent%] Getting: $file... " + if ($progress || $verbose); + + print "'$wget_cmd'... " if $verbose; + + + if ($dry_run) + { + print "ok\n" if $progress || $verbose; + return 1; + } + + -f $file and unlink $file; + + my $hwget; + unless (open $hwget, "-|", $wget_cmd) + { + warn "failed: $!\n" if $progress || $verbose; + push @errlog, "Download of $file failed: $!"; + $num_errors++; + return 0; + } + + print "\n" if $debug; + while (<$hwget>) + { + s/\s+$//g; + print "$_\n" if $debug; + } + close $hwget; + if ($?) + { + my $emsg="'$wget_cmd' return code: $?"; + push @errlog, $emsg; + $num_errors++; + warn "failed: $emsg\n"; + return 0; + } + else + { + print "ok\n" if $progress || $verbose; + return 1; + } +} + + # Get a file via ftp, first displaying its filename if progress is on. # I should just be able to subclass Net::Ftp and override the get method, # but it's late. =end diff -- System Information: Debian Release: 4.0 APT prefers testing APT policy: (500, 'testing') Architecture: i386 (i686) Shell: /bin/sh linked to /bin/bash Kernel: Linux 2.6.8-2-686 Locale: LANG=ru_RU.UTF-8, LC_CTYPE=ru_RU.UTF-8 (charmap=UTF-8) Versions of packages debmirror depends on: ii bzip2 1.0.3-6 high-quality block-sorting file co ii libcompress-zlib-perl 1.42-1 Perl module for creation and manip ii libdigest-sha1-perl 2.11-1 NIST SHA-1 message digest algorith ii liblockfile-simple-perl 0.2.5-7 Simple advisory file locking ii libnet-perl 1:1.19-3 Implementation of Internet protoco ii libwww-perl 5.805-1 WWW client/server library for Perl ii perl [libdigest-md5-perl] 5.8.8-6.1 Larry Wall's Practical Extraction ii perl-modules [libnet-perl] 5.8.8-6.1 Core Perl modules ii rsync 2.6.9-2 fast remote file copy program (lik Versions of packages debmirror recommends: ii gnupg 1.4.5-3 GNU privacy guard - a free PGP rep ii patch 2.5.9-4 Apply a diff file to an original -- no debconf information -- To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]