apt-mirror
로컬 Ubuntu 미러를 만드는 데 사용하고 있습니다 . 다른 미러에서 파일을 다운로드하는 데는 성공하지만(매주 약 2GB 정도) 아무것도 제거하지 않거나 삭제할 수 있는 파일을 표시하지 않습니다. 결국 여유 공간이 부족해질 수 있습니다.
apt-mirror
항상 포함 의 출력
0개의 파일과 0개의 디렉터리에서 0.0바이트를 해제할 수 있습니다.
이를 위해 /var/spool/apt-mirror/var/clean.sh를 실행합니다.
의 내용은 실행될 때 clean.sh
마다 실행됩니다 .apt-mirror
/var/spool/apt-mirror/var/postmirror.sh
/var/spool/apt-mirror/var/clean.sh
실행하면 clean.sh
다음과 같은 출력이 생성됩니다.
불필요한 파일 0개[0바이트]를 제거하는 중... 완료되었습니다.
불필요한 디렉토리 0개 제거 중... 완료되었습니다.
mirror.list
내 파일 은 다음과 같습니다 .
############# 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
답변1
해결책:
마지막 줄을 다음으로 변경합니다.
clean http://ubuntu.c3sl.ufpr.br/ubuntu/
설명:
문제는 정리할 저장소를 정의하는 마지막 줄에 있습니다. clean
제거해야 하는 저장소의 이름을 사용합니다.
## 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;
}
파일이 저장되는 디렉터리는 형식이므로 /var/spool/apt-mirror/mirror/mirror.domain
정리할 디렉터리를 결정하려면 이러한 디렉터리 중 하나와 일치해야 하며 그렇지 않은 경우 아무 작업도 수행하지 않습니다.
그렇기 때문에 다른 URL과 일치하도록 URL을 변경하는 것이 해결책입니다.