[TOOL][GECHI] DepCleaner (will be PortageNurse ;) )
Posted: Tue May 11, 2004 3:46 am
UPDATE: Code Freeze. Questa versione non e' piu' manutenuta, vedere questo post per i dettagli.
-------------------------------------------------------------------------------------
Premessa: non voglio avere sulla coscienza nessuno, e ci tengo a ripeterlo... specie il suo portage tree, per cui:
RICORDATEVI CHE QUESTO TOOL E' SPERIMENTALE!
FATEVI DELLE COPIE DI SICUREZZA DEI FILE IMPORTANTI PER IL SISTEMA!!
ATTENZIONE: Qpkg ha un bug documentato qui: tende a riportare dipendenze non corrette. per cui anche depclean puo' non essere efficace. pertanto usatelo solo a scopo indicativo: riguardate bene COSA andate a modificare.
Si dice che la notte porti consiglio; io invece vi porto questo programmino, creato nella scia di un altro thread.
E' un wrapper per emerge depclean, in piu controlla le dipendenze e il loro stato, le include eventualmente nel file world, e ripulisce i file temporanei di portage.
Versione 0.0.8a: Questa e' l'ultima release che utilizza bash, la considero una 'feature freeze': d'ora in poi, fino alla release in python, non aggiungero' nulla e fixero' solo bachi o inesattezze.
Inoltre dalla prossima versione questo programma verra' 'fuso' con ebuild-switch, per creare un'interfaccia unica per soddisfare il piu possibile i bisogni di pulizia (e le mancanze, purtroppo) di portage.
FEATURES:
per usarlo (dovreste aver settato la directory di overlay):
Screenshot!
Qualche esempio di utilizzo:
(test fatti sul mio notebook)
E' importante che riceva del feedback sul suo funzionamento, richieste di nuove features (ragionevolmente parlando), se lo usate, se vi e' servito in qualche modo, ecc..
Grazie. buon uso (spero ne farete
)
-------------------------------------------------------------------------------------
Premessa: non voglio avere sulla coscienza nessuno, e ci tengo a ripeterlo... specie il suo portage tree, per cui:
RICORDATEVI CHE QUESTO TOOL E' SPERIMENTALE!
FATEVI DELLE COPIE DI SICUREZZA DEI FILE IMPORTANTI PER IL SISTEMA!!
ATTENZIONE: Qpkg ha un bug documentato qui: tende a riportare dipendenze non corrette. per cui anche depclean puo' non essere efficace. pertanto usatelo solo a scopo indicativo: riguardate bene COSA andate a modificare.
Si dice che la notte porti consiglio; io invece vi porto questo programmino, creato nella scia di un altro thread.
E' un wrapper per emerge depclean, in piu controlla le dipendenze e il loro stato, le include eventualmente nel file world, e ripulisce i file temporanei di portage.
Versione 0.0.8a: Questa e' l'ultima release che utilizza bash, la considero una 'feature freeze': d'ora in poi, fino alla release in python, non aggiungero' nulla e fixero' solo bachi o inesattezze.
Inoltre dalla prossima versione questo programma verra' 'fuso' con ebuild-switch, per creare un'interfaccia unica per soddisfare il piu possibile i bisogni di pulizia (e le mancanze, purtroppo) di portage.
FEATURES:
>>> ebuild di depclean <<<- colori e display gentoo-style
- usando il parametro --ask richiede conferma per ogni singolo pacchetto
- ha una opzione --pretend che funziona esattamente come quella di emerge
- con --tmpclean, permette di ripulire i file temporanei creati da emerge (anche se avete specificato una directory temporanea personalizzata)
- permette di effettuare azioni selettive su ogni singolo pacchetto, come unmerge, aggiunta al file world
- avvisa sempre prima di maneggiare il file world, e puo' eseguire il backup automatico di quest'ultimo prima di fare modifiche.
- avvisa in caso di passaggi pericolosi e ha un timeout prima dell'unmerge effettivo (5 secondi)
- permette di passare un pattern da linea di comando per selezionare solo i pacchetti che corrispondano a una keyword (ad esempio *lib* )
- controlla che i pacchetti selezionati siano REALMENTE dipendenze di qualcosa e che non siano attualmente utilizzati.
- controlla che effettivamente le dipendenze utilizzate siano state emergiate (fixa errori di emerge se ce ne sono)
- non usa nessun file temporaneo su disco (tranne in caso di modifica del file world, ovviamente)
- Dovrebbe essere veloce in quanto non usa programmi esterni a bash stesso (come grep, cut, awk, ecc)
- richiede qpkg (presente in gentoolkit), se non e' presente, lo mergia. Ovviamente avvisa prima di farlo (tramite la funzione --ask di emerge)
- Ebuild autoinstallante disponibile
per usarlo (dovreste aver settato la directory di overlay):
Code: Select all
source /etc/make.conf
cd $PORTDIR_OVERLAY
tar zxvf depclean-0.0.8.tar.gz
emerge depcleanerQualche esempio di utilizzo:
(test fatti sul mio notebook)
Code: Select all
Goliath scripts # ./depclean -h
depclean 0.0.8 by Giovanni Ferri <giovanni@fonderiadigitale.it>
Usage: depclean [options] <pattern>
--ask or -a: asks for each package to be unmerged (needed to add to the world file)
this is *REALLY* reccomended!
--debug or -d: debug mode. Useful only for testing.
[--pattern|-x] <something>: only include packages matching *something*
the '--pattern' switch can be omitted at all.
--pretend or -p: do not actually perform actions (to show what will be unmerged)
--tmpclean or -t: remove temporary portage filesCode: Select all
Goliath scripts # depclean -p lib
>>> --pretend was added, nothing will be really performed on-disk.
Creating list of possible dependencies, please wait.
Filtering selected pattern lib..
Checking for unused dependencies: this could take a HUGE amount of time.
Go visiting Gechi website www.gechi.it, have a coffee, or such ;)
..............................
Found 5 unused dependencies.
Unmerging package: [1] =media-libs/libdvdplay-1.0.1
Unmerging package: [2] =media-libs/libmpeg2-0.4.0b
Unmerging package: [3] =media-libs/gle-3.0.1-r2
Unmerging package: [4] =dev-libs/ewd-0.0.1.20040214
Unmerging package: [5] =media-libs/libdvbpsi-0.1.4
Code: Select all
Goliath scripts # depclean --pretend --ask nonhonientedisimilesulmiopc
>>> --pretend disables --ask... removing --ask from options. nothing will be performed on disk.
Creating list of possible dependencies, please wait.
Filtering selected pattern nonhonientedisimilesulmiopc..
Checking for unused dependencies: this could take a HUGE amount of time.
Go visiting Gechi website www.gechi.it, have a coffee, or such ;)
.
Found 0 unused dependencies.
Nothing left to unmerge. :)Code: Select all
Goliath scripts # ./depclean -t -a -p gnome
>>> --pretend disables --ask... removing --ask from options. nothing will be performed on disk.
Found stale files in portage temp dir /home/portage/tmp/portage/, fixing: ................... cleaned.
Creating list of possible dependencies, please wait.
Filtering selected pattern gnome..
Checking for unused dependencies: this could take a HUGE amount of time.
Go visiting Gechi website www.gechi.it, have a coffee, or such ;)
..
Found 8 unused dependencies.
Unmergeable package: [1] =gnome-base/gnome-common-2.4.0
Unmergeable package: [2] =gnome-extra/nautilus-cd-burner-2.6.0
Unmergeable package: [3] =gnome-extra/gconf-editor-2.6.0
Unmergeable package: [4] =gnome-extra/zenity-2.6.0
Unmergeable package: [5] =dev-cpp/gnomemm-1.2.3-r1
Unmergeable package: [6] =gnome-extra/gnome-media-2.6.0
Unmergeable package: [7] =gnome-extra/gcalctool-4.3.51
Unmergeable package: [8] =gnome-extra/gucharmap-1.4.1
Code: Select all
Goliath scripts # ./depclean -a -x gnome
Creating list of possible dependencies, please wait.
Filtering selected pattern gnome..
Checking for unused dependencies: this could take a HUGE amount of time.
Go visiting Gechi website www.gechi.it, have a coffee, or such ;)
..
Found 8 unused dependencies.
Remove gnome-base/gnome-common-2.4.0 ? [yes/no/all/skiprest/world/abort]:
you must answer 'yes','no','all','skiprest','world','abort'.
Remove gnome-base/gnome-common-2.4.0 ? [yes/no/all/skiprest/world/abort]:
Aborted on user request.
Goliath scripts # ./depclean -a -x gnome
Creating list of possible dependencies, please wait.
Filtering selected pattern gnome..
Checking for unused dependencies: this could take a HUGE amount of time.
Go visiting Gechi website www.gechi.it, have a coffee, or such ;)
..
Found 8 unused dependencies.
Remove gnome-base/gnome-common-2.4.0 ? [yes/no/all/skiprest/world/abort]:
you must answer 'yes','no','all','skiprest','world','abort'.
Remove gnome-base/gnome-common-2.4.0 ? [yes/no/all/skiprest/world/abort]: y
Remove gnome-extra/nautilus-cd-burner-2.6.0 ? [yes/no/all/skiprest/world/abort]: w
Remove gnome-extra/gconf-editor-2.6.0 ? [yes/no/all/skiprest/world/abort]: w
Remove gnome-extra/zenity-2.6.0 ? [yes/no/all/skiprest/world/abort]: w
Remove dev-cpp/gnomemm-1.2.3-r1 ? [yes/no/all/skiprest/world/abort]: n
Remove gnome-extra/gnome-media-2.6.0 ? [yes/no/all/skiprest/world/abort]: n
Remove gnome-extra/gcalctool-4.3.51 ? [yes/no/all/skiprest/world/abort]: n
Remove gnome-extra/gucharmap-1.4.1 ? [yes/no/all/skiprest/world/abort]: y
Unmergeable package: [1] =gnome-base/gnome-common-2.4.0
Unmergeable package: [2] =gnome-extra/gucharmap-1.4.1
These packages will be added to the world file:
Would be added to world: [1] gnome-extra/nautilus
Would be added to world: [2] gnome-extra/gconf
Would be added to world: [3] gnome-extra/zenity
WARNING: This feature is experimental. Have you backed up your file?
If you have not backed it up, selecting auto will make a copy to /root/worldfile_15-05-2004.depclean, just in case something goes wrong.
Choose [yes/no/auto]:
You must answer 'yes','auto','no'.
Choose [yes/no/auto]: a
Backing up /var/cache/edb/world to /root/worldfile_15-05-2004.depclean... Done.
Adding selected packages to the world file...
Done.
Sorting world file... Done.
REALLY want to remove these dependencies?
LAST CHANCE TO QUIT!! (CTRL+C to exit) .. 5 4
Aborted on user request.
Goliath scripts # head -n 10 /var/cache/edb/world
app-admin/addpatches
app-admin/bacula
app-admin/gkrellm
app-admin/prelude-lml
app-admin/prelude-manager
app-admin/pydf
app-admin/quickswitch
app-admin/syslog-ng
app-admin/tripwire
app-admin/usbview
E' importante che riceva del feedback sul suo funzionamento, richieste di nuove features (ragionevolmente parlando), se lo usate, se vi e' servito in qualche modo, ecc..
Grazie. buon uso (spero ne farete