Решено: Очистка distfiles (Удаление устаревших исходников.)
Модератор: /dev/random
-
minder
- Сообщения: 331
- ОС: AIX, Solaris,RHEL,SLES,Gentoo
Решено: Очистка distfiles
Как очистить каталог distfiles от исходников для которых нет соотв. версии ebuild'ов?
-
(asper
- Бывший модератор
- Сообщения: 1661
- Статус: nano vi sed awk !
- ОС: Работает как часы !
Re: Решено: Очистка distfiles
eclean -d
было недавно я уже спрашивал подобный вопрос
Сомнительно доброе привидение
-
Juliette
- Сообщения: 5058
- Статус: ROSA Lab
- ОС: Ubuntu LTS, Mandriva 2011
Re: Решено: Очистка distfiles
хочу только заметить, что я, например, ядро обновляю далеко не так часто, как софт, так что есть смысл куда-нить сохранить тарболл ядра (помимо исходников в /usr/src), так, на всякий пожарный 
-
_YT_
- Сообщения: 239
- ОС: Gentoo Linux ~amd64
Re: Решено: Очистка distfiles
Можно еще скриптик простейший написать, который после установки пакета будет искать в выводе
emerge -fv <packages> нужные файлы, а оставшиеся с таким же именем можно удалить, только Juliette во многом права, иногда некоторые версии пакетов лучше хранить например bzip может потребоваться разным пакетам разных версий.
Где-товидел скрипт, который чистит disftiles достаточно интеллектуально.
eclean -d не пользовался, посмотрю в блюжайшее время, что он умеет.
emerge -fv <packages> нужные файлы, а оставшиеся с таким же именем можно удалить, только Juliette во многом права, иногда некоторые версии пакетов лучше хранить например bzip может потребоваться разным пакетам разных версий.
Где-товидел скрипт, который чистит disftiles достаточно интеллектуально.
eclean -d не пользовался, посмотрю в блюжайшее время, что он умеет.
-
Juliette
- Сообщения: 5058
- Статус: ROSA Lab
- ОС: Ubuntu LTS, Mandriva 2011
Re: Решено: Очистка distfiles
вот в закромах откопала
cleandistfiles.pl
по дефолту идёт с опцией --pretend, так что для реальной очистки запускать с опцией --nopretend
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
Спасибо!