Apt-Mirror
apt-mirror clean 腳本沒有刪除任何內容
我正在使用
apt-mirror
創建本地 Ubuntu 鏡像。它確實成功地從另一個鏡像下載文件(每周大約有幾個 GB),但從不刪除任何內容或指示可以刪除的文件。最終,我可能會用完可用空間。
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 bytes $$… 完畢。 刪除 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
解決方案:
將最後一行更改為:
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
,因此要決定要清理哪些目錄,它應該匹配這些目錄中的任何一個,如果不匹配則什麼也不做。這就是為什麼更改網址以匹配其他網址是解決方案的原因。