Ci dessous un petit script pratique (mais lent) pour lister les "paquets
+ versions" (ligne de "dpkg -l" en fait) utiles au fonctionnement des
ex�cutables d'un repertoire entier. Ca doit �tre pratique pour fabriquer
un package (c'est pour cela que je l'ai fait). Maintenant que le script
marche, j'imagine qu'il existe une commande ad�quate d�j� existante.
___________________________________
fichier /usr/local/bin/lsdepend (qui fait le boulot):

#!/bin/sh
ls -l  | grep "^-rwx" | sed -e '1,$s/^[-a-z0-9 A-Z:�����.]\{0,55\}/ldd
/' | sh 2> /dev/null | sed -e '1,$s/=.*//' | sed -e '1,$s/^ */dpkg -S /'
> /tmp/__lsdepend
#fin de la premiere ligne
rmdoublons /tmp/__lsdepend /tmp/__lsdepssdoub
sh /tmp/__lsdepssdoub | sed -e '1,$s/:.*//' > /tmp/__lsdepfin
rmdoublons /tmp/__lsdepfin /tmp/__lsdepresultat
# debut de la cinquieme ligne
cat /tmp/__lsdepresultat | sed -e '1,$s/^/dpkg -l | grep
"^[a-zA-Z]\\{2\\} * /' | sed -e '1,$s/$/ "/' |sh
#fin de la cinquieme ligne
____________________________________
fichier /usr/local/bin/rmdoublons (enleve les lignes identiques du
fichier $1, resultat dans $2):

#!/usr/bin/perl
open(SORTIE , ">$ARGV[1]");
#print "Ouverture de $ARGV[1] en sortie\n";
open(ENTREE , $ARGV[0]);
#print "Ouverture de $ARGV[0] en entree\n";
@liste=();
while($ligne=<ENTREE>)
{
#    print "Etude de $ligne\n";
    $d=0;
    foreach $_ (@liste) {
        if ($ligne eq $_) {$d=1};
    }
    if ($d == 0) {
        @liste = (@liste,$ligne);
        print SORTIE $ligne;
 };
}
close(SORTIE);
close(ENTREE);
_________________________________
Voil�, j'ignore si �a peut vous aider mais �a reste un bel exercice
d'utilisation du shell et de sed!

Fran�ois BOISSON

Répondre à