* [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

B<deb-update.pl> [I<options>]

=head1 DESCRIPTION

I have no ability to keep my PC running for a days, so I'm afraid of B<apt-get upgrade> command which suggests me to update thousand of packages. B<deb-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> I<FILTER>

Select only packages that match Perl regex I<FILTER>.

=item B<-c> I<COUNT>

Select only first I<COUNT> packages.

=item B<-y>

Do not ask stupid questions.

=item B<-q>

Be quiet.

=item B<-d>

Use B<apt-get dist-upgrade> instead of B<apt-get upgrade> when looking for packages to upgrade.

=back

=head1 NOTE

B<deb-update.pl> invokes B<apt-get>, so perhaps you'll want to run it as root.

=head1 LICENSE

L<perlartistic>

=head1 AUTHOR

Roman Cheplyaka E<lt>[EMAIL PROTECTED]<gt>

=cut

Attachment: signature.asc
Description: Digital signature

Ответить