* [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
signature.asc
Description: Digital signature

