Nieuws:

Welkom, Gast. Alsjeblieft inloggen of registreren.
Heb je de activerings-mail niet ontvangen?

Auteur Topic: lijst repositories  (gelezen 868 keer)

Offline letstrynl

  • Lid
lijst repositories
« Gepost op: 2010/10/24, 13:04:15 »
Ik probeer op een server een betrouwbare lijst van gebruikte repositories te krijgen.
Zodat ik bij updates aan de beheerder kan laten zien waar de updates vandaan komen.
Vooralsnog lijkt er geen commando voor te bestaan.

Het gekke is dat de enige output die de goede informatie geeft een Ignore regel is.

Op de commandline:

/usr/bin/apt-get update 2>&1 | grep " Translation-"

Dit levert de informatie op die ik zoek:

...
Ign http://nl.archive.ubuntu.com/ubuntu/ lucid/restricted Translation-en_US
Ign http://nl.archive.ubuntu.com/ubuntu/ lucid/main Translation-en_US
...

Als ik echter Perl gebruik, wordt om de een of andere reden de Translation regel steeds weggelaten.

Voorbeeld code:

#!/usr/bin/perl

use strict;
use warnings;

  foreach ( split( '\n',qx{ ( LC_ALL=C /usr/bin/apt-get update 2>&1 ) } ) )
    {
    print $_,"\n";
    }

Iemand enig idee hoe ik dit oplos ?

Ik had eigenlijk nog geen zin om de source van apt-get of dpkg te gaan bekijken ;-)
« Laatst bewerkt op: 2010/10/24, 13:34:33 door letstrynl »

Offline letstrynl

  • Lid
Re: lijst repositories
« Reactie #1 Gepost op: 2010/10/24, 14:25:28 »
Nah ja, heb het al op een andere manier opgelost:

#!/usr/bin/perl

use strict;
use warnings;

my $content;
my @a;

  $content = qx{ ( LC_ALL=C /bin/cat /etc/apt/sources.list /etc/apt/sources.list.d/* 2>&1 ) };
  foreach my $line ( split( '\n',$content ) )
    {
    if ( $line =~ /^deb / )
      {
      $line =~ s/ #.*$//g if $line =~ / #/;
      @a = split( ' ',$line );
      for ( my $i=3; $i<=$#a; $i++ ) { print "$a[2]/$a[$i] $a[1]\n"; }
      }
    }

Kun je het gebruiken, doe er je voordeel mee ;-)

Case closed for now.