Estou usando apt-mirror
para criar um espelho local do Ubuntu. Ele consegue baixar arquivos de outro espelho (há cerca de alguns gigabytes por semana), mas nunca remove nada ou indica arquivos que podem ser excluídos. Posso ficar sem espaço livre, eventualmente.
A saída de apt-mirror
sempre incluir
0,0 bytes em 0 arquivos e 0 diretórios podem ser liberados.
Execute /var/spool/apt-mirror/var/clean.sh para esta finalidade.
O clean.sh
é executado toda vez que apt-mirror
é executado, porque o conteúdo de /var/spool/apt-mirror/var/postmirror.sh
é apenas
/var/spool/apt-mirror/var/clean.sh
A execução clean.sh
produz esta saída:
Removendo 0 arquivos desnecessários [0 bytes]... pronto.
Removendo 0 diretórios desnecessários... pronto.
Aqui está meu mirror.list
arquivo:
############# 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
Responder1
Solução:
Altere a última linha para:
clean http://ubuntu.c3sl.ufpr.br/ubuntu/
Explicação:
O problema está na sua última linha onde define qual repositório limpar. clean
leva o nome do repositório do qual deve remover:
## 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;
}
Os diretórios onde os arquivos estão armazenados estão no formato /var/spool/apt-mirror/mirror/mirror.domain
, portanto, para decidir quais diretórios limpar, ele deve corresponder a qualquer um desses diretórios; caso contrário, não faça nada.
É por isso que mudar a URL para corresponder às outras é a solução.