27.01.2009 05:28

zbборьба со старыми пакетами в apt

Дошли руки и совесть сделать чудовище для получения списка пакетов которые хорошо бы обновить :)



Cуть в следующем примерно: мне неинтересно обновлять скажем iceweasel версии 3.0.5-1 до 3.0.5-3, но зато интересно обновить до версии 3.0.6, для получения списка установленных вручную пакетов я и написал сегодня сие убожество:

 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
aptitude -w 3000 -F '%p %50v %50V' search '!~M ~U' |

perl -p -e '

s/^(<^\s>+)\s+(<^\s>+)\s+(<^\s>+)\s+$//;

$p=$1;$o="";$n="";@old=split(/\./,$2);@new=split(/\./,$3);

for ($a=0;$a<3;$a++){

$o.="$old<$a>.";

$n.="$new<$a>."

};

$n=~s/<-\~>.+$//;

$o=~s/<-\~>.+$//;

($o eq $n) || print "$p $o $n\n";

'



на выходе что-то типа:

apt 0.7.19. 0.7.20.

apt-utils 0.7.19. 0.7.20.

iceweasel-gnome-support 3.0.4 3.0.5

iptables 1.4.1. 1.4.2

libgcc1 1:4.3.2 1:4.3.3

libgtk-vnc-1.0-0 0.3.7 0.3.8

libgtksourceview2.0-0 2.4.0 2.4.1

libgtksourceview2.0-common 2.4.0 2.4.1

libnss3-tools 3.12.0 3.12.1

libstdc++6 4.3.2 4.3.3

logrotate 3.7.1 3.7.7

tshark 1.0.4 1.0.5

whois 4.7.28. 4.7.30.

wireshark 1.0.4 1.0.5



Если кто-то знает способ получения такого списка каким нибудь нормальным путём - скажите. Я почему-то не нашёл.



Тэги: apt aptitude bash debian perl ubuntu лажасофт
+ 2 -
Похожие Поделиться

zb 27.01.2009 07:38 #
совесть замучала, заставила переписать хотя-бы чуть чуть.

#!/usr/bin/perl
use strict;
my $num = ( @ARGV<0> or 1 );
my $spatt = ( @ARGV<1> or '!~M ~U' );
print "will remove last $num dot and search by '$spatt'\n";
open( apti, "aptitude -w 3000 -F '%p %50v %50V' search '$spatt'|" );
while (<apti>) {
s/^(<^\s>+)\s+(<^\s>+)\s+(<^\s>+)\s+$//;
my $p = $1;
my $old_real = $2;
my $new_real = $3;
my $o = $2;
my $n = $3;
$o =~ s/<\-\~>.+$//;
$n =~ s/<\-\~>.+$//;
my @old = split( /\./, $o );
my @new = split( /\./, $n );
my $ol = scalar(@old);
$o = $n = "";

for ( my $a = 0 ; $a <= $ol - $num ; $a++ ) {
$o .= "$old<$a>.";
$n .= "$new<$a>.";
}
( $o eq $n ) || print "$p $old_real -> $new_real \n";
}