txz e packages.txt

Postate qui se avete consigli per migliorare i pacchetti disponibili in questo sito o se avete problemi con installazione, funzionamento o altro.

Moderatore: Staff

Regole del forum
1) Citare in modo preciso il nome del pacchetto.
2) Specificare se discussione/suggerimento o richiesta d'aiuto.
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
d4z_c0nf
Packager
Packager
Messaggi: 1296
Iscritto il: mar 14 mar 2006, 18:07
Nome Cognome: Rocco Aliberti
Slackware: 14.2-current64
Kernel: 4.14.73
Desktop: awesomeWM
Località: Pinerolo

Re: txz e packages.txt

Messaggio da d4z_c0nf »

conraid ha scritto:
d4z_c0nf ha scritto:Ma scusate, tutto quel casino e poi
xz -dc pacchetto | wc -c

era la soluzione?!

rock
oh allora rock, io posto sempre qui per conoscenza di tutti, ma spero sempre che Spina legga ;-)

Aahahah, ho capito in pratica sfrutti il forum per ottenere il supporto di Spina... Fai bene :tongue:

Comunque io c'avevo pensato a wc, solo che l'avevo pensato male, lo volevo usare invece del for per fare la somma.
Spina è di un altro livello proprio.
rock

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: txz e packages.txt

Messaggio da targzeta »

conraid ha scritto:...
oh allora rock, io posto sempre qui per conoscenza di tutti, ma spero sempre che Spina legga ;-)
Ribadisco, MALEDETTO!!! :lol:

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

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: txz e packages.txt

Messaggio da conraid »

spina ha scritto:
conraid ha scritto:...
oh allora rock, io posto sempre qui per conoscenza di tutti, ma spero sempre che Spina legga ;-)
Ribadisco, MALEDETTO!!! :lol:
Ovvia Emanuale, invece di ringraziarmi che ti porto sulla via dello slack ;-)

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: txz e packages.txt

Messaggio da conraid »

Questo è lo script, naturalmente le dir sono quelle del mio pc

Codice: Seleziona tutto

#!/bin/bash                          

set -e

TMP=/tmp
HTMLDIR=/opt/slackers/html
ROOTDIR=/opt/slackers/repos-nosource

cd $ROOTDIR

# Creo Changelog.rss
# Qui c'è una parte presa pari pari dallo script di AlienBob


###############
#              
# Creo PACKAGES.TXT and MANIFEST.bz2


cd $ROOTDIR

for pkg in $(find . -type f -name '*cf.t?z' -print | sort)
do                                                        
            NAME=$(echo $pkg|sed -re "s/(.*\/)(.*.t?z)$/\2/")
            LOCATION=$(echo $pkg|sed -re "s/(.*)\/(.*.t?z)$/\1/")
            PKGEXT=$(echo $pkg | rev | cut -f 1 -d . | rev)      
            if [ $PKGEXT = "tgz" ]; then                         
            SIZE=$( expr $(gunzip -l $pkg |tail -1|awk '{print $1}') / 1024 )
            USIZE=$( expr $(gunzip -l $pkg |tail -1|awk '{print $2}') / 1024 )
            METAFILE=${NAME%tgz}meta                                          
            else                                                              
            SIZE=$(expr $(ls -lL $pkg | tr -s ' ' | cut -f 5 -d ' ') / 1024 ) 
            USIZE=$( expr $(xz -dc $pkg | wc -c) / 1024 )                     
            METAFILE=${NAME%txz}meta                                          
            fi                                                                
            REQUIRED=""                                                       
            CONFLICTS=""                                                      
            SUGGESTS=""                                                       
            echo "PACKAGE NAME:  $NAME" > $LOCATION/$METAFILE                 
            echo "PACKAGE LOCATION:  $LOCATION" >> $LOCATION/$METAFILE        
            echo "PACKAGE SIZE (compressed):  $SIZE K" >> $LOCATION/$METAFILE 
            echo "PACKAGE SIZE (uncompressed):  $USIZE K" >> $LOCATION/$METAFILE
            #echo "PACKAGE REQUIRED:  $REQUIRED" >> $LOCATION/$METAFILE         
            #echo "PACKAGE CONFLICTS:  $CONFLICTS" >> $LOCATION/$METAFILE       
            #echo "PACKAGE SUGGESTS:  $SUGGESTS" >> $LOCATION/$METAFILE         
            echo "PACKAGE DESCRIPTION:" >> $LOCATION/$METAFILE                  
            echo $NAME                                                          
            tar xfO $pkg install/slack-desc |grep -E '\w+\:'|grep -v '^#' >> $LOCATION/$METAFILE
            echo "" >> $LOCATION/$METAFILE                                                      
            echo "" >> $LOCATION/$METAFILE                                                      
            echo "++========================================" >> $ROOTDIR/MANIFEST              
            echo "||" >> $ROOTDIR/MANIFEST                                                      
            echo "||   Package:  $pkg" >> $ROOTDIR/MANIFEST                                     
            echo "||" >> $ROOTDIR/MANIFEST                                                      
            echo "++========================================" >> $ROOTDIR/MANIFEST              
            tar tvf $pkg >> $ROOTDIR/MANIFEST                                                   
            echo >> $ROOTDIR/MANIFEST                                                           
            echo >> $ROOTDIR/MANIFEST                                                           
done                                                                                            

echo '' > $ROOTDIR/PACKAGES.TXT
find . -type f -name '*.meta' | sort | xargs cat >> $ROOTDIR/PACKAGES.TXT
cat $ROOTDIR/PACKAGES.TXT | gzip -9 -c - > $ROOTDIR/PACKAGES.TXT.gz      
find . -type f -name '*.meta' -exec rm -f {} \;                          

echo '' > $ROOTDIR/CHECKSUMS.md5
find . -type f -name '*cf*.t?z' | sort | xargs md5sum >> $ROOTDIR/CHECKSUMS.md5
cat $ROOTDIR/CHECKSUMS.md5 | gzip -9 -c - > $ROOTDIR/CHECKSUMS.md5.gz          

bzip2 $ROOTDIR/MANIFEST


#
# gen_filelist
#             
DIR=$REPOSROOT
LISTFILE=$HTMLDIR/FILELIST.TXT

( cd ${DIR}
cat <<EOT > ${LISTFILE}
$(LC_TIME=en_US date -u)

Here is the file list for http://www.slackers.it/repository,
maintained by Corrado Franco <http://conraid.net>.

EOT
#find . | sort | xargs ls -nld >> ${LISTFILE}
find . | sort | xargs ls -ngGd >> ${LISTFILE}
cat $LISTFILE | gzip -9 -c - > ${LISTFILE}.gz
)


# Copio i file in HTML
mv CHECKSUMS* $HTMLDIR
mv PACKAGES* $HTMLDIR
mv ChangeLog* $HTMLDIR
mv MANIFEST* $HTMLDIR
Come vedete cancello i file .meta (alcuni non lo fanno) e tolgo voci da packages.txt, ma ho lasciato così perché possono sempre essermi utili

Se notate errori o avete suggerimenti, ben vengano :-)

Avatar utente
d4z_c0nf
Packager
Packager
Messaggi: 1296
Iscritto il: mar 14 mar 2006, 18:07
Nome Cognome: Rocco Aliberti
Slackware: 14.2-current64
Kernel: 4.14.73
Desktop: awesomeWM
Località: Pinerolo

Re: txz e packages.txt

Messaggio da d4z_c0nf »

due cose ad occhio:

Codice: Seleziona tutto

find . -type f -name '*cf.t?z' -print | sort
da lo stesso risultato di

Codice: Seleziona tutto

find . -type f -name '*cf.t?z' | sort
e sfruttando Spina:

Codice: Seleziona tutto

SIZE=$( expr $(ls -lL $pkg | tr -s ' ' | cut -f 5 -d ' ') / 1024 ) 
per entrambi i tipi
puoi ottenerlo come

Codice: Seleziona tutto

SIZE= $((  $(cat $pkg | wc -c) / 1024 )) 
L'unica cosa è che non so se a livello di risorse è lo stesso (con time l'opzione che ti suggerisco è + lenta di qualche millesimo di secondo su un pacchetto da 4mega..)
Però è indipendente dal tipo di pacchetto

P.S.
La soluzinoe con ls invece è veloce circa quanto quella che usi per i pacchetti tgz (sfruttando i metadati), quindi se vuoi puoi usare quella per tutti e due i tipi.
rock
Ultima modifica di d4z_c0nf il mer 27 mag 2009, 16:26, modificato 4 volte in totale.

Avatar utente
d4z_c0nf
Packager
Packager
Messaggi: 1296
Iscritto il: mar 14 mar 2006, 18:07
Nome Cognome: Rocco Aliberti
Slackware: 14.2-current64
Kernel: 4.14.73
Desktop: awesomeWM
Località: Pinerolo

Re: txz e packages.txt

Messaggio da d4z_c0nf »

Sorry doppio post

Avatar utente
algol
Linux 3.x
Linux 3.x
Messaggi: 969
Iscritto il: gio 7 set 2006, 1:19
Slackware: 12.1
Kernel: 2.6.26.1
Desktop: xfce4.4.2

Re: txz e packages.txt

Messaggio da algol »

Offtopic: Thread di alto livello...
Noi umani leggiamo basiti e tacciamo in religioso silenzio... :o

Avatar utente
d4z_c0nf
Packager
Packager
Messaggi: 1296
Iscritto il: mar 14 mar 2006, 18:07
Nome Cognome: Rocco Aliberti
Slackware: 14.2-current64
Kernel: 4.14.73
Desktop: awesomeWM
Località: Pinerolo

Re: txz e packages.txt

Messaggio da d4z_c0nf »

Ah na cosa Corrado, non capisco perchè qui:

Codice: Seleziona tutto

find . | sort | xargs ls -ngGd >> ${LISTFILE}
prima fai un sort, ls non lo fa di per se?
vabè quisquilie.
rock

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: txz e packages.txt

Messaggio da conraid »

d4z_c0nf ha scritto:Ah na cosa Corrado, non capisco perchè qui:

Codice: Seleziona tutto

find . | sort | xargs ls -ngGd >> ${LISTFILE}
prima fai un sort, ls non lo fa di per se?
vabè quisquilie.
rock
visto, ma anche questo era di alien :-)

ora guardo le altre cose che hai scritto

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: txz e packages.txt

Messaggio da Mario Vanoni »

d4z_c0nf ha scritto:Ah na cosa Corrado, non capisco perchè qui:

Codice: Seleziona tutto

find . | sort | xargs ls -ngGd >> ${LISTFILE}
prima fai un sort, ls non lo fa di per se?
vabè quisquilie.
rock
Scusa, ma find riporta in ordine inode,
non alfabetico, quindi il sort ha senso.

Avatar utente
d4z_c0nf
Packager
Packager
Messaggi: 1296
Iscritto il: mar 14 mar 2006, 18:07
Nome Cognome: Rocco Aliberti
Slackware: 14.2-current64
Kernel: 4.14.73
Desktop: awesomeWM
Località: Pinerolo

Re: txz e packages.txt

Messaggio da d4z_c0nf »

Mario Vanoni ha scritto:
d4z_c0nf ha scritto:Ah na cosa Corrado, non capisco perchè qui:

Codice: Seleziona tutto

find . | sort | xargs ls -ngGd >> ${LISTFILE}
prima fai un sort, ls non lo fa di per se?
vabè quisquilie.
rock
Scusa, ma find riporta in ordine inode,
non alfabetico, quindi il sort ha senso.
Scusa Mario ma tutto l'output (a lotto) di find viene dato in pasto ad ls o sbaglio?

Quindi il lotto viene ordinato da ls, perciò non serve sort.
Differente è il caso

Codice: Seleziona tutto

$(find . -type f -name '*cf.t?z' | sort)
Lì ha senso.
rock
Ultima modifica di d4z_c0nf il mer 27 mag 2009, 16:45, modificato 1 volta in totale.

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: txz e packages.txt

Messaggio da targzeta »

La variabile REPOSROOT cosa vale?

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

Avatar utente
d4z_c0nf
Packager
Packager
Messaggi: 1296
Iscritto il: mar 14 mar 2006, 18:07
Nome Cognome: Rocco Aliberti
Slackware: 14.2-current64
Kernel: 4.14.73
Desktop: awesomeWM
Località: Pinerolo

Re: txz e packages.txt

Messaggio da d4z_c0nf »

spina ha scritto:La variabile REPOSROOT cosa vale?

Emanuele
Eheh, sarà un refuso, adesso mi sa che è ROOTDIR

rock

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: txz e packages.txt

Messaggio da conraid »

con ls per entrambi i formati

Codice: Seleziona tutto

real    2m28.968s
user    1m55.278s
sys     0m16.030s
con cat

Codice: Seleziona tutto

real    2m29.362s
user    1m55.238s
sys     0m16.779s
mi sembrano simili, ma il grosso è USIZE, con soli tgz i tempi sono notevolmente diversi
spina ha scritto:La variabile REPOSROOT cosa vale?

Codice: Seleziona tutto

  REPOSROOT=${REPOSROOT:-"/opt/slackers/repos-nosource"}
fa parte della sezione del changelod, se volete posto anche quella
è ROOTDIR in pratica, solo che prima usavo due script diversi, che ho unito adesso, ora la rendo omogenea

c'era anche un errore sui file meta


ora è così

Codice: Seleziona tutto


set -e

TMP=/tmp
HTMLDIR=/opt/slackers/html
ROOTDIR=/opt/slackers/repos-nosource

###############
#              
# Creo PACKAGES.TXT and MANIFEST.bz2


cd $ROOTDIR

for pkg in $(find . -type f -name '*cf.t?z' | sort)
do                                                 
            NAME=$(echo $pkg|sed -re "s/(.*\/)(.*.t?z)$/\2/")
            LOCATION=$(echo $pkg|sed -re "s/(.*)\/(.*.t?z)$/\1/")
            PKGEXT=$(echo $pkg | rev | cut -f 1 -d . | rev)      
            SIZE=$(expr $(ls -lL $pkg | tr -s ' ' | cut -f 5 -d ' ') / 1024 )
            if [ $PKGEXT = "tgz" ]; then                                      
                USIZE=$( expr $(gunzip -l $pkg |tail -1|awk '{print $2}') / 1024 )
                METAFILE=${NAME%tgz}.meta                                         
            else                                                                  
                USIZE=$( expr $(xz -dc $pkg | wc -c) / 1024 )                     
                METAFILE=${NAME%txz}.meta                                         
            fi                                                                    
            REQUIRED=""                                                           
            CONFLICTS=""                                                          
            SUGGESTS=""                                                           
            echo "PACKAGE NAME:  $NAME" > $LOCATION/$METAFILE                     
            echo "PACKAGE LOCATION:  $LOCATION" >> $LOCATION/$METAFILE            
            echo "PACKAGE SIZE (compressed):  $SIZE K" >> $LOCATION/$METAFILE     
            echo "PACKAGE SIZE (uncompressed):  $USIZE K" >> $LOCATION/$METAFILE  
            #echo "PACKAGE REQUIRED:  $REQUIRED" >> $LOCATION/$METAFILE           
            #echo "PACKAGE CONFLICTS:  $CONFLICTS" >> $LOCATION/$METAFILE         
            #echo "PACKAGE SUGGESTS:  $SUGGESTS" >> $LOCATION/$METAFILE           
            echo "PACKAGE DESCRIPTION:" >> $LOCATION/$METAFILE                    
            echo $NAME                                                            
            tar xfO $pkg install/slack-desc |grep -E '\w+\:'|grep -v '^#' >> $LOCATION/$METAFILE
            echo "" >> $LOCATION/$METAFILE                                                      
            echo "" >> $LOCATION/$METAFILE                                                      
            echo "++========================================" >> $ROOTDIR/MANIFEST              
            echo "||" >> $ROOTDIR/MANIFEST                                                      
            echo "||   Package:  $pkg" >> $ROOTDIR/MANIFEST                                     
            echo "||" >> $ROOTDIR/MANIFEST                                                      
            echo "++========================================" >> $ROOTDIR/MANIFEST              
            tar tvf $pkg >> $ROOTDIR/MANIFEST                                                   
            echo >> $ROOTDIR/MANIFEST                                                           
            echo >> $ROOTDIR/MANIFEST                                                           
done                                                                                            

echo '' > $ROOTDIR/PACKAGES.TXT
find . -type f -name '*.meta' | sort | xargs cat >> $ROOTDIR/PACKAGES.TXT
cat $ROOTDIR/PACKAGES.TXT | gzip -9 -c - > $ROOTDIR/PACKAGES.TXT.gz      
find . -type f -name '*.meta' -exec rm -f {} \;                          

echo '' > $ROOTDIR/CHECKSUMS.md5
find . -type f -name '*cf*.t?z' | sort | xargs md5sum >> $ROOTDIR/CHECKSUMS.md5
cat $ROOTDIR/CHECKSUMS.md5 | gzip -9 -c - > $ROOTDIR/CHECKSUMS.md5.gz          

bzip2 $ROOTDIR/MANIFEST


#
# gen_filelist
#             

LISTFILE=$HTMLDIR/FILELIST.TXT

( cd ${ROOTDIR}
cat <<EOT > ${LISTFILE}
$(LC_TIME=en_US date -u)

Here is the file list for http://www.slackers.it/repository,
maintained by Corrado Franco <http://conraid.net>.

EOT
#find . | sort | xargs ls -nld >> ${LISTFILE}
find . | xargs ls -ngGd >> ${LISTFILE}
cat $LISTFILE | gzip -9 -c - > ${LISTFILE}.gz
)


# Copio i file in HTML
mv CHECKSUMS* $HTMLDIR
mv PACKAGES* $HTMLDIR
mv ChangeLog* $HTMLDIR
mv MANIFEST* $HTMLDIR

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: txz e packages.txt

Messaggio da Mario Vanoni »

d4z_c0nf ha scritto: Scusa Mario ma tutto l'output (a lotto) di find viene dato in pasto ad ls o sbaglio?
rock
Si, ma
se la inode 1 si riferisce alla dir zzz
la inode 2 alla dir rock
la inode 3 alla dir aaa
create prima dei files,
i files avranno inodes metti 100...9999,
a seconda della data di creazione.

senza sort ls li sortisce nella dir,
ma non sortisce le dirs, quindi un "disordine" stile
zzz/aa
zzz/bb
rock/rock
rock/xxx
aaa/rock
aaa/zebra

xargs ls fa quello che gli vien detto di fare,
senza sort prima zzz, poi rock ed alla fine aaa

Ragione per cui copio dirs sempre con
find | sort | cpio -pdm destinazione
e le inode della destinazione sono in ordine alfabetico.

Alien e` una vecchia volpe UNIX!

Rispondi