Re: Обновление дистрибутива по частям

2007-09-30 Пенетрантность Roman Cheplyaka
* [EMAIL PROTECTED] [EMAIL PROTECTED] [2007-09-25 12:42:29+0400]
 Перед $subj возникли 2 вопроса.
 
 1) Есть ли возможность получить общий _размер_ всех пакетов (не просто 
 список),
 которые будут/должны быть обновлены/установлены по aptitude dist-upgrade?
 
 2) Возможно ли ограничить aptitude dist-upgrade на предмет трафика
 (размера конечно, не скорости)
 или может можно как-то задать/ограничить обновляемые категории, типа
 admin, web, utils, devel, x11, ... ?

Писал энное время для себя скрипт.  Возможно, Вам пригодится. Там дока в
POD (perldoc deb-update.pl)
Да, с тех пор я, конечно, сменил apt-get на aptitude :)

-- 
Roman I. Cheplyaka
http://ro-che.info/
#!/usr/bin/perl -w
use strict;

use Getopt::Std;
our $VERSION = '1.0';
our ($opt_y, $opt_q, $opt_f, $opt_c, $opt_d);

getopts('yqdf:c:');
print Getting;
print  first $opt_c if $opt_c;
print  packages;
print  which match filter $opt_f if $opt_f;
print .\n;

# Getting list of packages
my $apt_get = $opt_d ? 'dist-upgrade' : 'upgrade';
open APT, apt-get -s $apt_get| or die Cannot access apt-get: $!\n;
my @packages;
while (APT)
{
	next unless /^Inst (\S*)/;
	my $cur_package = $1;
	next if $opt_f  ($cur_package !~ /$opt_f/oi);
	push @packages, $cur_package;
	last if $opt_c  (@packages = $opt_c);
}
close APT;

# Printing info
unless (@packages)
{
	print Sorry, no packages found.\n unless $opt_q;
	exit;
}

unless ($opt_q)
{
	print I've found . scalar @packages . packages:\n;
	print join(\n, @packages), \n;
}

unless ($opt_q || $opt_y)
{
	print Do you want to continue [Y/n]?\n;
	my $answer = STDIN;
	chomp $answer;
	if ($answer  ($answer !~ /^y/i))
	{
		exit;
	}
}

exec apt-get, 'install', @packages;

=pod

=head1 NAME

Deb-Update -- partially update your Debian distro

=head1 SYNOPSIS

Bdeb-update.pl [Ioptions]

=head1 DESCRIPTION

I have no ability to keep my PC running for a days, so I'm afraid of Bapt-get upgrade command which suggests me to update thousand of packages. Bdeb-update is intended to make it easy to partially update the distro. You can specify regex filter for packages and maximum number of them to be updated.

=head1 OPTIONS

=over 5

=item B-f IFILTER

Select only packages that match Perl regex IFILTER.

=item B-c ICOUNT

Select only first ICOUNT packages.

=item B-y

Do not ask stupid questions.

=item B-q

Be quiet.

=item B-d

Use Bapt-get dist-upgrade instead of Bapt-get upgrade when looking for packages to upgrade.

=back

=head1 NOTE

Bdeb-update.pl invokes Bapt-get, so perhaps you'll want to run it as root.

=head1 LICENSE

Lperlartistic

=head1 AUTHOR

Roman Cheplyaka Elt[EMAIL PROTECTED]gt

=cut


signature.asc
Description: Digital signature


Обновление дистрибутива по частям

2007-09-25 Пенетрантность andrey . d . nikitin
Привет.

Перед $subj возникли 2 вопроса.

1) Есть ли возможность получить общий _размер_ всех пакетов (не просто список),
которые будут/должны быть обновлены/установлены по aptitude dist-upgrade?

2) Возможно ли ограничить aptitude dist-upgrade на предмет трафика
(размера конечно, не скорости)
или может можно как-то задать/ограничить обновляемые категории, типа
admin, web, utils, devel, x11, ... ?