# Tool "rimuovi pacchetti non utilizzati da tanto"

## rb34

Dopo l'idea dello script "undo" (https://forums.gentoo.org/viewtopic-t-622781-highlight-.html), me ne è venuta un'altra per la manutenzione della nostra cara Gentoo.

Non so voi, ma a volte installo pacchetti che poi non uso più e che mi dimentico. e che contribuiscono a occupare lo spazio disco e ad allungare i tempi di un eventuale emerge -u world.

Pertanto quello che mi piacerebbe avere, e che non credo esista, è un tool che, dicendogli "voglio che mi indichi i pacchetti che non utilizzo da più di x giorni", me ne faccia un elenco, per poi decidere se rimuoverli.

La mia idea è sfruttare la data di accesso ai file che compongono i pacchetti, assegnando poi i file ai pacchetti in modo efficiente e indicando ad esempio la percentuale di file del pacchetto non usati, indicativa del "non uso" del pacchetto (se pari a 100% il pacchetto non è utilizzato per niente).

Prob.te si dovrebbe procedere in modo analogo a quanto fa  revdep-rebuild.

Esiste già per caso tale attrezzo? Avete idee in proposito?

----------

## skypjack

Scusa, ma accedere a tutti i singoli file di tutti i singoli pacchetti è un bel lavoro! In termini di prestazioni, intendo, non è il massimo ... L'idea è buona, non fraintendere, non critico la proposta, ma forse andrebbe pensato un miglior criterio per vlassificare i pacchetti come usati o meno, piuttosto che controllare uno per uno i file che li compongono ... Non trovi??

----------

## Jisaw

 *skypjack wrote:*   

> Scusa, ma accedere a tutti i singoli file di tutti i singoli pacchetti è un bel lavoro! In termini di prestazioni, intendo, non è il massimo ... L'idea è buona, non fraintendere, non critico la proposta, ma forse andrebbe pensato un miglior criterio per vlassificare i pacchetti come usati o meno, piuttosto che controllare uno per uno i file che li compongono ... Non trovi??

 

Il come classificare i pacchetti è una scelta di implementazione che mi sembra un po' precoce criticare   :Smile:   Soprattutto se fatta pensando a delle ipotetiche basse prestazioni...solitamente le ottimizzazioni si fanno dopo aver scritto un software, non prima. Comunque, a me l' idea piace  :Smile: 

----------

## rb34

caro skypjack... tu hai ragione, il lavorio su disco ci sarebbe, ma un pacchetto, una volta installato, non è altro che i suoi file, e allora come fare a determinare l'uso di un pacchetto se non accedendo alle statistiche dei suoi file?

Ma non trovo tutto questo così pazzesco, primo perché tutto ciò sarebbe una operazione di manutenzione saltuaria, secondo perché quando si lancia updatedb per locate di fatto si fa la stessa cosa che ho descritto io (assegnazione ai pacchetti a parte)

----------

## Onip

molto più semplicemente basta aprirsi il world file ( /var/lib/portage/world ) e cancellare le righe relative ai programmi che non si usano (basta un'occhiata, non c'è bisogno delle statistiche secondo me.)

e poi un bel

```
# emerge --depclean -a
```

e passa la paura!

----------

## Cazzantonio

In ogni caso sarebbe un tool carino per collezionare statistiche sul sistema (quali sono le librerie che vengono usate più di frequente, quelle inutilizzate, quali programmi vengono utilizzati e con che frequenza...).

Trovo complesso farlo per tutta una serie di problematiche relative ai tempi di accesso, ma se fosse fattibile (semplicemente) sarebbe un tool carino.

----------

## Jisaw

 *Cazzantonio wrote:*   

> In ogni caso sarebbe un tool carino per collezionare statistiche sul sistema (quali sono le librerie che vengono usate più di frequente, quelle inutilizzate, quali programmi vengono utilizzati e con che frequenza...).
> 
> Trovo complesso farlo per tutta una serie di problematiche relative ai tempi di accesso, ma se fosse fattibile (semplicemente) sarebbe un tool carino.

 

Beh si potrebbe pensare di sviluppare un primo tool simile ad equery che crei statistiche su un singolo pacchetto e poi vedere come si comporta quando viene invocato sull' intero sistema. In ogni caso penso che si possano fare diverse ottimizzazioni in modo da evitare di scansire tutti i file di un singolo pacchetto (per esempio, se ho un pacchetto con eseguibili+librerie+share prima di tutto testo le date degli eseguibili e poi eventualmente estendo la ricerca).

----------

## =DvD=

Io non lo userei: in caso leggo il world rimuovendo quello che non mi serve. emerge --depclean a seguire.

Ricordo che usando propriamente --oneshot il file world rimane pulito.

----------

## Kernel78

 *=DvD= wrote:*   

> Io non lo userei: in caso leggo il world rimuovendo quello che non mi serve. emerge --depclean a seguire.
> 
> Ricordo che usando propriamente --oneshot il file world rimane pulito.

 

un tool del genere potrebbe aiutarti a notare che magari una libreria che hai installato per una USE di un pacchetto non viene mai usata, quindi potresti togliere la USE da quel pacchetto e rimuovere una libreria inutile.

----------

## rb34

Kernel78 ha colto il punto: il world senza dubbio è abbastanza piccolo e si potrebbero togliere a mano pacchetti non usati, ma ci sono miriadi di dipendenze che, a meno di non fare un tuning maniacale delle USE flag, rimangono lì a occupare solo spazio disco e tempo cpu in compilazione.

Il tool che ho proposto secondo me dovrebbe, per essere efficiente, operare a livello globale, cioè:

1) creare una lista di tutti i pacchetti con i relativi file associati

2) leggere le date di accesso di tutti i file su disco

3) aggiungere alle informazioni create al punto (1) quelle collezionate al punto (2)

4) tirare fuori qualche bella indicazione e/o statistica

ho idea che leggere da disco le informazioni sui file relativi a un pacchetto, per poi passare al pacchetto successivo, non sfrutti la cache o le ottimizzazioni hardware della lettura disco, per quello ho in mente una lettura delle info di tutti i file in un colpo solo. Poi ovviamente si potrebbe eliminare la dir dei doc e tante altre, e il tutto si snellirebbe parecchio.

Tuttavia le mie conoscenze a livello di tool e strutture gentooistiche sono un po' carenti: per esempio, per avere la lista di tutti i file dei pacchetti col nome del pacchetto relativo in modo efficiente, quale è il modo migliore? io al momento conosco equery files, ma richiamarlo tante volte non mi pare proprio il caso

----------

## =DvD=

 *Kernel78 wrote:*   

> un tool del genere potrebbe aiutarti a notare che magari una libreria che hai installato per una USE di un pacchetto non viene mai usata, quindi potresti togliere la USE da quel pacchetto e rimuovere una libreria inutile.

 

Scusate se faccio il bastian contrario  :Smile: 

Ma se io mi compilo mplayer con xvid e' perche' voglio che il mio mplayer legga gli xvid.

Poi puo' anche passare un mese o un anno senza che ne legga uno, ma -se- ho compilato con la use xvid e' -perche'- voglio che mplayer legga gli xvid.

Stessa cosa vale per le altre use.

Ho l'impressione che usando correttamente gli strumenti che ci sono gia' non si ponga il problema.

IMHO se uno vuole installare un pacchetto, prima si spara un emerge -pv e si legge le use disponibili, poi, anche con tools come ufed, guarda quelle use cosa fanno, a questo punto decide se abilitarla globalmente o solo per quel singolo pacchetto con i files in /etc/portage/.

Questo e' il modo di gestire gentoo, se qualcuno fa diversamente e se la sporca, la soluzione e' fare nel modo corretto che esiste gia', non creare altri tools (che sono cmq benvenuti, pero' butterei le forze su altri problemi di gentoo).

Umilmente  :Smile: 

----------

## Kernel78

 *=DvD= wrote:*   

> Scusate se faccio il bastian contrario 
> 
> Ma se io mi compilo mplayer con xvid e' perche' voglio che il mio mplayer legga gli xvid.
> 
> Poi puo' anche passare un mese o un anno senza che ne legga uno, ma -se- ho compilato con la use xvid e' -perche'- voglio che mplayer legga gli xvid.
> ...

 

Io capisco il tuo punto di vista ma ovviamente prendo in considerazione anche il mio.

Quando installo mi controllo tutte le USE e in genere dico :"Wow che figata, supporta anche questo e quello, aspetta che li abilito e quando trovo il tempo li studio e li configuro per bene" e poi mi ritrovo con ldap e postgres installati da più di un anno e mai nemmeno imparati ad utilizzare per mancanza di tempo.

Ormai li ho già tolti ma anche l'analista migliore può compiere degli errori e osservare l'utilizzo che viene fatto delle risorse può aiutare a rifinire meglio il sistema.

----------

## rb34

Addendum (da commenti di kernel78): il tool, analizzando le USE flag dei pacchetti, potrebbe addirittura elencare in ordine di "uso recente" le dipendenze (almeno dirette) che ogni flag si porta appresso, consentendo magari anche di disattivarle  :Smile: ).

Sì, a me piace, peccato che ora non ho tanto tempo, ma bisogna assolutamente farlo. Secondo me con una bella occhiata a equery si ha già un ottimo punto di partenza.

edit: aggiunto 

in ordine di "uso recente"

----------

## mcvash

statistiche... magari ti cancella un programma che non si usa quasi mai, ma una volta al mese serve..

meglio far manuale per me

----------

## rb34

 *mcvash wrote:*   

> statistiche... magari ti cancella un programma che non si usa quasi mai, ma una volta al mese serve..
> 
> meglio far manuale per me

 

ma infatti la decisione finale è a mano, ci mancherebbe, o al massimo configurabile se automatico.

Il tool darebbe supporto mostrando qualcosa tipo dei pulsanti "metti a off use flag e disinstalla dipendenza" o similare...

----------

## skypjack

Via, allora il linguaggio lo abbiamo già scelto o no?  :Laughing: 

----------

## rb34

Mah, io personalmente andrei sul python, mi pare che gentoo abbia già librerie per la gestione del portage, e poi mi è molto simpatico (peccato che l'ultima volta che ci ho programmato è stato due anni fa  :Smile: ) )

Più che altro poi permette ottima modularità, realizzabile in modo più complicato in bash, in cui ho visto che hanno scritto revdep-rebuild!! pazzia secondo me.... con tanto di cappello agli shell-script...

----------

## skypjack

ehm ... immagino che perl sia bocciato da tutti ...

----------

## lordalbert

in c no?  :Very Happy: 

----------

## Kernel78

se io mi metto a scrivere qualcosa o scrivo per bash o con ruby (il C mi ha annoiato al lavoro e gli altri liguaggi non hanno le potenzialità di ruby ... FLAME !!!  :Laughing:  )

----------

## rb34

il ruby non lo conosco ma ne ho sentito parlare bene. Beh, io per ora non faccio nulla, per cui fate un po' voi  :Smile: 

----------

## Kernel78

io nei ritagli di tempo sto buttando giù alcune prove per bash, giusto per farmi un'idea.

nulla di nemmeno lontanamente utilizzabile ma almeno mi rendo conto in maniera più concreta del lavoro che ci sarebbe da fare (e non sono sicuro di avere il tempo per farlo).

----------

