Elenco Pacchetti non installati

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.
ocman
Linux 2.x
Linux 2.x
Messaggi: 239
Iscritto il: gio 31 lug 2008, 18:18
Slackware: ArchLinux
Desktop: xfce
Distribuzione: OpenIndiana

Elenco Pacchetti non installati

Messaggio da ocman »

Ciao a tutti,
avrei la necessità di sapere quali pacchetti della mia Slackware-Current non sono presenti Rispetto all'albero dei pacchetti della current.

Mi spiego meglio:
vorrei elencare per tutte directory di installazione (A/AP/D/E/L/N/F/K/T/TCL/X/XAP/Y) per quali pacchetti differisce la mia current.
Ho subito pensato a slackpkg che però non può funzionare:
- install-new: trova i pacchetti presenti nella current, non installati, MA SOLO guardando nel changelog e quindi SOLO per pacchetti aggiunti alla current dopo la mia installazione

Mi hanno suggerito di fare un mirror locale dell'albero della slackware e poi lanciare un Upgrade *.txz. (in poche parole)
Questo metodo può funzionare perchè per quelli non installati avrò un output diverso. Tuttavia dovrei individuare i pacchetti non installati in molte macchine sia current che non e sia 32 che 64 bit.

La principale motivazione è sapere se in fase di installazione da Samba qualche pacchetto è stato saltato (per esempio per archivio corrotto). Slackware purtroppo continua senza dare un output fisso nell'installazione così che non si può notare nulla a meno di errori in fase di utilizzo.
L'altro caso in cui ne averi bisogno sarebbe per trovare tutti i pacchetti che ho escluso tramite la selezione in fase di installazione. (per empio alcune XAP e tutti i tools e librerie per il wireless)

Come punti di riferimento per risolvere il problema penso si possa usare /var/log/packages e PACKAGES.TXT dei mirrors della current.
Sinceramente però non so come questi file possono aiutarmi o come sono strutturati per fare un confronto.

Grazie.

Avatar utente
conraid
Staff
Staff
Messaggi: 13631
Iscritto il: gio 14 lug 2005, 0:00
Nome Cognome: Corrado Franco
Slackware: current64
Desktop: kde
Località: Livorno
Contatta:

Re: Elenco Pacchetti non installati

Messaggio da conraid »

con un comando adesso non saprei, ma tramite pipe penso si possa farlo, altrimenti qualcosa come

Codice: Seleziona tutto

grep "PACKAGE NAME" /var/lib/slackpkg/PACKAGES.TXT | cut -d" " -f4 | sort | sed -e 's/\.t.*z//' > /tmp/original.txt
find /var/log/packages/ | cut -d/ -f5 | sort > /tmp/installed.txt
diff -B --suppress-common-lines  /tmp/original.txt /tmp/installed.txt

ocman
Linux 2.x
Linux 2.x
Messaggi: 239
Iscritto il: gio 31 lug 2008, 18:18
Slackware: ArchLinux
Desktop: xfce
Distribuzione: OpenIndiana

Re: Elenco Pacchetti non installati

Messaggio da ocman »

perfetto, l'output è corretto, quelli mancanti ci sono tutti. Aggiungerò qualche flag a diff per togliere quelli di kde e poi creo uno script.
Grazie Conraid !

Avatar utente
lennynero
Linux 3.x
Linux 3.x
Messaggi: 641
Iscritto il: lun 3 mag 2004, 0:00
Nome Cognome: Luigi Picaro
Slackware: current-x64
Kernel: 6.13.1
Desktop: Xfce-4.20
Località: Salerno

Re: Elenco Pacchetti non installati

Messaggio da lennynero »

Non ho capito benissimo il tuo obiettivo, comunque anche io sto scrivendo uno script che fa da monitor del ramo current, o di qualunque altro ramo(che usi PACKAGES.TXT), io mostro, i miei pacchetti, quelli della current, quelli obsoleti(rimossi dalla current), quelli persi(presenti in current, ma che io non ho), quelli non aggiornati, e quelli di terze parti. Il mio problema è il seguente: una volta saputo quali pacchetti ho in comune con la current, per controllare le versioni devo per forza fare un ciclio? questo è il mio approccio adesso, ma vorrei perfezionarlo:

Codice: Seleziona tutto

rep=`grep "PACKAGE NAME:" PACKAGES.TXT | sed 's/\(PACKAGE NAME:[ ]*\)\(.*\)\(....\)/\2/' | egrep -vf Blacklist`
my=`ls /var/log/packages | egrep -vf Blacklist`

NAMES=`echo $rep | sed -e 's/^\([a-zA-Z0-9_+-]*\)-\(.*\)-\(.*\)-\([0-9]*\)\([a-z]*\)$/\1/'`
MY_NAMES=`echo $my | sed -e 's/^\([a-zA-Z0-9_+-]*\)-\(.*\)-\(.*\)-\([0-9]*\)\([a-z]*\)$/\1/'`
SIMILAR=`comm -12 <(echo $NAMES) <(echo $MY_NAMES) | tr '\n' '|' | sed 's/ //g' | sed 's/|$//'`
E=`echo $rep | egrep $SIMILAR`
count=0
for i in $E; do
	newpkg=`echo $i | sed -e 's/^\([a-zA-Z0-9_+-]*\)-\(.*\)-\(.*\)-\([0-9]*\)\([a-z]*\)$/\1|\2|\4/'`
	set -- $newpkg
	IFS="|"; declare -a newpkg=($*) 
	new_name=${newpkg[0]}
	new_ver=${newpkg[1]}
	new_build=${newpkg[2]}
	mine=`echo $my | egrep $new_name`
	if [[ -n $mine ]]; then
		pkg=`echo $mine | sed -e 's/^\([a-zA-Z0-9_+-]*\)-\(.*\)-\(.*\)-\([0-9]*\)\([a-z]*\)$/\1|\2|\4/'`
		set -- $pkg
		IFS="|"; declare -a pkg=($*) 
		name=${pkg[0]}
		ver=${pkg[1]}
		build=${pkg[2]}
		if [[ $new_ver > $ver ]]; then
			news="$news version upgrade: $i\n"
			count=$((count+1))
		elif [[ $new_ver == $ver ]]; then
			if [[ $new_build > $build ]]; then
				news="$news  build upgrade: $i\n"
				count=$((count+1))
			fi
		fi
	fi
done

count2=`IFS=' ' | echo $news | wc -l`
echo $news > news
echo -e "--> New Packages: $news\n($count2) Upgradable packages found"
Questo script impiega circa 12 secondi...e mi sembrano un pò troppi: il mio intento sarebbe trovare un metodo un pò più veloce...se esiste :D.
Grazie in anticipo.

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: Elenco Pacchetti non installati

Messaggio da targzeta »

Ho appena messo in wiki un mio script che uso per aggiornare la current. Eseguendolo con l'opzione '-n' dovresti ottenere quello che vuoi. Il wiki lo trovi a questo indirizzo:
http://www.slacky.eu/wikislack/index.ph ... lackPkg.sh

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

ocman
Linux 2.x
Linux 2.x
Messaggi: 239
Iscritto il: gio 31 lug 2008, 18:18
Slackware: ArchLinux
Desktop: xfce
Distribuzione: OpenIndiana

Re: Elenco Pacchetti non installati

Messaggio da ocman »

Grazie mille a tutti!
Perchè non proponete di integrare questi vostri script agli sviluppatori di slackpkg? Ci sono sicuramente funzionalità mancanti....

Avatar utente
lennynero
Linux 3.x
Linux 3.x
Messaggi: 641
Iscritto il: lun 3 mag 2004, 0:00
Nome Cognome: Luigi Picaro
Slackware: current-x64
Kernel: 6.13.1
Desktop: Xfce-4.20
Località: Salerno

Re: Elenco Pacchetti non installati

Messaggio da lennynero »

Ciao spina, mi fa piacere che anche tu ti occupi di script di questo tipo, mi autorizza a pensare che non sono inutili..:D, comunque mi sono reso conto che postando lo script ho creato un pò di confuzione. La mia richiesta specifica è la seguente: c'è un modo più ottimizzato per fare il confronto di versione tra i propri packages e quelli di un rep? Ho notato che con il comando -n il tuo script verifica se un pacchetto, inteso come nome-versione-arch-sign non è installato sul proprio sistema, ma questo può dipendere da motivi diversi: il primo è che il nome non viene trovato sulla propria macchina, e in questo caso io lo considero un pacchetto perso, il secondo è che la versione o la build non vengono trovati, e in questo caso io lo considero una versione diversa; questo è il punto cruciale del problema: se trovo il nome(sulla mia macchina) ma la versione differisce, allora devo controllare la versione($new_ver > $ver) e mostrarlo tra gli aggiornamenti disponibili solo se il pacchetto risulta più nuovo di quello installato. La mia domanda in definitiva è: dati il file_list dei pacchetti installati, e il file_list dei pacchetti del repository, posso creare una lista di pacchetti comuni per cui controllare la versione, in modo rapido e magari evitando un ciclo come il for che ho mostrato sopra?

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: Elenco Pacchetti non installati

Messaggio da targzeta »

Se guardi il mio script fa quello che chiedi come comportamento di default senza opzioni, solo che non faccio il controllo che la versione sia maggiore di quella installata, questo perchè può succedere che sia la versione sia più nuova sia che la 'sign' sia più nuova. Io mi limito a dire che i due pacchetti differiscono (con l'opzione -v puoi vedere la versione attuale e quella del repos).
Penso che non ci sia soluzione senza un ciclo for, comunque il mio script ci mette circa 5 secondi sulla mia macchina. Il problema è che il confronto va fatto sul nome del pacchetto, ma questo non ha una lunghezza ben definita e quindi non puoi usare un comando esistente.

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

Avatar utente
lennynero
Linux 3.x
Linux 3.x
Messaggi: 641
Iscritto il: lun 3 mag 2004, 0:00
Nome Cognome: Luigi Picaro
Slackware: current-x64
Kernel: 6.13.1
Desktop: Xfce-4.20
Località: Salerno

Re: Elenco Pacchetti non installati

Messaggio da lennynero »

sì avevo notato, comunque io controllo la versione, successivamente se la versione è uguale controllo la build(la sign la lascio a parte). Inoltre dal tuo script ho rubato il modo di usare le funzioni con una stringa come return :) non sapevo si potesse fare così.

ps comunque il mio metodo impiega circa 12secondi per rilevare 389 pacchetti aggiornabili, ma evidentemente il controllo di versione è oneroso...

ocman
Linux 2.x
Linux 2.x
Messaggi: 239
Iscritto il: gio 31 lug 2008, 18:18
Slackware: ArchLinux
Desktop: xfce
Distribuzione: OpenIndiana

Re: Elenco Pacchetti non installati

Messaggio da ocman »

@Spina.
Ho provato lo script e funziona perfettamente oltre ad essere veloce con l'opzione -n.
è molto utile il fatto che venga dato il percorso completo del repository.

ora avevo l'esigenza di sapere i ___pacchetti installati per ogni gruppo___ di pacchetti di slackware ap/a/kde ...
Facendo $slackpkg search "ap" però non ottengo risultati corretti....magari per kdei si....ma no per tutte le categorie poichè fa una ricerca da più metadata.
Ache con pkgtool non te li ordina per gruppi. Conoscete altri metodi?

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: Elenco Pacchetti non installati

Messaggio da targzeta »

Ma intendi relativamente al repository ufficiale? Cioé una cosa che si può vedere sempre analizzando il file FILE_LIST? Se è così posso vedere di implementarlo nello script. Effettivamente ho notato che l'output di '-s' non da il percorso completo. Facendo in modo che l'output sia il percorso completo, tutti i pacchetti installati dovrebbero essere l'insieme dato dall'esecuzione dello script senza parametri e quello con il flag '-s': quelli che hanno una versione differente e quelli che hanno la stessa versione.

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

ocman
Linux 2.x
Linux 2.x
Messaggi: 239
Iscritto il: gio 31 lug 2008, 18:18
Slackware: ArchLinux
Desktop: xfce
Distribuzione: OpenIndiana

Re: Elenco Pacchetti non installati

Messaggio da ocman »

esatto. con il percorso completo nell'output di "-s" sarebbe cosa intendo

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: Elenco Pacchetti non installati

Messaggio da targzeta »

Provo a vedere se riesco a fare qualcosa domani mattina prima di pranzo. Se vuoi vedi se riesci a risolvere tu la cosa e se ce la fai posta qui una patch o lo script modificato che poi vedo di implementarla nell'originale.

Emanuele
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: Elenco Pacchetti non installati

Messaggio da targzeta »

Ho aggiornato lo script, era più facile del previsto. Dimmi se ora ti va bene,
Emanuele

P.S. Ovviamente è l'output di '-s' che è diverso.
Se pensi di essere troppo piccolo per fare la differenza, prova a dormire con una zanzara -- Dalai Lama

ocman
Linux 2.x
Linux 2.x
Messaggi: 239
Iscritto il: gio 31 lug 2008, 18:18
Slackware: ArchLinux
Desktop: xfce
Distribuzione: OpenIndiana

Re: Elenco Pacchetti non installati

Messaggio da ocman »

=D>
Perfetto. Ora c'è i percorso completo.
Grazie Spina :thumbright:

Rispondi