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

BASH - esistono alternative meno macchinose??

Messaggio da danix »

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 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: BASH - esistono alternative meno macchinose??

Messaggio da Mario Vanoni »

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: 5441
Iscritto il: ven 2 giu 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??

Messaggio da ZeroUno »

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: 6631
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: BASH - esistono alternative meno macchinose??

Messaggio da targzeta »

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

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

albatrosla
Packager
Packager
Messaggi: 1339
Iscritto il: sab 27 mar 2004, 0:00
Slackware: current
Desktop: fluxbox.git
Località: Collegno, but made in Friûl
Contatta:

Re: BASH - esistono alternative meno macchinose??

Messaggio da albatrosla »

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: 5441
Iscritto il: ven 2 giu 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??

Messaggio da ZeroUno »

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 27 ott 2006, 19:32
Nome Cognome: Danilo M.
Slackware: 64 current
Kernel: 5.4.43 x86_64
Desktop: i3
Località: Siderno (RC)
Contatta:

Re: BASH - esistono alternative meno macchinose??

Messaggio da danix »

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: 6631
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: BASH - esistono alternative meno macchinose??

Messaggio da targzeta »

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

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

Avatar utente
ildiama
Linux 3.x
Linux 3.x
Messaggi: 536
Iscritto il: mar 27 dic 2005, 16:49
Slackware: mine
Kernel: 2.6.alto..
Desktop: KDE4
Località: Senigallia
Contatta:

Re: BASH - esistono alternative meno macchinose??

Messaggio da ildiama »

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.

Rispondi