Fare pulizia con UnusedPkg

Se avete problemi con l'installazione e la configurazione di Slackware postate qui. Non usate questo forum per argomenti generali... per quelli usate Gnu/Linux in genere.

Moderatore: Staff

Regole del forum
1) Citare sempre la versione di Slackware usata, la versione del Kernel e magari anche la versione della libreria coinvolta. Questi dati aiutano le persone che possono rispondere.
2) Per evitare confusione prego inserire in questo forum solo topic che riguardano appunto Slackware, se l'argomento è generale usate il forum Gnu/Linux in genere.
3) Leggere attentamente le risposte ricevute.
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.

La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza della regola 5 porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.
Mario Vanoni
Iper Master
Iper Master
Messaggi: 3174
Iscritto il: lun 3 set 2007, 21:20
Nome Cognome: Mario Vanoni
Slackware: 12.2
Kernel: 3.0.4 statico
Desktop: fluxbox/seamonkey
Località: Cuasso al Monte (VA)

Re: Fare pulizia

Messaggio da Mario Vanoni »

@norby
anche la versione 0.3 da date impossibili,
sulla mia 12.0 aggiornata dice:

293 ksh93 OK
101 zsh mai usata
52 emacs mai usato
0 k3b usato forse una settimana fa o piu`

Persevera, alla prossima versione

Mario Vanoni

norby
Linux 0.x
Linux 0.x
Messaggi: 4
Iscritto il: gio 24 apr 2008, 10:26

Re: Fare pulizia

Messaggio da norby »

spina ha scritto: Piccole note personali visto che il programmatore sei tu.

- ridirigere l'output di cat verso un grep è inutile, grep apre il file per leggerlo.
- sed e grep nella stessa riga di comando è una cosa proprio brutta da vedere. grep lo si usa quando non si usa sed, altrimenti si fa tutto con sed.
- stessa cosa vale per grep insieme ad awk
- quell'awk è proprio sprecato. Nel mio sistema awk sono 328Kb, visto che lo stesso comando si può emulare con un:

Codice: Seleziona tutto

cut -d' ' -f1
e visto che cut sono solo 32Kb mi sembrerebbe più logico usare cut. Se proprio vuoi usare awk, almeno risparmiati il sort e il tail seguenti.

Se questo è il tuo stile, ci credo che da una versione all'altra guadagni più del 100% in prestazioni :badgrin: .
Tralasciando il facile sarcasmo, grazie per i suggerimenti, ottimizzeranno sicuramente la funzione di update : D Il mio stile "non c'e'", ho sempre programmato in C e questo è il primo script bash che faccio con una certa complessità =) Sto imparando come tutti, grazie per i consigli e questo tipo di critiche fanno crescere me e il programma.
spina ha scritto: Detto questo, ora forse mi odierai ;), comunque quello che ti frega è il fatto che Pat molte volte usa i file ".new", questi file vengono rinominati dallo script di post installazione e quindi non li puoi trovare nella FILE LIST del pacchetto.
Questo è un problema da non sottovalutare. Probabilmente l'unica soluzione è riconoscere la presenza dei .new nel FILE LIST, e estrarre dal doinst.sh il modo in cui lo rinomina. Che palle. Oppure, più semplicemente, in caso di /path/file.new eseguire lo stat anche su /path/file. Questi giorni mi penso una buona soluzione per lo 0.4 : D

Grazie a tutti per l'aiuto,
Emilio

Avatar utente
targzeta
Iper Master
Iper Master
Messaggi: 6643
Iscritto il: gio 3 nov 2005, 14:05
Nome Cognome: Emanuele Tomasi
Slackware: 64-current
Kernel: latest stable
Desktop: IceWM
Località: Carpignano Sal. (LE) <-> Pisa

Re: Fare pulizia

Messaggio da targzeta »

norby ha scritto:....
spina ha scritto: Detto questo, ora forse mi odierai ;), comunque quello che ti frega è il fatto che Pat molte volte usa i file ".new", questi file vengono rinominati dallo script di post installazione e quindi non li puoi trovare nella FILE LIST del pacchetto.
Questo è un problema da non sottovalutare. Probabilmente l'unica soluzione è riconoscere la presenza dei .new nel FILE LIST, e estrarre dal doinst.sh il modo in cui lo rinomina. Che palle. Oppure, più semplicemente, in caso di /path/file.new eseguire lo stat anche su /path/file. Questi giorni mi penso una buona soluzione per lo 0.4 : D
....
Mi fa piacere che tu abbia capito lo spirito del mio post ;), non tutti accettano le critiche così come lo hai fatto tu, i miei complimenti.

Detto questo, nel mio post precedente avrai notato che il file si chiamava:
bash2.new
mentre l'eseguibile si chiama bash. Però devo essere sincero, la cosa mi sdubbia un pò, l'idea di controllare /path/file mi piace e non dovrebbe essere sbagliata. Ora sono con il PC di un amica, appena posso ricontrollo il file e ti faccio sapere.

come ha detto "Mario Vanoni", persevera,
Spina
Se pensi di essere troppo piccolo per fare la differenza, prova a dormire con una zanzara -- Dalai Lama

Avatar utente
targzeta
Iper Master
Iper Master
Messaggi: 6643
Iscritto il: gio 3 nov 2005, 14:05
Nome Cognome: Emanuele Tomasi
Slackware: 64-current
Kernel: latest stable
Desktop: IceWM
Località: Carpignano Sal. (LE) <-> Pisa

Re: Fare pulizia

Messaggio da targzeta »

Eh si, il file è proprio bash2.new mentre l'eseguibile è bash. Mi sa che ti tocca faticare :).

Spina
Se pensi di essere troppo piccolo per fare la differenza, prova a dormire con una zanzara -- Dalai Lama

norby
Linux 0.x
Linux 0.x
Messaggi: 4
Iscritto il: gio 24 apr 2008, 10:26

Re: Fare pulizia

Messaggio da norby »

Ho postato la 0.4 su freshmeat, ecco come ho affrontato i principali problemi:
- Visto che il problema dei file rinominati dagli script di installazione è irrisolvibile (non posso logicamente dedurre che /bin/bash2.new è rinominato in /bin/bash senza vedere il file doinst.sh, che non è recuperabile perchè non salvato da nessuna parte), ho aggiunto ad unusedpkg la funzione 'info', che specifica le date di ogni singolo file in un pacchetto, facendo notare gli eventuali file mancanti. L'utente in questo modo ha tutti i dati disponibili per sapere l'effettivo uso del pacchetto e decidere di testa sua se disinstallarlo o no.
- Ho cercato di ottimizzare le funzioni di ricerca, fondendo parecchi grep, awk e sed (grazie Spina). Non sono neanche lontanamente perfetti, continuerò a migliorarlo col tempo. Domanda, è ottimizzabile il comando

Codice: Seleziona tutto

grep ... -A 100 "regexp" | sed ...
? Cioè posso includere il 'processa solo le 100 linee dopo la parola regexp' nel comando sed? Sicuramente si, se qualcuno sa come mi suggerisca : D
- Visti i problemi noti che possono falsare le date di un pacchetto, ho aggiunto spiegazioni dettagliate nel README e un warning durante il listing dei pacchetti.

Questo è tutto, a breve spero di avere la voglia di supportare anche gentoo : D
Emilio
Versione 0.4: http://freshmeat.net/projects/unusedpkg/

Avatar utente
targzeta
Iper Master
Iper Master
Messaggi: 6643
Iscritto il: gio 3 nov 2005, 14:05
Nome Cognome: Emanuele Tomasi
Slackware: 64-current
Kernel: latest stable
Desktop: IceWM
Località: Carpignano Sal. (LE) <-> Pisa

Re: Fare pulizia

Messaggio da targzeta »

norby ha scritto:....non posso logicamente dedurre che /bin/bash2.new è rinominato in /bin/bash senza vedere il file doinst.sh, che non è recuperabile perchè non salvato da nessuna parte....
Sbagliato, gli script doinst vengono salvati in /var/log/script :).

Spina

P.S. Per quando riguarda sed...ci devo pensare, così su due piedi non mi viene niente in mente....
Se pensi di essere troppo piccolo per fare la differenza, prova a dormire con una zanzara -- Dalai Lama

Avatar utente
targzeta
Iper Master
Iper Master
Messaggi: 6643
Iscritto il: gio 3 nov 2005, 14:05
Nome Cognome: Emanuele Tomasi
Slackware: 64-current
Kernel: latest stable
Desktop: IceWM
Località: Carpignano Sal. (LE) <-> Pisa

Re: Fare pulizia

Messaggio da targzeta »

norby ha scritto:....Domanda, è ottimizzabile il comando

Codice: Seleziona tutto

grep ... -A 100 "regexp" | sed ...
? Cioè posso includere il 'processa solo le 100 linee dopo la parola regexp' nel comando sed? Sicuramente si, se qualcuno sa come mi suggerisca : D
....
Dal man di sed:
GNU sed also supports some special 2-address forms:

0,addr2
Start out in "matched first address" state, until addr2 is found. This is similar to 1,addr2, except that if
addr2 matches the very first line of input the 0,addr2 form will be at the end of its range, whereas the 1,addr2
form will still be at the beginning of its range.

addr1,+N
Will match addr1 and the N lines following addr1.

addr1,~N
Will match addr1 and the lines following addr1 until the next line whose input line number is a multiple of N.
da cui si deduce che per fare quello che vuoi tu, basta fare:

Codice: Seleziona tutto

sed /regexp/,+100 ....
Ti ho postato anche la parte iniziale dove dice che è una estensione del GNU sed, che poi è quello usato dalla slackware, solo perchè, come direbbe Mario Vanoni:"La portabilità!!!! Attenzione alla portabilità" :) (ovviamente scherzo Mario).

Detto questo, i manuali andrebbero letti Emilio ;) (anche se effettivamente sed non è il programma più user-frendly di questo mondo).

Spina
Se pensi di essere troppo piccolo per fare la differenza, prova a dormire con una zanzara -- Dalai Lama

Mario Vanoni
Iper Master
Iper Master
Messaggi: 3174
Iscritto il: lun 3 set 2007, 21:20
Nome Cognome: Mario Vanoni
Slackware: 12.2
Kernel: 3.0.4 statico
Desktop: fluxbox/seamonkey
Località: Cuasso al Monte (VA)

Re: Fare pulizia

Messaggio da Mario Vanoni »

spina ha scritto: Ti ho postato anche la parte iniziale dove dice che è una estensione del GNU sed, che poi è quello usato dalla slackware, solo perchè, come direbbe Mario Vanoni:"La portabilità!!!! Attenzione alla portabilità" :) (ovviamente scherzo Mario).
Non scherzi affatto e ti ringrazio di evidenziare il problema portabilita`!

Macchine UNIX, quindi non GNU/Linux,
hanno un sed(1) discendente da, o AT&T/SVRX, o Berkeley/BSD.
Uno script decente deve funzionare su ogni UNIX, compreso Linux.
E se non funziona, biasimare RMS per gli extra di GNU/sed.

Mario Vanoni

Rispondi