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.
Avatar utente
danix
Staff
Staff
Messaggi: 3287
Iscritto il: ven ott 27, 2006 19:32
Nome Cognome: Danilo M.
Slackware: 64 14.1
Kernel: 4.4.0
Desktop: kde4
Località: Siderno (RC)
Contatta:

BASH - esistono alternative meno macchinose??

Messaggioda danix » ven mag 21, 2010 21: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... ;)
danix

myself ha scritto:non sono molto presente sul forum, e di ciò mi scuso con tutti

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

Re: BASH - esistono alternative meno macchinose??

Messaggioda Mario Vanoni » ven mag 21, 2010 22: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!

Avatar utente
ZeroUno
Staff
Staff
Messaggi: 4931
Iscritto il: ven giu 02, 2006 14:52
Nome Cognome: Matteo Rossini
Slackware: current
Kernel: slack-current
Desktop: ktown-latest
Distribuzione: 01000000-current
Località: Roma / Castelli
Contatta:

Re: BASH - esistono alternative meno macchinose??

Messaggioda ZeroUno » ven mag 21, 2010 22: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
targzeta
Iper Master
Iper Master
Messaggi: 6369
Iscritto il: gio nov 03, 2005 14:05
Nome Cognome: Emanuele Tomasi
Slackware: current
Kernel: latest stable
Desktop: IceWM
Località: Carpignano Sal. (LE) <-> Pisa

Re: BASH - esistono alternative meno macchinose??

Messaggioda targzeta » ven mag 21, 2010 22: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à 

albatrosla
Packager
Packager
Messaggi: 1294
Iscritto il: sab mar 27, 2004 0:00
Slackware: current
Desktop: fluxbox.git
Località: Bressa - Friuli / Torino
Contatta:

Re: BASH - esistono alternative meno macchinose??

Messaggioda albatrosla » ven mag 21, 2010 22: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!

Avatar utente
ZeroUno
Staff
Staff
Messaggi: 4931
Iscritto il: ven giu 02, 2006 14:52
Nome Cognome: Matteo Rossini
Slackware: current
Kernel: slack-current
Desktop: ktown-latest
Distribuzione: 01000000-current
Località: Roma / Castelli
Contatta:

Re: BASH - esistono alternative meno macchinose??

Messaggioda ZeroUno » ven mag 21, 2010 22: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
danix
Staff
Staff
Messaggi: 3287
Iscritto il: ven ott 27, 2006 19:32
Nome Cognome: Danilo M.
Slackware: 64 14.1
Kernel: 4.4.0
Desktop: kde4
Località: Siderno (RC)
Contatta:

Re: BASH - esistono alternative meno macchinose??

Messaggioda danix » ven mag 21, 2010 23: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
danix

myself ha scritto:non sono molto presente sul forum, e di ciò mi scuso con tutti

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

Re: BASH - esistono alternative meno macchinose??

Messaggioda targzeta » ven mag 21, 2010 23: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
ildiama
Linux 2.6
Linux 2.6
Messaggi: 536
Iscritto il: mar dic 27, 2005 16:49
Slackware: mine
Kernel: 2.6.alto..
Desktop: KDE4
Località: Senigallia
Contatta:

Re: BASH - esistono alternative meno macchinose??

Messaggioda ildiama » sab mag 22, 2010 23: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.


Torna a “Programmazione”

Chi c’è in linea

Visitano il forum: Nessuno e 3 ospiti