[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: niveau de dépendance des paquets




On Thu, 14 Mar 2002, Romuald DELAVERGNE wrote:

> #!/bin/sh
> 
> maxniv=0
> niveau=0
> tab=""
> 
> ndep() {
>    echo "${tab}$1 ($niveau)"
>    tab="  $tab"
>    for package in `apt-cache depends $1 | awk '/  Depends: / {print $2}'`; 
> do
>      [ "$package" = "$1" ] && continue
>      niveau=$((niveau+1))
>      [ $niveau -gt $maxniv ] && maxniv=$niveau
>      ndep $package
>    done
>    tab=`echo "$tab" | cut -c 3-`
>    niveau=$((niveau-1))
> }
> 
> ndep $1
> echo -e "\nn($1)=${maxniv}"
> exit 0
> 
> 
> -- 
> To UNSUBSCRIBE, email to debian-user-french-request@lists.debian.org
> with a subject of "unsubscribe". Trouble? Contact listmaster@lists.debian.org
> 


Voici la version modifiee, il n'est pas trop parfait, car il y a des
petites redondances, mais donne malgre tout une bonne idee :-)

Il n'est evidemment pas performant, a cause du for, qui continue de
verifier meme s'il a deja trouve.  Je trouve cela laid de mettre un break
dans un for.. je vous laisse le loisir d'utiliser le while !


-----------------
#!/bin/sh

ok=1
pack=""
maxniv=0
niveau=0
tab=""

ndep() {
   echo "${tab}$1 ($niveau)"
   tab="  $tab"
   for package in `apt-cache depends $1 | awk '/  Depends: / {print $2}'`;
   do

     for i in $pack
     do
       if [ "$i" == "$package" ]; then
         ok=0
       fi
     done

     pack="$pack ${package}"

     [ "$package" = "$1" ] && continue
     niveau=$((niveau+1))
     [ $niveau -gt $maxniv ] && maxniv=$niveau

     if [ $ok == 1 ]; then
       ndep $package
     fi

     ok=1
   done

   tab=`echo "$tab" | cut -c 3-`
   niveau=$((niveau-1))
}

ndep $1
echo -e "\nn($1)=${maxniv}"
exit 0

----------------------------------------------



Reply to: