Gentoo Forums
Gentoo Forums
Gentoo Forums
Quick Search: in
[TIP] Identificare le USE inutili
View unanswered posts
View posts from last 24 hours
View posts from last 7 days

 
Reply to topic    Gentoo Forums Forum Index Forum italiano (Italian) Risorse italiane (documentazione e tools)
View previous topic :: View next topic  
Author Message
riverdragon
Veteran
Veteran


Joined: 14 Sep 2006
Posts: 1269
Location: Verona

PostPosted: Thu Jan 11, 2007 10:23 pm    Post subject: [TIP] Identificare le USE inutili Reply with quote

Per chi, come me, ha un sacco di USE in make.conf può tornare utile questo piccolo script che ho appena provato:
Code:
source /etc/make.conf
for i in $USE
do   if [ `equery hasuse $i 2>/dev/null | wc -l` -eq 0 ]
        then echo -e "\nLa use $i non e' usata\n"
        elif [ `equery hasuse $i 2>/dev/null | wc -l` -eq 1 ]
        then echo "Il pacchetto `equery hasuse $i | cut -f4` e' l'unico ad utilizzare la USE $i"
        fi
done
Non fa miracoli, ci mancherebbe, ma senza andare a verificare le use inutili manualmente ora sono in grado di rimuovere 5 use, e valuterò quali altre spostare in package.use.
E' poco efficiente in quanto chiama almeno due volte equery per ogni pacchetto, ma utilizzando variabili temporanee saltano i controlli, se avete miglioramenti, accomodatevi.


Last edited by riverdragon on Mon May 07, 2007 5:09 pm; edited 1 time in total
Back to top
View user's profile Send private message
bandreabis
Advocate
Advocate


Joined: 18 Feb 2005
Posts: 2089
Location: イタリアのロヂで

PostPosted: Thu Jan 11, 2007 10:40 pm    Post subject: Reply with quote

Io 9 USE inutili (sono su AMD64 ma erori rimasugli di tentativi a 32bit :P ):
Quote:
$ ./uses

La use gstreamer non e' usata


La use dvd non e' usata


La use musepack non e' usata


La use dvdr non e' usata


La use svga non e' usata


La use yahoo non e' usata


La use win32codecs non e' usata


La use real non e' usata


La use offensive non e' usata


Bel TIP. :D

PS: io voglio usare "offensive"... :(

PPS: di certo non sono io la persona adatta a migliorare uno script, è già tanto che son riuscito ad avviarlo... :roll:
Back to top
View user's profile Send private message
skypjack
l33t
l33t


Joined: 05 Aug 2006
Posts: 884
Location: Italia - Firenze

PostPosted: Fri Jan 12, 2007 8:45 am    Post subject: Reply with quote

Carino, complimenti.
Unica commento: io non uso la USE globale bluetooth, ma è preventiva, se un giorno qualche pacchetto la vorrà, eccola lì ad aspettare.
Se la tolgo, saranno guai.
Inoltre, magari vado a togliere flag che non uso ma che comportano l'installazione di pacchetti e allora...
Insomma, complimenti ma come sempre: occhio a ciò che togliete!!

Ps: Scusa se te lo dico, ma mi da come non usata la USE javascript che invece è usata da links...
Pps: Stessa cosa per bluetooth, dga, symlink, xpm, foomaticdb, lm_sensors, ieee1394...

Insomma, tutte quelle che mi dava per inutili in realtà le uso. Forse ha bisogno di una revisione, questo script! :?
Spero che il mio bug-report ti sia d'aiuto...
Buon lavoro!
Back to top
View user's profile Send private message
crisandbea
Veteran
Veteran


Joined: 03 Jul 2005
Posts: 1778
Location: BOSCO (SA) ... ma domiciliato a Bologna....

PostPosted: Fri Jan 12, 2007 9:14 am    Post subject: Reply with quote

forse usando euse al posto di equery, apportando qualche piccola modifica allo script sarebbe ottimo..

cmq bravo, idea utile.

ciauz
Back to top
View user's profile Send private message
Kernel78
Moderator
Moderator


Joined: 24 Jun 2005
Posts: 3652

PostPosted: Fri Jan 12, 2007 9:43 am    Post subject: Reply with quote

Dalla versione 0.7.9 eix riporta anche le USE con cui un pacchetto è installato, penso che con grep dovrebbe dare ottimi risultati :wink:
_________________
Le tre grandi virtù di un programmatore: pigrizia, impazienza e arroganza. (Larry Wall).
Prima di postare un file togli i commenti con
Code:
grep -vE '(^[[:space:]]*($|(#|!|;|//)))'
Back to top
View user's profile Send private message
drizztbsd
Retired Dev
Retired Dev


Joined: 21 Nov 2004
Posts: 278
Location: Cesano Maderno

PostPosted: Fri Jan 12, 2007 9:54 am    Post subject: Reply with quote

Code:
#!/bin/sh

USE=$(. /etc/make.conf ; echo $USE)
CR="
"

for i in $USE; do
    [ -z "${i%-*}" ] && continue
    pkg=$(egrep -lr "(^|[^a-z])$i(\$|[^a-z])" --include IUSE /var/db/pkg | sed -e 's:^/var/db/pkg/::' -e 's:/IUSE$::' )
    if [ -z "$pkg" ]; then
        echo "La use $i non e' usata"
    elif [ "${pkg}" = "${pkg%$CR*}" ]; then
        echo "Il pacchetto $pkg e' l'unico ad utilizzare la USE $i"
    fi
done


Una roba del genere dovrebbe essere MOLTO più veloce (e soprattutto non dipende da gentoolkit) 8)
p.s. entrambi non supportano package.use
_________________
Gentoo/Alt lead
Gentoo/*BSD and Gentoo/FreeBSD deputy lead
Paludis contributor
Back to top
View user's profile Send private message
codadilupo
Advocate
Advocate


Joined: 05 Aug 2003
Posts: 3134

PostPosted: Fri Jan 12, 2007 11:43 am    Post subject: Reply with quote

non ho ben afferrato a cosa serve questo script.
Io posso avere anche delle use che non usa nessun pacchetto, ok, ma il vero problema, secondo me, è avere una use in /etc/make.conf che è anche specificata in packages.use... non sarebbe piu' utile scovare questo tipo di ridondanza ?

Coda
Back to top
View user's profile Send private message
crisandbea
Veteran
Veteran


Joined: 03 Jul 2005
Posts: 1778
Location: BOSCO (SA) ... ma domiciliato a Bologna....

PostPosted: Fri Jan 12, 2007 11:54 am    Post subject: Reply with quote

codadilupo wrote:
non ho ben afferrato a cosa serve questo script.
Io posso avere anche delle use che non usa nessun pacchetto, ok, ma il vero problema, secondo me, è avere una use in /etc/make.conf che è anche specificata in packages.use... non sarebbe piu' utile scovare questo tipo di ridondanza ?

Coda


io personalmente uso la seguente politica:
Code:

euse -i flaguse
per verificare se è una flag locale o globlale, se è locale e non la usano più di 4-5 pacchetti la inserisco per ogni pacchetto in /etc/portage/package.use, se invece è globale la inserisco direttamente in /etc/make.conf;

ciauz
Back to top
View user's profile Send private message
Kernel78
Moderator
Moderator


Joined: 24 Jun 2005
Posts: 3652

PostPosted: Fri Jan 12, 2007 12:31 pm    Post subject: Reply with quote

crisandbea wrote:
io personalmente uso la seguente politica:
Code:

euse -i flaguse
per verificare se è una flag locale o globlale, se è locale e non la usano più di 4-5 pacchetti la inserisco per ogni pacchetto in /etc/portage/package.use, se invece è globale la inserisco direttamente in /etc/make.conf;

ciauz

è lo stesso discorso che ho avuto recentemente con chrome e anche a lui ho fatto notare che un approccio del genere è limitante ...
Io per esempio ho abilitato la USE globale hardened solo per il pacchetto syslog-ng nel package.use, se l'avessi specificata in make.conf avrei tutto un sistema hardened e non è quello che voglio.
Difficilmente saremo tutti concordi sulla definizione di USE inutili, alcuni ritengono inutili delle USE che non sono usate da nessun pacchetto installato mentre per altri è utile averle già pronte nell'eventualità di installare qualche pacchetto che le possa sfruttare (d'altronde gli stessi profili definiscono delle USE che al termine dell'installazione sono inutilizzate), altri ritengono inutile avere USE definite sia in make.conf che in package.use mentre per alcuni potrebbe essere comodo nel caso in cui si decida di rimuovere una USE da make.conf ma per qualche ragione serve per qualche specifico pacchetto e via dicendo ...

Il bello di Gentoo è la libertà di scelta e ognuno ha i suoi criteri soggettivi.
_________________
Le tre grandi virtù di un programmatore: pigrizia, impazienza e arroganza. (Larry Wall).
Prima di postare un file togli i commenti con
Code:
grep -vE '(^[[:space:]]*($|(#|!|;|//)))'
Back to top
View user's profile Send private message
skypjack
l33t
l33t


Joined: 05 Aug 2006
Posts: 884
Location: Italia - Firenze

PostPosted: Fri Jan 12, 2007 2:18 pm    Post subject: Reply with quote

Un plauso a kernel... Hai elegantemente riassunto il litigio dell'altro thread!! :D
Back to top
View user's profile Send private message
riverdragon
Veteran
Veteran


Joined: 14 Sep 2006
Posts: 1269
Location: Verona

PostPosted: Fri Jan 12, 2007 2:23 pm    Post subject: Reply with quote

Non ho capito cosa faccia, ma lo script di Drizzt Do` Urden funziona molto meglio.
Non è che spiegheresti cosa fa?
Back to top
View user's profile Send private message
Kernel78
Moderator
Moderator


Joined: 24 Jun 2005
Posts: 3652

PostPosted: Fri Jan 12, 2007 2:39 pm    Post subject: Reply with quote

riverdragon wrote:
Non ho capito cosa faccia, ma lo script di Drizzt Do` Urden funziona molto meglio.
Non è che spiegheresti cosa fa?

Se provi i comandi uno per uno te ne renderesti conto velocemente ...
Estrae le USE da make.conf, se le scorre e cerca tra i pacchetti installati quali hanno quella USE attiva ...
_________________
Le tre grandi virtù di un programmatore: pigrizia, impazienza e arroganza. (Larry Wall).
Prima di postare un file togli i commenti con
Code:
grep -vE '(^[[:space:]]*($|(#|!|;|//)))'
Back to top
View user's profile Send private message
drizztbsd
Retired Dev
Retired Dev


Joined: 21 Nov 2004
Posts: 278
Location: Cesano Maderno

PostPosted: Fri Jan 12, 2007 2:44 pm    Post subject: Reply with quote

riverdragon wrote:
Non ho capito cosa faccia, ma lo script di Drizzt Do` Urden funziona molto meglio.
Non è che spiegheresti cosa fa?

Eccome no :P

Code:
#!/bin/sh

#Qui potrei usare source /etc/make.conf ma così è più portabile
USE=$(. /etc/make.conf ; echo $USE)

#Un normalissimo \n
CR="
"

for i in $USE; do
    #Se la use è di tipo negativo (esempio -gdb) ignorala
    [ -z "${i%-*}" ] && continue
    #Vado a cercare direttamente nel database dei pacchetti (/var/db/pkg) la use (per le opzioni man grep)
    #È molto più veloce di equery perché non usa python o altre porcate simili
    pkg=$(egrep -lr "(^|[^a-z])$i(\$|[^a-z])" --include IUSE /var/db/pkg | sed -e 's:^/var/db/pkg/::' -e 's:/IUSE$::' )
    if [ -z "$pkg" ]; then
        echo "La use $i non e' usata"
    #se pkg è uguale a package fino al primo \n vuol dire che cen'è solo uno
    #qui andrebbe anche bene il wc -l, solo che forkerebbe per ogni ciclo. così invece no
    elif [ "${pkg}" = "${pkg%$CR*}" ]; then
        echo "Il pacchetto $pkg e' l'unico ad utilizzare la USE $i"
    fi
done

_________________
Gentoo/Alt lead
Gentoo/*BSD and Gentoo/FreeBSD deputy lead
Paludis contributor
Back to top
View user's profile Send private message
Display posts from previous:   
Reply to topic    Gentoo Forums Forum Index Forum italiano (Italian) Risorse italiane (documentazione e tools) All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum