Ajout de apt-mirror et des patchs appliqués
This commit is contained in:
		
							
								
								
									
										1204
									
								
								apt-mirror/apt-mirror
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										1204
									
								
								apt-mirror/apt-mirror
									
									
									
									
									
										Executable file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										1110
									
								
								apt-mirror/apt-mirror-111
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1110
									
								
								apt-mirror/apt-mirror-111
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										1158
									
								
								apt-mirror/apt-mirror-131
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1158
									
								
								apt-mirror/apt-mirror-131
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										1066
									
								
								apt-mirror/apt-mirror.orig
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										1066
									
								
								apt-mirror/apt-mirror.orig
									
									
									
									
									
										Executable file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										237
									
								
								apt-mirror/patch-111
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										237
									
								
								apt-mirror/patch-111
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,237 @@
 | 
			
		||||
--- /usr/bin/apt-mirror.old	2017-05-29 14:02:33.000000000 +0200
 | 
			
		||||
+++ /usr/bin/apt-mirror	2020-04-11 02:09:10.913855091 +0200
 | 
			
		||||
@@ -8,7 +8,7 @@
 | 
			
		||||
 
 | 
			
		||||
 =head1 SYNOPSIS
 | 
			
		||||
 
 | 
			
		||||
-apt-mirror [configfile]
 | 
			
		||||
+apt-mirror [--[no-]progress] [--verbose] [configfile]
 | 
			
		||||
 
 | 
			
		||||
 =head1 DESCRIPTION
 | 
			
		||||
 
 | 
			
		||||
@@ -16,14 +16,34 @@
 | 
			
		||||
 the whole Debian GNU/Linux distribution or any other apt sources.
 | 
			
		||||
 
 | 
			
		||||
 Main features:
 | 
			
		||||
- * It uses a config similar to APT's F<sources.list>
 | 
			
		||||
- * It's fully pool compliant
 | 
			
		||||
- * It supports multithreaded downloading
 | 
			
		||||
- * It supports multiple architectures at the same time
 | 
			
		||||
- * It can automatically remove unneeded files
 | 
			
		||||
- * It works well on an overloaded Internet connection
 | 
			
		||||
- * It never produces an inconsistent mirror including while mirroring
 | 
			
		||||
- * It works on all POSIX compliant systems with Perl and wget
 | 
			
		||||
+
 | 
			
		||||
+=over
 | 
			
		||||
+
 | 
			
		||||
+=item *
 | 
			
		||||
+It uses a config similar to APT's F<sources.list>
 | 
			
		||||
+
 | 
			
		||||
+=item *
 | 
			
		||||
+It's fully pool compliant
 | 
			
		||||
+
 | 
			
		||||
+=item *
 | 
			
		||||
+It supports multithreaded downloading
 | 
			
		||||
+
 | 
			
		||||
+=item *
 | 
			
		||||
+It supports multiple architectures at the same time
 | 
			
		||||
+
 | 
			
		||||
+=item *
 | 
			
		||||
+It can automatically remove unneeded files
 | 
			
		||||
+
 | 
			
		||||
+=item *
 | 
			
		||||
+It works well on an overloaded Internet connection
 | 
			
		||||
+
 | 
			
		||||
+=item *
 | 
			
		||||
+It never produces an inconsistent mirror including while mirroring
 | 
			
		||||
+
 | 
			
		||||
+=item *
 | 
			
		||||
+It works on all POSIX compliant systems with Perl and wget
 | 
			
		||||
+
 | 
			
		||||
+=back
 | 
			
		||||
 
 | 
			
		||||
 =head1 COMMENTS
 | 
			
		||||
 
 | 
			
		||||
@@ -94,6 +114,7 @@
 | 
			
		||||
 use File::Path qw(make_path);
 | 
			
		||||
 use File::Basename;
 | 
			
		||||
 use Fcntl qw(:flock);
 | 
			
		||||
+use Getopt::Long;
 | 
			
		||||
 
 | 
			
		||||
 my $config_file;
 | 
			
		||||
 
 | 
			
		||||
@@ -128,11 +149,17 @@
 | 
			
		||||
 my @childrens       = ();
 | 
			
		||||
 my %skipclean       = ();
 | 
			
		||||
 my %clean_directory = ();
 | 
			
		||||
+my $verbose         = 0;
 | 
			
		||||
+my $progress        = 1;
 | 
			
		||||
 
 | 
			
		||||
 ######################################################################################
 | 
			
		||||
 ## Setting up $config_file variable
 | 
			
		||||
 
 | 
			
		||||
 $config_file = "/etc/apt/mirror.list";    # Default value
 | 
			
		||||
+GetOptions('verbose|v+', \$verbose,
 | 
			
		||||
+           'progress|p!', \$progress,
 | 
			
		||||
+    ) or die "Usage: apt-mirror [--verbose] [--[no-]progress] [configfile]\n";
 | 
			
		||||
+
 | 
			
		||||
 if ( $_ = shift )
 | 
			
		||||
 {
 | 
			
		||||
     die("apt-mirror: invalid config file specified") unless -e $_;
 | 
			
		||||
@@ -256,7 +283,9 @@
 | 
			
		||||
         open URLS, ">" . get_variable("var_path") . "/$stage-urls.$i" or die("apt-mirror: can't write to intermediate file ($stage-urls.$i)");
 | 
			
		||||
         foreach (@part) { print URLS "$_\n"; }
 | 
			
		||||
         close URLS or die("apt-mirror: can't close intermediate file ($stage-urls.$i)");
 | 
			
		||||
-
 | 
			
		||||
+        if ($verbose >= 2) {
 | 
			
		||||
+            print join("\n  ", "Downloading batch $i:", @part), "\n";
 | 
			
		||||
+        }
 | 
			
		||||
         $pid = fork();
 | 
			
		||||
 
 | 
			
		||||
         die("apt-mirror: can't do fork in download_urls") if !defined($pid);
 | 
			
		||||
@@ -274,14 +303,17 @@
 | 
			
		||||
         $nthreads--;
 | 
			
		||||
     }
 | 
			
		||||
 
 | 
			
		||||
-    print "Begin time: " . localtime() . "\n[" . scalar(@childrens) . "]... ";
 | 
			
		||||
+    print "Begin time: " . localtime() . "\n[" . scalar(@childrens) . "]... "
 | 
			
		||||
+        if $progress;
 | 
			
		||||
     while ( scalar @childrens )
 | 
			
		||||
     {
 | 
			
		||||
         my $dead = wait();
 | 
			
		||||
         @childrens = grep { $_ != $dead } @childrens;
 | 
			
		||||
-        print "[" . scalar(@childrens) . "]... ";
 | 
			
		||||
+        print "[" . scalar(@childrens) . "]... "
 | 
			
		||||
+            if $progress;
 | 
			
		||||
     }
 | 
			
		||||
-    print "\nEnd time: " . localtime() . "\n\n";
 | 
			
		||||
+    print "\nEnd time: " . localtime() . "\n\n"
 | 
			
		||||
+        if $progress;
 | 
			
		||||
 }
 | 
			
		||||
 
 | 
			
		||||
 ## Parse config
 | 
			
		||||
@@ -600,12 +632,13 @@
 | 
			
		||||
     close STREAM;
 | 
			
		||||
 }
 | 
			
		||||
 
 | 
			
		||||
-print "Processing translation indexes: [";
 | 
			
		||||
+print "Processing translation indexes: ["
 | 
			
		||||
+    if $progress;
 | 
			
		||||
 
 | 
			
		||||
 foreach (@config_binaries)
 | 
			
		||||
 {
 | 
			
		||||
     my ( $arch, $uri, $distribution, @components ) = @{$_};
 | 
			
		||||
-    print "T";
 | 
			
		||||
+    print "T" if $progress;
 | 
			
		||||
     if (@components)
 | 
			
		||||
     {
 | 
			
		||||
         $url = $uri . "/dists/" . $distribution . "/";
 | 
			
		||||
@@ -618,7 +651,7 @@
 | 
			
		||||
     }
 | 
			
		||||
 }
 | 
			
		||||
 
 | 
			
		||||
-print "]\n\n";
 | 
			
		||||
+print "]\n\n" if $progress;
 | 
			
		||||
 
 | 
			
		||||
 push( @index_urls, sort keys %urls_to_download );
 | 
			
		||||
 download_urls( "translation", sort keys %urls_to_download );
 | 
			
		||||
@@ -691,12 +724,13 @@
 | 
			
		||||
     }
 | 
			
		||||
 }
 | 
			
		||||
 
 | 
			
		||||
-print "Processing DEP-11 indexes: [";
 | 
			
		||||
+print "Processing DEP-11 indexes: ["
 | 
			
		||||
+    if $progress;
 | 
			
		||||
 
 | 
			
		||||
 foreach (@config_binaries)
 | 
			
		||||
 {
 | 
			
		||||
     my ( $arch, $uri, $distribution, @components ) = @{$_};
 | 
			
		||||
-    print "D";
 | 
			
		||||
+    print "D" if $progress;
 | 
			
		||||
     if (@components)
 | 
			
		||||
     {
 | 
			
		||||
         $url = $uri . "/dists/" . $distribution . "/";
 | 
			
		||||
@@ -709,7 +743,7 @@
 | 
			
		||||
     }
 | 
			
		||||
 }
 | 
			
		||||
 
 | 
			
		||||
-print "]\n\n";
 | 
			
		||||
+print "]\n\n" if $progress;
 | 
			
		||||
 
 | 
			
		||||
 push( @index_urls, sort keys %urls_to_download );
 | 
			
		||||
 download_urls( "dep11", sort keys %urls_to_download );
 | 
			
		||||
@@ -815,12 +849,16 @@
 | 
			
		||||
         {    # Packages index
 | 
			
		||||
             $skipclean{ remove_double_slashes( $path . "/" . $lines{"Filename:"} ) } = 1;
 | 
			
		||||
             print FILES_ALL remove_double_slashes( $path . "/" . $lines{"Filename:"} ) . "\n";
 | 
			
		||||
+            print "ALL: " . remove_double_slashes( $path . "/" . $lines{"Filename:"} ) . "\n"
 | 
			
		||||
+                if $verbose >= 3;
 | 
			
		||||
             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";
 | 
			
		||||
+                print "NEW: " . remove_double_slashes( $uri . "/" . $lines{"Filename:"} ) . "\n"
 | 
			
		||||
+                    if $verbose >= 1;
 | 
			
		||||
                 add_url_to_download( $uri . "/" . $lines{"Filename:"}, $lines{"Size:"} );
 | 
			
		||||
             }
 | 
			
		||||
         }
 | 
			
		||||
@@ -833,10 +871,14 @@
 | 
			
		||||
                 die("apt-mirror: invalid Sources format") if @file != 3;
 | 
			
		||||
                 $skipclean{ remove_double_slashes( $path . "/" . $lines{"Directory:"} . "/" . $file[2] ) } = 1;
 | 
			
		||||
                 print FILES_ALL remove_double_slashes( $path . "/" . $lines{"Directory:"} . "/" . $file[2] ) . "\n";
 | 
			
		||||
+                print "ALL: " . remove_double_slashes( $path . "/" . $lines{"Directory:"} . "/" . $file[2] ) . "\n"
 | 
			
		||||
+                    if $verbose >= 3;
 | 
			
		||||
                 print FILES_MD5 $file[0] . "  " . remove_double_slashes( $path . "/" . $lines{"Directory:"} . "/" . $file[2] ) . "\n";
 | 
			
		||||
                 if ( need_update( $mirror . "/" . $lines{"Directory:"} . "/" . $file[2], $file[1] ) )
 | 
			
		||||
                 {
 | 
			
		||||
                     print FILES_NEW remove_double_slashes( $uri . "/" . $lines{"Directory:"} . "/" . $file[2] ) . "\n";
 | 
			
		||||
+                    print "NEW: " . remove_double_slashes( $uri . "/" . $lines{"Directory:"} . "/" . $file[2] ) . "\n"
 | 
			
		||||
+                        if $verbose >= 1;
 | 
			
		||||
                     add_url_to_download( $uri . "/" . $lines{"Directory:"} . "/" . $file[2], $file[1] );
 | 
			
		||||
                 }
 | 
			
		||||
             }
 | 
			
		||||
@@ -846,12 +888,13 @@
 | 
			
		||||
     close STREAM;
 | 
			
		||||
 }
 | 
			
		||||
 
 | 
			
		||||
-print "Processing indexes: [";
 | 
			
		||||
+print "Processing indexes: ["
 | 
			
		||||
+    if $progress;
 | 
			
		||||
 
 | 
			
		||||
 foreach (@config_sources)
 | 
			
		||||
 {
 | 
			
		||||
     my ( $uri, $distribution, @components ) = @{$_};
 | 
			
		||||
-    print "S";
 | 
			
		||||
+    print "S" if $progress;
 | 
			
		||||
     if (@components)
 | 
			
		||||
     {
 | 
			
		||||
         my $component;
 | 
			
		||||
@@ -869,7 +912,7 @@
 | 
			
		||||
 foreach (@config_binaries)
 | 
			
		||||
 {
 | 
			
		||||
     my ( $arch, $uri, $distribution, @components ) = @{$_};
 | 
			
		||||
-    print "P";
 | 
			
		||||
+    print "P" if $progress;
 | 
			
		||||
     if (@components)
 | 
			
		||||
     {
 | 
			
		||||
         my $component;
 | 
			
		||||
@@ -886,7 +929,8 @@
 | 
			
		||||
 
 | 
			
		||||
 clear_stat_cache();
 | 
			
		||||
 
 | 
			
		||||
-print "]\n\n";
 | 
			
		||||
+print "]\n\n"
 | 
			
		||||
+    if $progress;
 | 
			
		||||
 
 | 
			
		||||
 close FILES_ALL;
 | 
			
		||||
 close FILES_NEW;
 | 
			
		||||
@@ -1019,6 +1063,7 @@
 | 
			
		||||
     foreach (@rm_files)
 | 
			
		||||
     {
 | 
			
		||||
         print CLEAN "rm -f '$_'\n";
 | 
			
		||||
+        print "  $_\n" if $verbose >= 1;
 | 
			
		||||
         print CLEAN "echo -n '[" . int( 100 * $i / $total ) . "\%]'\n" unless $i % 500;
 | 
			
		||||
         print CLEAN "echo -n .\n" unless $i % 10;
 | 
			
		||||
         $i++;
 | 
			
		||||
							
								
								
									
										21
									
								
								apt-mirror/patch-130
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										21
									
								
								apt-mirror/patch-130
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,21 @@
 | 
			
		||||
--- /usr/bin/apt-mirror.old	2017-05-29 14:02:33.000000000 +0200
 | 
			
		||||
+++ /usr/bin/apt-mirror	2020-04-11 01:42:20.959628172 +0200
 | 
			
		||||
@@ -520,7 +520,7 @@
 | 
			
		||||
                 if ( @parts == 3 )
 | 
			
		||||
                 {
 | 
			
		||||
                     my ( $sha1, $size, $filename ) = @parts;
 | 
			
		||||
-                    if ( $filename =~ m{^$component/i18n/Translation-[^./]*\.bz2$} )
 | 
			
		||||
+                    if ( $filename =~ m{^$component/i18n/Translation-[^./]*\.(gz|bz2|xz)$} )
 | 
			
		||||
                     {
 | 
			
		||||
                         add_url_to_download( $dist_uri . $filename, $size );
 | 
			
		||||
                     }
 | 
			
		||||
@@ -826,7 +826,8 @@
 | 
			
		||||
         }
 | 
			
		||||
         else
 | 
			
		||||
         {    # Sources index
 | 
			
		||||
-            foreach ( split( /\n/, $lines{"Files:"} ) )
 | 
			
		||||
+		#            foreach ( split( /\n/, $lines{"Files:"} ) )
 | 
			
		||||
+		foreach ( split( /\n/, $lines{"Checksums-Sha256:"} ) )
 | 
			
		||||
             {
 | 
			
		||||
                 next if $_ eq '';
 | 
			
		||||
                 my @file = split;
 | 
			
		||||
							
								
								
									
										102
									
								
								apt-mirror/patch-131
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										102
									
								
								apt-mirror/patch-131
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,102 @@
 | 
			
		||||
--- /usr/bin/apt-mirror.old	2017-05-29 14:02:33.000000000 +0200
 | 
			
		||||
+++ /usr/bin/apt-mirror	2020-04-11 02:08:01.820901199 +0200
 | 
			
		||||
@@ -722,6 +722,99 @@
 | 
			
		||||
 }
 | 
			
		||||
 
 | 
			
		||||
 ######################################################################################
 | 
			
		||||
+## by-hash SHA256 files download
 | 
			
		||||
+
 | 
			
		||||
+%urls_to_download = ();
 | 
			
		||||
+
 | 
			
		||||
+sub find_by_hash_sha256_files_in_release
 | 
			
		||||
+{
 | 
			
		||||
+    # Look in the dists/$DIST/Release file for the by-hash SHA256 files that belong
 | 
			
		||||
+    # to the given component and architecture.
 | 
			
		||||
+
 | 
			
		||||
+    my $dist_uri  = shift; 
 | 
			
		||||
+    my $component = shift;
 | 
			
		||||
+    my $arch      = shift;
 | 
			
		||||
+    my ( $release_uri, $release_path, $line ) = '';
 | 
			
		||||
+
 | 
			
		||||
+    $release_uri  = $dist_uri . "Release";
 | 
			
		||||
+    $release_path = get_variable("skel_path") . "/" . sanitise_uri($release_uri);
 | 
			
		||||
+
 | 
			
		||||
+    unless ( open STREAM, "<$release_path" )
 | 
			
		||||
+    {
 | 
			
		||||
+        warn( "Failed to open Release file from " . $release_uri );
 | 
			
		||||
+        return;
 | 
			
		||||
+    }
 | 
			
		||||
+
 | 
			
		||||
+    my $checksums = 0;
 | 
			
		||||
+    while ( $line = <STREAM> )
 | 
			
		||||
+    {
 | 
			
		||||
+        chomp $line;
 | 
			
		||||
+        if ($checksums)
 | 
			
		||||
+        {
 | 
			
		||||
+            if ( $line =~ /^ +(.*)$/ )
 | 
			
		||||
+            {
 | 
			
		||||
+                my @parts = split( / +/, $1 );
 | 
			
		||||
+                if ( @parts == 3 )
 | 
			
		||||
+                {
 | 
			
		||||
+                    my ( $sha256, $size, $filename ) = @parts;
 | 
			
		||||
+                    my $dirname = dirname($filename);
 | 
			
		||||
+                    my $sha256_filename = '/'.$dirname.'/by-hash/SHA256/'.$sha256;
 | 
			
		||||
+                    {
 | 
			
		||||
+                        add_url_to_download( $dist_uri . $sha256_filename );
 | 
			
		||||
+                    }
 | 
			
		||||
+                }
 | 
			
		||||
+                else
 | 
			
		||||
+                {
 | 
			
		||||
+                    warn("Malformed checksum line \"$1\" in $release_uri");
 | 
			
		||||
+                }
 | 
			
		||||
+            }
 | 
			
		||||
+            else
 | 
			
		||||
+            {
 | 
			
		||||
+                $checksums = 0;
 | 
			
		||||
+            }
 | 
			
		||||
+        }
 | 
			
		||||
+        if ( not $checksums )
 | 
			
		||||
+        {
 | 
			
		||||
+            if ( $line eq "SHA256:" )
 | 
			
		||||
+            {
 | 
			
		||||
+                $checksums = 1;
 | 
			
		||||
+            }
 | 
			
		||||
+        }
 | 
			
		||||
+    }
 | 
			
		||||
+}
 | 
			
		||||
+
 | 
			
		||||
+print "Processing SHA256 by-hash files ["
 | 
			
		||||
+    if $progress;
 | 
			
		||||
+
 | 
			
		||||
+foreach (@config_binaries)
 | 
			
		||||
+{
 | 
			
		||||
+    my ( $arch, $uri, $distribution, @components ) = @{$_};
 | 
			
		||||
+    print "D" if $progress;
 | 
			
		||||
+    if (@components)
 | 
			
		||||
+    {
 | 
			
		||||
+        $url = $uri . "/dists/" . $distribution . "/";
 | 
			
		||||
+
 | 
			
		||||
+        my $component;
 | 
			
		||||
+        foreach $component (@components)
 | 
			
		||||
+        {
 | 
			
		||||
+            find_by_hash_sha256_files_in_release( $url, $component, $arch );
 | 
			
		||||
+        }
 | 
			
		||||
+    }
 | 
			
		||||
+}
 | 
			
		||||
+
 | 
			
		||||
+print "]\n\n" if $progress;
 | 
			
		||||
+
 | 
			
		||||
+push( @index_urls, sort keys %urls_to_download );
 | 
			
		||||
+download_urls( "by-hash-SHA256", sort keys %urls_to_download );
 | 
			
		||||
+
 | 
			
		||||
+foreach ( keys %urls_to_download )
 | 
			
		||||
+{
 | 
			
		||||
+    s[^(\w+)://][];
 | 
			
		||||
+    s[~][%7E]g if get_variable("_tilde");
 | 
			
		||||
+    $skipclean{$_} = 1;
 | 
			
		||||
+}
 | 
			
		||||
+
 | 
			
		||||
+######################################################################################
 | 
			
		||||
 ## Main download preparations
 | 
			
		||||
 
 | 
			
		||||
 %urls_to_download = ();
 | 
			
		||||
		Reference in New Issue
	
	Block a user