Gentoo Forums
Gentoo Forums
Gentoo Forums
Quick Search: in
[Howto] Depcheck, script di aiuto per il depclean
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
Cazzantonio
Bodhisattva
Bodhisattva


Joined: 20 Mar 2004
Posts: 4514
Location: Somewere around the world

PostPosted: Mon Jul 19, 2004 7:29 pm    Post subject: [Howto] Depcheck, script di aiuto per il depclean Reply with quote

Ho fatto a tempo perso uno scriptino che qualcuno potrebbe trovare utile, altri no, fate voi :)

Questo script è abbastanza "verbose" e crea tre file alla fine del processo (che non è eccessivamente lungo, ~5 minuti a seconda dei pacchetti che avete installati)
deps
system
nodeps

in deps ci sono elencati tutti i pacchetti installati non presenti in world (dipendenze sostanzialmente)
in system ci sono tutti i pacchetti del SYSTEM PROFILE che sono in deps (penso che non serva a nulla ma crearlo costava scrivere una riga...)
in nodeps invece ci sono tutti i pacchetti presenti in deps che non sono dipendenze di niente, stando almeno all'output di qpkg -q

Chiaramente non sto a dirvi che per usarlo dovete avere installato gentoolkit (che contiene qpkg se non sbaglio)

Lo script di per se' è abbastanza bruttino (non sono un mago della bash, magari si puo fare meglio) ma almeno a prima vista sembra che funzioni
Se lo usate controllate e fatemi sapere se c'è qualche bug o qualche paccheto che non indica correttamente (dipende tutto da come formatta il testo qpkg...)

A me risulta utile perchè automatizza un processo che di per se' è parecchio lungo (fare qpkg su tutti i pacchetti per scovare quelli che non sono dipendenze di nulla) ed è abbastanza utile confrontare i pacchetti in nodeps con l'output di emerge --depclean, per decidere cosa eventualmente rimuovere o preservare

Non sto nemmeno a ripetere che chiaramente non sono responsabile se lanciando questo script il vostro pc esplode e gli alieni vengono a rapirvi la famiglia... rivolgetevi agli X-Files

spero sia utile a qualcuno... magari in futuro se ho tempo ci aggiungo anche un'automazione per il confronto con emerge --depclean, e magari anche un controllo sulle USE (o può farlo qualcun'altro e postarlo se ha voglia e tempo :D )

[EDIT] Aggiunto il confronto automatico con l'output di emerge --depclean; ora compaiono altri due file che sono
matching_nodpes
not_matching_nodeps
dove vanno i pacchetti che vorrebbe disinstallare emerge --depclean che compaiono o non compaiono in nodeps
[\EDIT]
[edit] l'aggiunta era sbagliata (l'avevo fatta al volo... mai farlo), corretta [\edit]
[edit] nel postarlo qualche riga è stata mandata a capo, tiratela su quando lo copiate per lanciarlo
è la riga:
for j in `cat -n pack|grep -v "0;01"|grep -v "34;01"|grep -v "31;01"|tr -s [:blank:]| sed 's/\t/*/'`
che dovrebbe stare solo su una riga
I commenti iniziali che erano troppo lunghi li ho accorciati per farli rientrare nel margine
[/edit]

Code:

#!/bin/bash
#Questo umilissimo script serve per generare una lista dei pacchetti
#installati non presenti in world,
#generare una lista dei pacchetti non in world che appartengono a
#SYSTEM PROFILE (inutile, ma già che c'ero...),
#infine (cosa interessante) controlla per ciascuno di questi pacchetti
#l'output di qpkg e scrive una lista dei pacchetti
#che non sono dipendenza di nesusn altro pacchetto
#
#Questo script è stato fatto da me e vieto a chiunque non possieda una
#testa e un torso ben distinti di utilizzarlo
#(alieni e Mike Tyson siete avvertiti!)
#
#Non mi ritengo responsabile per i danni provocati al vostro sistema
#da questo script (se è mai possibile che possa creare danni)
#Non mi ritengo inoltre responsabile di qualsiasi attentato terroristico
#in alcuna parte del globo compiuto con
#la partecipazione anche minimale di questo script nel caso Bush
#volesse dichiarare guerra al mio condominio
#(di questi tempi non si sa mai)

#la variabile che contiene la lista di tutti i pacchetti installati
 ALL=$(qpkg -I -nc|cut -f1 -d" ")

 echo Controllo i pacchetti installati non presenti in world
 echo

# controllo che non ci sia una versione precedente di ./deps ed eventualmente la rimuovo

 test -e deps && rm -f deps

# scrivo i pacchetti insallati non in world nel file ./deps (c'e' anche qualche pacchetto SYSTEM)

 for i in $ALL
 do
 [ `/usr/bin/cat /var/cache/edb/world | grep $i | wc -l` = "0" ] && echo $i >> deps
 done

 echo i pachetti non presenti in wolrd sono stati elencati nel file ./deps
 echo
 echo ora controllo se ci sono pacchetti in ./deps che non sono dipendenze di nessun pacchetto
 echo potrebbe volerci qualche tempo
 echo vai a farti un giro e torna tra qualche minuto
 echo oppure goditi la bella listona che segue
 echo

 test -e system && rm -f system
 test -e nodeps && rm -f nodeps
 DEPS=$(cat deps)
 for i in $DEPS
 do
#qua inizia la sezione per estrarre la lista dei pacchetti da cui dipende $i
#definisco le variabili con le cose che mi servono e scrivo in risultato di qpkg su pack
   qpkg -q $i > pack
   echo sto controllando se ci sono pacchetti che dipendono da $i
   echo
   ENDLINE=$(cat -n pack|grep "0;01"|tr -s [:blank:]|cut -f1|head -n 2|tail -n 1|cut -f2 -d" ")

#divido i pacchetti SYSTEM dagli altri con il primo if e li mando in ./system

   if [ `cat -n pack | grep SYSTEM | wc -l` -gt 0 ]
   then
     echo $i >> system
     echo è un pacchetto di sistema
     echo
     echo
   else
#cerco le linee dell'output di qpkg che mi servono (devo cercare le prime perchè qpkg potrebbe
#dare le dipendenze anche per altri pacchetti con nome simile)
     for j in `cat -n pack|grep -v "0;01"|grep -v "34;01"|grep -v "31;01"|tr -s [:blank:]| sed 's/\t/*/'`
     do
       [ `echo $j|cut -f2 -d" "|cut -f1 -d"*"` -lt $ENDLINE ] && echo $j|cut -f2 -d"*" >> deppack
     done
#guardo se deppack esiste e agisco di conseguenza
     if test -e deppack
     then
       DEPENDS=$(cat deppack)
       echo è una dipendenza di $DEPENDS
       echo
       echo
     else
       echo non è dipendenza di niente
       echo
       echo
       echo $i >> nodeps
     fi
     test -e deppack && rm -f deppack
   fi
   test -e pack && rm -f pack
 done

#faccio il controllo con l'output di emerge --depclean e guardo quali sono i pacchetti in nodeps
#che emerge --depclean vorrebbe disinstallare e quali no
 
 echo La lista dei pacchetti presenti in ./deps che non sono dipendenze
 echo di alcun pacchetto installato e non compaiono in ./system
 echo è stata salvata in ./nodeps
 echo
 echo confronto il depclean di emerge con ./nodeps e scrivo in ./matching_nodeps
 echo i file che vorrebbe disinstallare e che compaiono in ./nodeps
 echo scrivo in ./not_matching_nodeps quelli che invece non vi compaiono
 echo

 emerge -p --depclean > depclean
 test -e matching_nodeps && rm -f matching_nodeps
 test -e not_matching_nodeps && rm -f not_matching_nodeps
 for k in `cat depclean | grep /`
 do
   if [ `cat nodeps|grep -w $k|wc -l` -eq 1 ]
   then
     echo $k >> matching_nodeps
   else
     echo $k >> not_matching_nodeps
   fi
 done
  test -e depclean && rm -f depclean

 echo Tutti i nomi dei pacchetti installati non presenti in world
 echo sono stati salvati in ./deps
 echo
 echo Tutti i nomi dei pacchetti di sistema sono stati salvati in ./system
 echo
 echo in ./nodeps potrebbero comunque esserci pacchetti importanti
 echo questo script valuta solo il responso di qpkg
 echo quindi occhio a disinstallare tutto!

_________________
Any mans death diminishes me, because I am involved in Mankinde; and therefore never send to know for whom the bell tolls; It tolls for thee.
-John Donne


Last edited by Cazzantonio on Tue Jul 20, 2004 4:56 pm; edited 1 time in total
Back to top
View user's profile Send private message
Cazzantonio
Bodhisattva
Bodhisattva


Joined: 20 Mar 2004
Posts: 4514
Location: Somewere around the world

PostPosted: Mon Jul 19, 2004 9:43 pm    Post subject: Re: [Howto] Depcheck, script di aiuto per il depclean Reply with quote

Che palle!
mi sono appena accorto che glibc viene buttato in nodeps!!
Questo accade perchè:
Code:

ale@casa01 ale $ qpkg -q glibc
sys-libs/glibc-2.3.3.20040420 *
DEPENDED ON BY:
sys-libs/glibc-2.3.3.20040420
DEPENDED ON BY:
        app-office/openoffice-1.1.1-r1
        sys-devel/gcc-3.3.3-r6
sys-libs/glibc-2.3.3_pre20040207
DEPENDED ON BY:
        app-office/openoffice-1.1.1-r1
        sys-devel/gcc-3.3.3-r6
sys-libs/glibc-2.3.4.20040619
DEPENDED ON BY:
        app-office/openoffice-1.1.1-r1
        sys-devel/gcc-3.3.3-r6
sys-libs/glibc-2.3.2-r10
DEPENDED ON BY:
        app-office/openoffice-1.1.1-r1
        sys-devel/gcc-3.3.3-r6
sys-libs/glibc-2.3.4.20040605
etc...etc...

in realtà glibc è ovviamente dipendenza di "qualcosa" (nientemeno che gcc), tuttavia la formattazione del testo di altri pacchetti è diversa
Code:
x11-wm/metacity-2.8.0 *
DEPENDED ON BY:
        control-center-2.6.0.3
        gnome-2.6
x11-themes/metacity-themes-1.0
DEPENDED ON BY:
x11-wm/metacity-2.8.1
DEPENDED ON BY:
        gnome-base/control-center-2.6.0.3
        gnome-base/gnome-2.6
......

ora non vedete i colori ma le dipendenze date all'inizio per metacity non sono colorate, e io uso proprio il colore come filtro per le dipendenze!
Siccome gcc non da' le dipendenze in bianco e nero all'inizio lo vede come dipendenza di nulla e lo butta in nodeps :cry:
Non capisco il perchè di questa diversa formattazione ma mi sembra che siano pochi i pacchetti che si comportano come gcc (potrei filtrare in maniera diversa ma era così semplice in questo modo...)
Che ci posso fare... tanto lo so che glibc non lo devo disinstallare e mi regolerò di conseguenza... :roll:
_________________
Any mans death diminishes me, because I am involved in Mankinde; and therefore never send to know for whom the bell tolls; It tolls for thee.
-John Donne
Back to top
View user's profile Send private message
fedeliallalinea
Administrator
Administrator


Joined: 08 Mar 2003
Posts: 31353
Location: here

PostPosted: Mon Jul 19, 2004 9:49 pm    Post subject: Reply with quote

Ottimo script
_________________
Questions are guaranteed in life; Answers aren't.
Back to top
View user's profile Send private message
Cazzantonio
Bodhisattva
Bodhisattva


Joined: 20 Mar 2004
Posts: 4514
Location: Somewere around the world

PostPosted: Mon Jul 19, 2004 9:53 pm    Post subject: Reply with quote

Confermo che sys-libs/glibc è l'unico pacchetto che si comporta in maniera anomala
ora lo metto in world e fine della storia
_________________
Any mans death diminishes me, because I am involved in Mankinde; and therefore never send to know for whom the bell tolls; It tolls for thee.
-John Donne
Back to top
View user's profile Send private message
Cazzantonio
Bodhisattva
Bodhisattva


Joined: 20 Mar 2004
Posts: 4514
Location: Somewere around the world

PostPosted: Mon Jul 19, 2004 9:57 pm    Post subject: Reply with quote

fedeliallalinea wrote:
Ottimo script


Grazie :D
Mi fa piacere essere stato utile a qualcuno! :D :D
Beh, comunque non è certo la soluzione definitiva per il depclean (e non l'ho pensata solo per quello, sennò il check bastava farlo solo sui pacchetti elencati da emerge --depclean)
Mi serve soprattutto per fare ordine nel sistema
Non ho mai capito perchè ci fosse solo world e non altri file con tutto il resto delle informazioni che potevano servire
_________________
Any mans death diminishes me, because I am involved in Mankinde; and therefore never send to know for whom the bell tolls; It tolls for thee.
-John Donne
Back to top
View user's profile Send private message
FonderiaDigitale
Veteran
Veteran


Joined: 06 Nov 2003
Posts: 1710
Location: Rome, Italy

PostPosted: Tue Jul 20, 2004 8:02 am    Post subject: Reply with quote

purtroppo soffre degli st[essi problemi per i quali ho interrotto (per il momento) lo sviluppo del mio script: qpkg e' troppo bacato per adesso per potervi fare seriamente affidamento.
andrebbe riscritta tutta la funzione che lo governa, cosa che in effetti sto lentamente rifacendo in bash
_________________
Come disse un amico, i sistemisti sono un po' come gli artigiani per l'informatica :)
Back to top
View user's profile Send private message
xchris
Advocate
Advocate


Joined: 10 Jul 2003
Posts: 2824

PostPosted: Tue Jul 20, 2004 8:14 am    Post subject: Reply with quote

volevo segnalarti un errore

il file system conterra' sempre e solo una voce.
Dovresti rimuovere il file system non all'interno del ciclo.

Lo script e' interessante perche' genera un po' di "statistiche sul sistema" pero' soffre' aime' dei bug di qpkg.

Non so se l'avevi visto ma fonderia aveva fatto uno script (depclean) che porta agli stessi risultati (anche se ha qc controllo in + su quelli injected) di matching_nodeps.

L'argomento mi e' molto caro in quanto si sente vivamente la mancanza di un uninstaller decente.


Complimenti per l'iniziativa.
Ciao

/EDIT: preceduto :D
_________________
while True:Gentoo()
Back to top
View user's profile Send private message
xchris
Advocate
Advocate


Joined: 10 Jul 2003
Posts: 2824

PostPosted: Tue Jul 20, 2004 8:23 am    Post subject: Reply with quote

FonderiaDigitale wrote:

andrebbe riscritta tutta la funzione che lo governa, cosa che in effetti sto lentamente rifacendo in bash


lo stavo facendo pure io.. (al momento solo nel cervello)
mi sembra pero' che bash scripting non sia proprio il + comodo.

una versione DUMB l'ho gia' fatta... ma e' proprio dumb perche' lavora come se tutte le use flags fossero settate (alquanto improbabile)

c'e' di buono che e' molto conservativo e quando un pkt e' indicato come da rimuovere...al 99% e' vero.

al momento uso l'output di depclean e del mio per fare pulizia.

a che punto sei con qpkg-new?
_________________
while True:Gentoo()
Back to top
View user's profile Send private message
FonderiaDigitale
Veteran
Veteran


Joined: 06 Nov 2003
Posts: 1710
Location: Rome, Italy

PostPosted: Tue Jul 20, 2004 10:41 am    Post subject: Reply with quote

c'e' chi gia l'ha fatta in bash...anche se ai tempi del menga.
sto in stallo causa contingenze.. appena puoto ricomincio :)
_________________
Come disse un amico, i sistemisti sono un po' come gli artigiani per l'informatica :)
Back to top
View user's profile Send private message
Cazzantonio
Bodhisattva
Bodhisattva


Joined: 20 Mar 2004
Posts: 4514
Location: Somewere around the world

PostPosted: Tue Jul 20, 2004 4:58 pm    Post subject: Reply with quote

xchris wrote:
volevo segnalarti un errore

il file system conterra' sempre e solo una voce.
Dovresti rimuovere il file system non all'interno del ciclo.


OOPS... grazie :D corretto, ora dovrebe andare... (spero però di non aver sbagliato a fare cut & paste)
_________________
Any mans death diminishes me, because I am involved in Mankinde; and therefore never send to know for whom the bell tolls; It tolls for thee.
-John Donne
Back to top
View user's profile Send private message
Cazzantonio
Bodhisattva
Bodhisattva


Joined: 20 Mar 2004
Posts: 4514
Location: Somewere around the world

PostPosted: Tue Jul 20, 2004 5:04 pm    Post subject: Reply with quote

FonderiaDigitale wrote:
purtroppo soffre degli st[essi problemi per i quali ho interrotto (per il momento) lo sviluppo del mio script: qpkg e' troppo bacato per adesso per potervi fare seriamente affidamento.
andrebbe riscritta tutta la funzione che lo governa, cosa che in effetti sto lentamente rifacendo in bash


Si, sapevo che qpkg era bacato... Infatti ho preferito fargli generare semplicemente una lista per restringere il campo della ricerca manuale, che ora come ora resta l'unica vera soluzione "sicura" per fare il depclean :?
Cmunque ora voglio cercare il tuo script per il depclean... che di sicuro funziona meglio del mio :D (l'ho fatto un po' di corsa, come si può notare dagli errori... e poi ormai sei famoso per gli script fonderia :D )
_________________
Any mans death diminishes me, because I am involved in Mankinde; and therefore never send to know for whom the bell tolls; It tolls for thee.
-John Donne
Back to top
View user's profile Send private message
FonderiaDigitale
Veteran
Veteran


Joined: 06 Nov 2003
Posts: 1710
Location: Rome, Italy

PostPosted: Tue Jul 20, 2004 10:19 pm    Post subject: Reply with quote

grazie, ma non me lo merito.
in ogni caso prima di fare manovre, fai un backup.. ti conviene.
_________________
Come disse un amico, i sistemisti sono un po' come gli artigiani per l'informatica :)
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