Estoy usando apt-mirror
para crear un espejo local de Ubuntu. Tiene éxito al descargar archivos desde otro espejo (hay alrededor de un par de gigabytes cada semana), pero nunca elimina nada ni indica archivos que se pueden eliminar. Es posible que eventualmente me quede sin espacio libre.
La salida de apt-mirror
siempre incluye
Se pueden liberar 0,0 bytes en 0 archivos y 0 directorios.
Ejecute /var/spool/apt-mirror/var/clean.sh para este propósito.
Se clean.sh
ejecuta cada vez que apt-mirror
se ejecuta, porque el contenido de /var/spool/apt-mirror/var/postmirror.sh
es solo
/var/spool/apt-mirror/var/clean.sh
La ejecución clean.sh
produce esta salida:
Eliminando 0 archivos innecesarios [0 bytes]... hecho.
Eliminando 0 directorios innecesarios... listo.
Aquí está mi mirror.list
archivo:
############# 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
Respuesta1
Solución:
Cambie la última línea a:
clean http://ubuntu.c3sl.ufpr.br/ubuntu/
Explicación:
El problema está en su última línea donde define qué repositorio limpiar. clean
toma el nombre del repositorio en el que se debe eliminar:
## 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;
}
Los directorios donde se almacenan los archivos tienen el formato /var/spool/apt-mirror/mirror/mirror.domain
, por lo que para decidir qué directorios limpiar, debe coincidir con cualquiera de estos directorios; si no es así, no haga nada.
Por eso, cambiar la URL para que coincida con las demás es la solución.