To solve a problem I wrote about earlier,
in the text of the program "apt-mirror 0.5.4-1" commented or added new lines.
I marked my changes with comments:
# *** my comment
# *** my insert
#-------------------------------------------------------------------------------
sub need_update
{
my $filename = shift;
my $size_on_server = shift;
my ( undef, undef, undef, undef, undef, undef, undef, $size ) =
_stat($filename);
return 1 unless ($size);
return 0 if $size_on_server == $size;
unlink( $filename ) || die("apt-mirror: unlink error: $! for file:
$filename"); # *** my insert
return 1;
}
#-------------------------------------------------------------------------------
sub process_index
{
...
if ( exists $lines{"Filename:"} )
{ # Packages index
$skipclean{ remove_double_slashes( $path . "/" . $lines{"Filename:"} )
} = 1;
print FILES_ALL remove_double_slashes( $path . "/" .
$lines{"Filename:"} ) . "\n";
print FILES_MD5 $lines{"MD5sum:"} . " " . remove_double_slashes(
$path . "/" . $lines{"Filename:"} ) . "\n" if defined $lines{"MD5sum:"};
print FILES_SHA1 $lines{"SHA1:"} . " " . remove_double_slashes( $path
. "/" . $lines{"Filename:"} ) . "\n" if defined $lines{"SHA1:"};
print FILES_SHA256 $lines{"SHA256:"} . " " . remove_double_slashes(
$path . "/" . $lines{"Filename:"} ) . "\n" if defined $lines{"SHA256:"};
if ( need_update( $mirror . "/" . $lines{"Filename:"}, $lines{"Size:"}
) )
{
print FILES_NEW remove_double_slashes( $uri . "/" .
$lines{"Filename:"} ) . "\n";
add_url_to_download( $uri . "/" . $lines{"Filename:"},
$lines{"Size:"} );
}
}
#else # *** my comment
elsif ( exists $lines{"Files:"} ) # *** my insert
{ # Sources index
foreach ( split( /\n/, $lines{"Files:"} ) )
{
...
}
######################################################################################
## Main download
chdir get_variable("mirror_path") or die("apt-mirror: can't chdir to mirror");
my $need_bytes = 0;
foreach ( values %urls_to_download )
{
$need_bytes += $_;
}
if ($need_bytes > 0) { # *** my insert
my $size_output = format_bytes($need_bytes);
print "$size_output will be downloaded into archive.\n";
download_urls( "archive", sort keys %urls_to_download );
} # *** my insert
######################################################################################
String with "unlink" in "sub need_update" is very important, since "wget" does
not a re-change a package if it is not fully downloaded on previous runs
of "apt-mirror". For example, if in the previous run "apt-mirror" pressed
"Ctrl+C".
After this change everything works fine and the message:
Processing indexes: [SSSSSUse of uninitialized value $lines{"Files:"} in split
at /usr/bin/apt-mirror line 829, <STREAM> line 1.
Use of uninitialized value $lines{"Files:"} in split at /usr/bin/apt-mirror
line 829, <STREAM> line 2.
PPPPP]
no longer appears. And messages for re-download the not completely
downloaded packages also do not occur.