Ich verwende es, apt-mirror
um einen lokalen Ubuntu-Spiegel zu erstellen. Es gelingt zwar, Dateien von einem anderen Spiegel herunterzuladen (das sind etwa ein paar Gigabyte pro Woche), aber es werden nie etwas gelöscht oder Dateien angezeigt, die gelöscht werden können. Irgendwann könnte mir der freie Speicherplatz ausgehen.
Die Ausgabe von apt-mirror
enthält immer
0,0 Bytes in 0 Dateien und 0 Verzeichnissen können freigegeben werden.
Führen Sie zu diesem Zweck /var/spool/apt-mirror/var/clean.sh aus.
Das clean.sh
wird jedes Mal ausgeführt apt-mirror
, da der Inhalt von /var/spool/apt-mirror/var/postmirror.sh
nur
/var/spool/apt-mirror/var/clean.sh
Beim Ausführen clean.sh
wird folgende Ausgabe erzeugt:
0 unnötige Dateien [0 Bytes] werden entfernt … fertig.
0 unnötige Verzeichnisse werden entfernt … fertig.
Hier ist meine mirror.list
Datei:
############# config ##################
#
# set base_path /var/spool/apt-mirror
#
# set mirror_path $base_path/mirror
# set skel_path $base_path/skel
# set var_path $base_path/var
# set cleanscript $var_path/clean.sh
# set defaultarch <running host architecture>
# set postmirror_script $var_path/postmirror.sh
# set run_postmirror 0
set nthreads 20
set _tilde 0
#
############# end config ##############
deb-i386 http://ubuntu.c3sl.ufpr.br/ubuntu/ trusty main restricted universe multiverse
deb-i386 http://ubuntu.c3sl.ufpr.br/ubuntu/ trusty-updates main restricted universe multiverse
deb-i386 http://ubuntu.c3sl.ufpr.br/ubuntu/ trusty-backports main restricted universe multiverse
deb-i386 http://ubuntu.c3sl.ufpr.br/ubuntu/ trusty-security main restricted universe multiverse
deb-amd64 http://ubuntu.c3sl.ufpr.br/ubuntu/ trusty main restricted universe multiverse
deb-amd64 http://ubuntu.c3sl.ufpr.br/ubuntu/ trusty-updates main restricted universe multiverse
deb-amd64 http://ubuntu.c3sl.ufpr.br/ubuntu/ trusty-backports main restricted universe multiverse
deb-amd64 http://ubuntu.c3sl.ufpr.br/ubuntu/ trusty-security main restricted universe multiverse
clean http://archive.ubuntu.com/ubuntu
Antwort1
Lösung:
Ändern Sie die letzte Zeile wie folgt:
clean http://ubuntu.c3sl.ufpr.br/ubuntu/
Erläuterung:
Das Problem liegt in Ihrer letzten Zeile, in der definiert wird, welches Repository bereinigt werden soll. clean
nimmt den Namen des Repositorys an, aus dem entfernt werden soll:
## Parse config
open CONFIG, "<$config_file" or die("apt-mirror: can't open config file ($config_file)");
while (<CONFIG>)
{
## Here we detect the line starting with "clean" and process the URL
if ( $config_line eq "clean" )
{
$config_line[0] =~ s[^(\w+)://][];
$config_line[0] =~ s[/$][];
$config_line[0] =~ s[~][%7E]g if get_variable("_tilde");
$clean_directory{ $config_line[0] } = 1;
next;
}
die("apt-mirror: invalid line in config file ($.: $config_line ...)");
}
## we store the results in the "clean_directory" variable, now we will
## loop through all of them:
foreach ( keys %clean_directory )
{
process_directory($_) if -d $_ && !-l $_;
}
## and proceed to take the actions:
sub process_directory
{
my $dir = shift;
my $is_needed = 0;
return 1 if $skipclean{$dir};
opendir( my $dir_h, $dir ) or die "apt-mirror: can't opendir $dir: $!";
foreach ( grep { !/^\.$/ && !/^\.\.$/ } readdir($dir_h) )
{
my $item = $dir . "/" . $_;
$is_needed |= process_directory($item) if -d $item && !-l $item;
$is_needed |= process_file($item) if -f $item;
$is_needed |= process_symlink($item) if -l $item;
}
closedir $dir_h;
push @rm_dirs, $dir unless $is_needed;
return $is_needed;
}
Die Verzeichnisse, in denen die Dateien gespeichert sind, haben die Form . /var/spool/apt-mirror/mirror/mirror.domain
Um also zu entscheiden, welche Verzeichnisse bereinigt werden sollen, sollte es mit einem dieser Verzeichnisse übereinstimmen. Wenn nicht, tun Sie nichts.
Deshalb besteht die Lösung darin, die URL so zu ändern, dass sie mit den anderen übereinstimmt.