Решено: Очистка distfiles (Удаление устаревших исходников.)

Sabayon, Calculate, Funtoo, Exherbo

Модератор: /dev/random

minder
Сообщения: 331
ОС: AIX, Solaris,RHEL,SLES,Gentoo

Решено: Очистка distfiles

Сообщение minder »

Как очистить каталог distfiles от исходников для которых нет соотв. версии ebuild'ов?
Спасибо сказали:
Аватара пользователя
(asper
Бывший модератор
Сообщения: 1661
Статус: nano vi sed awk !
ОС: Работает как часы !

Re: Решено: Очистка distfiles

Сообщение (asper »

minder писал(а):
13.03.2007 11:31
Как очистить каталог distfiles от исходников для которых нет соотв. версии ebuild'ов?

eclean -d
было недавно я уже спрашивал подобный вопрос
Сомнительно доброе привидение
Спасибо сказали:
Аватара пользователя
Juliette
Сообщения: 5058
Статус: ROSA Lab
ОС: Ubuntu LTS, Mandriva 2011

Re: Решено: Очистка distfiles

Сообщение Juliette »

хочу только заметить, что я, например, ядро обновляю далеко не так часто, как софт, так что есть смысл куда-нить сохранить тарболл ядра (помимо исходников в /usr/src), так, на всякий пожарный :)
Спасибо сказали:
_YT_
Сообщения: 239
ОС: Gentoo Linux ~amd64

Re: Решено: Очистка distfiles

Сообщение _YT_ »

Можно еще скриптик простейший написать, который после установки пакета будет искать в выводе

emerge -fv <packages> нужные файлы, а оставшиеся с таким же именем можно удалить, только Juliette во многом права, иногда некоторые версии пакетов лучше хранить например bzip может потребоваться разным пакетам разных версий.

Где-товидел скрипт, который чистит disftiles достаточно интеллектуально.

eclean -d не пользовался, посмотрю в блюжайшее время, что он умеет. :rolleyes:
Спасибо сказали:
Аватара пользователя
Juliette
Сообщения: 5058
Статус: ROSA Lab
ОС: Ubuntu LTS, Mandriva 2011

Re: Решено: Очистка distfiles

Сообщение Juliette »

вот в закромах откопала
cleandistfiles.pl
по дефолту идёт с опцией --pretend, так что для реальной очистки запускать с опцией --nopretend

Код:

#!/usr/bin/perl -w use strict; my $lastname = 0; my $lastversion; my $lastext; my @stalefiles; my @files; # Insert your exclusions here with trailing '-' my %maskedfiles = ( 'X420src-' => 1, 'gcc-' => 1, 'freetype-' => 1 ); # Root check if ($< != 0) { print "You must be root to run this script.\n"; exit 0; } # Determine sources present on the system print "Determining available tarballs in /usr/portage/distfiles ...\n"; opendir(DIR, "/usr/portage/distfiles"); @files = sort(readdir(DIR)); closedir(DIR); # Grab names/versions, checking each time whether current distfile # has been superceded. Push anonymous array ref containing required # info into @stalefiles array. print "Determining stale versions ...\n"; foreach (@files) { my $name; my $version; # Only operate on tarballs if (/(.+?\-)([0-9r\.\-]+)(\.tar\.gz|\.tgz|\.tar.bz2)/s) { $name = $1; $version = $2; next if ($maskedfiles{$name}); # Ignore "masked" files if ($lastname && $name eq $lastname) { if ($version gt $lastversion) { push (@stalefiles, [$name, $version, $lastversion, $lastext]); } } $lastname = $name; $lastversion = $version; $lastext = $3; } } if (@stalefiles == 0) { print "\nNo stale distfiles have been detected on your system!\n"; exit 0; } if ($ARGV[0] && $ARGV[0] eq '--nopretend') { # User requested deletion so here goes ... print "*Nopretend* mode, deleting stale files:\n\n"; foreach (@stalefiles) { my ($name, $version, $lastversion, $ext) = @{$_}; unlink('/usr/portage/distfiles/' . $name . $lastversion . $ext); print "Deleted: $name$lastversion in favour of $name$version\n"; } } else { # Safe mode (default)! print "\7*Pretend* mode, will only pretend to delete files.\nTo actually delete the files, reinvoke with the --nopretend parameter.\n\n"; foreach (@stalefiles) { my ($name, $version, $lastversion, $ext) = @{$_}; print "Would delete: $name$lastversion in favour of $name$version\n"; } } 1;

Спасибо сказали:
minder
Сообщения: 331
ОС: AIX, Solaris,RHEL,SLES,Gentoo

Re: Решено: Очистка distfiles

Сообщение minder »

Спасибо!
Спасибо сказали: