Repository 32bit  Forum
Repository 64bit  Wiki

BASH - esistono alternative meno macchinose??

Forum dedicato alla programmazione.

Moderatore: Staff

Regole del forum
1) Citare in modo preciso il linguaggio di programmazione usato.
2) Se possibile portare un esempio del risultato atteso.
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.

BASH - esistono alternative meno macchinose??

Messaggioda danix » ven mag 21, 2010 20:52

Ciao a tutti,
perdonate il titolo non proprio chiaro ma non mi veniva in mente nulla di meglio :D

Oggi pomeriggio guardavo il ChangeLog di slackware64-current e mi domandavo come si fa a sapere in maniera più o meno automatica quali pacchetti sono stati rimossi per poi verificare nel proprio sistema ed eventualmente disinstallarli... siccome non ho trovato tools che facciano questa cosa in automatico, ho scritto 2 righe da lanciare in sequenza per effettuare questa verifica:

Codice: Seleziona tutto
for line in $(egrep "Removed\.$" ChangeLog.txt |cut -d':' -f1 |egrep "t?z$"); do basename $line;done >> rem_pkgs.txt

Questa prima sequenza prende ogni riga di pacchetto t?z che finisce con "Removed." nel ChangeLog e la ripulisce del percorso per poi salvarla nel file rem_pkgs.txt, poi tocca alla seconda sequenza andare a vedere cosa ci sia ancora installato di tutto quello che risulta in questo file:
Codice: Seleziona tutto
for line in $(cat rem_pkgs.txt); do PACK=$(echo $line | rev | cut -d- -f4- | rev); ls /var/log/packages/ |grep $PACK;done

Questa sequenza quindi fa il controllo sul database dei pacchetti e restituisce solo quello che effettivamente è installato...

Adesso, che voi sappiate ci sono già tools che fanno questa cosa o comunque, c'è un modo più veloce di farla??


Grazie mille in anticipo... ;)
Avatar utente
danix
Staff
Staff
 
Messaggi: 3280
Iscritto il: ven ott 27, 2006 18:32
Località: Siderno (RC)
Nome Cognome: Danilo M.
Slackware: 64 14.0
Kernel: 3.2.29
Desktop: fluxbox

Re: BASH - esistono alternative meno macchinose??

Messaggioda Mario Vanoni » ven mag 21, 2010 21:08

danix ha scritto:Ciao a tutti,
perdonate il titolo non proprio chiaro ma non mi veniva in mente nulla di meglio :D

Oggi pomeriggio guardavo il ChangeLog di slackware64-current e mi domandavo come si fa a sapere in maniera più o meno automatica quali pacchetti sono stati rimossi per poi verificare nel proprio sistema ed eventualmente disinstallarli... siccome non ho trovato tools che facciano questa cosa in automatico, ho scritto 2 righe da lanciare in sequenza per effettuare questa verifica:

Codice: Seleziona tutto
for line in $(egrep "Removed\.$" ChangeLog.txt |cut -d':' -f1 |egrep "t?z$"); do basename $line;done >> rem_pkgs.txt

Questa prima sequenza prende ogni riga di pacchetto t?z che finisce con "Removed." nel ChangeLog e la ripulisce del percorso per poi salvarla nel file rem_pkgs.txt, poi tocca alla seconda sequenza andare a vedere cosa ci sia ancora installato di tutto quello che risulta in questo file:
Codice: Seleziona tutto
for line in $(cat rem_pkgs.txt); do PACK=$(echo $line | rev | cut -d- -f4- | rev); ls /var/log/packages/ |grep $PACK;done

Questa sequenza quindi fa il controllo sul database dei pacchetti e restituisce solo quello che effettivamente è installato...

Adesso, che voi sappiate ci sono già tools che fanno questa cosa o comunque, c'è un modo più veloce di farla??


Grazie mille in anticipo... ;)


Domanda, facendo i tuoi script con
time script.sh
quanto tempo impiegano sulla tua macchina?

Poi altra domanda, che impieghino
0m?? oppure 3m?? e` vitale per te?

Guarda che invecchi piu` in fretta!
Mario Vanoni
Iper Master
Iper Master
 
Messaggi: 3174
Iscritto il: lun set 03, 2007 20:20
Località: Cuasso al Monte (VA)
Nome Cognome: Mario Vanoni
Slackware: 12.2
Kernel: 3.0.4 statico
Desktop: fluxbox/seamonkey

Re: BASH - esistono alternative meno macchinose??

Messaggioda ZeroUno » ven mag 21, 2010 21:20

slackpkg clean-system
Packages finder: slakfinder.org | Slackpkg+, per aggiungere repository a slackpkg
Codice: Seleziona tutto
1011010 1100101 1110010 1101111 - 0100000 - 1010101 1101110 1101111
Avatar utente
ZeroUno
Staff
Staff
 
Messaggi: 4300
Iscritto il: ven giu 02, 2006 13:52
Località: Roma / Castelli
Nome Cognome: Matteo Rossini
Slackware: current
Kernel: slack-current
Desktop: ktown-latest
Distribuzione: 01000000-current

Re: BASH - esistono alternative meno macchinose??

Messaggioda targzeta » ven mag 21, 2010 21:27

C'è sempre il mio script analyze_SlackPkg.sh, vedi se l'opzione '-m' può aiutarti.

Emanuele
Linux Registered User #454438
Se pensi di essere troppo piccolo per fare la differenza, prova a dormire con una zanzara -- Dalai Lama
20/04/2013 - Io volevo Rodotà
Avatar utente
targzeta
Iper Master
Iper Master
 
Messaggi: 6149
Iscritto il: gio nov 03, 2005 14:05
Località: Carpignano Sal. (LE) <-> Pisa
Nome Cognome: Emanuele Tomasi
Slackware: current
Kernel: latest stable
Desktop: IceWM

Re: BASH - esistono alternative meno macchinose??

Messaggioda albatrosla » ven mag 21, 2010 21:28

La prima mi sembra efficiente, senonché si potrebbe evitare di fargli fare un loop. Si può risolvere con un'unica stringa di sed:
Codice: Seleziona tutto
sed -e '/.*txz.*Removed\.$/!d' -e 's/.*\/\(.*\)\.txz.*$/\1/' ChangeLog.txt

La seconda fa un ls della directory /var/log/packages ad ogni giro, cosa che è poco efficiente, almeno vista sulla mia macchina sgangherata. Perciò si può manipolare l'output della precedente per costruire una stringa da passare a grep, del tipo -e pattern0 -e pattern1 [...] -e patternN:
Codice: Seleziona tutto
ls /var/log/packages/|grep -e `sed -e '/.*txz.*Removed\.$/!d' -e 's/.*\/\(.*\)\.txz.*$/\1/' ChangeLog.txt|sed -e :a -e '$!N;s/\n/ -e /;ta'`

In questo modo si ottiene direttamente la lista dei package da rimuovere già installati sul sistema.
L'ho testato or ora sul mio sistema e pare funzionare bene, ma le mie stringhe di sed sono spesso rozze, immagino che qualche guru di sed possa fare lo stesso in modo più efficiente (i.e. senza ricorrere al pipe sul secondo sed ma usando solamente la prima istanza).

Non va usato il clean-system suggerito da qualcuno: rimuove tutti i package third party, oltre a quelli che vuoi rimuovere tu!
albatrosla
Packager
Packager
 
Messaggi: 1294
Iscritto il: sab mar 27, 2004 0:00
Località: Bressa - Friuli / Torino
Slackware: current
Desktop: fluxbox.git

Re: BASH - esistono alternative meno macchinose??

Messaggioda ZeroUno » ven mag 21, 2010 21:43

albatrosla ha scritto:Non va usato il clean-system suggerito da qualcuno: rimuove tutti i package third party, oltre a quelli che vuoi rimuovere tu!

Ho scritto d'impulso. E' solo chei il 99% del software aggiuntivo che installo ha un suffisso alfanumerico, quindi li riconosco al volo.
ovviamente non va per un approccio metodico.
Packages finder: slakfinder.org | Slackpkg+, per aggiungere repository a slackpkg
Codice: Seleziona tutto
1011010 1100101 1110010 1101111 - 0100000 - 1010101 1101110 1101111
Avatar utente
ZeroUno
Staff
Staff
 
Messaggi: 4300
Iscritto il: ven giu 02, 2006 13:52
Località: Roma / Castelli
Nome Cognome: Matteo Rossini
Slackware: current
Kernel: slack-current
Desktop: ktown-latest
Distribuzione: 01000000-current

Re: BASH - esistono alternative meno macchinose??

Messaggioda danix » ven mag 21, 2010 22:04

Grazie a tutti per le risposte, rispondendo a Mario, in effetti non mi cambia la vita se ci mettessi anche un'ora a fare il lavoro, ma per imparare ho piacere a confrontarmi con gli altri e vedere come loro farebbero quello che sto cercando di fare io... tutto qui :D

@Matteo && @Emanuele
slackpkg clean-system e analyze_slackpkg -m mi restituiranno anche i 3rd party e non è quello che voglio, con le 2 righe che ho buttato giù mi concentro solo su quello che c'è nel changelog (che è quello che voglio tenere aggiornato principalmente) il resto è optional ;)

Grazie ad albatrosla per i suggerimenti, l'ultimo in particolare mi darà di che leggere per una settimana ;)


Ri-grazie a tutti :D
Avatar utente
danix
Staff
Staff
 
Messaggi: 3280
Iscritto il: ven ott 27, 2006 18:32
Località: Siderno (RC)
Nome Cognome: Danilo M.
Slackware: 64 14.0
Kernel: 3.2.29
Desktop: fluxbox

Re: BASH - esistono alternative meno macchinose??

Messaggioda targzeta » ven mag 21, 2010 22:10

Solo per dire che filtrare l'output del mio script è veramente banale.

Emanuele
Linux Registered User #454438
Se pensi di essere troppo piccolo per fare la differenza, prova a dormire con una zanzara -- Dalai Lama
20/04/2013 - Io volevo Rodotà
Avatar utente
targzeta
Iper Master
Iper Master
 
Messaggi: 6149
Iscritto il: gio nov 03, 2005 14:05
Località: Carpignano Sal. (LE) <-> Pisa
Nome Cognome: Emanuele Tomasi
Slackware: current
Kernel: latest stable
Desktop: IceWM

Re: BASH - esistono alternative meno macchinose??

Messaggioda ildiama » sab mag 22, 2010 22:03

ZeroUno ha scritto:
albatrosla ha scritto:Non va usato il clean-system suggerito da qualcuno: rimuove tutti i package third party, oltre a quelli che vuoi rimuovere tu!

Ho scritto d'impulso. E' solo chei il 99% del software aggiuntivo che installo ha un suffisso alfanumerico, quindi li riconosco al volo.
ovviamente non va per un approccio metodico.


Sì, ma mica lo fa automaticamente. Ti fa una lista dei pacchetti che non fanno (più) parte della distro e che trova installati. Poi decidi tu cosa rimuovere e cosa lasciare. Quindi, va usato. Tra l'altro è praticamente il modo ufficiale slackware per fare questa operazione.
Avatar utente
ildiama
Linux 2.6
Linux 2.6
 
Messaggi: 536
Iscritto il: mar dic 27, 2005 16:49
Località: Senigallia
Slackware: mine
Kernel: 2.6.alto..
Desktop: KDE4


Torna a Programmazione

Chi c’è in linea

Visitano il forum: Nessuno e 0 ospiti