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
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:
A sto punto digli pure il fatto di $PKG_CONFIG_PATH, tanto ormai siete amici :tongue:
rock
poi sono io che esagero :P

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:
A sto punto digli pure il fatto di $PKG_CONFIG_PATH, tanto ormai siete amici :tongue:
rock
poi sono io che esagero :P
Ehehe, no dai non glielo dire altrimenti mette il thanks to a Corrado Franco, e mi scoccia :D
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 »

Questo è lo script definitivo, alla fine prende un po' di tempo, ma non blocca la macchina nemmeno per un istante

Codice: Seleziona tutto

#!/bin/bash

set -e

TMP=/tmp
HTMLDIR=/opt/slackers/html
ROOTDIR=/opt/slackers/repos-nosource
HTMLFILE=${HTMLDIR}/packages.inc
SEDFILE=$(pwd)/newline.sed

make_rss() {
# Creo Changelog.rss
cd $ROOTDIR

# Creo Changelog.rss

  REPOSOWNER=${REPOSOWNER:-"Corrado Franco <http://conraid.net>"}

  # Under what URL is the repository accessible:
 # DL_URL=${DL_URL:-"http://www.slackers.it/repository"}

  # The title of the generated RSS feed:
  RSS_TITLE=${RSS_TITLE:-"Conraid's Slackware packages"}

  # The URL linked to when clicking on the logo:
  RSS_LINK=${RSS_LINK:-"http://www.slackers.it/repository"}

  # URL to the full changelog.txt:
  RSS_CLURL=${RSS_CLURL:-"http://www.slackers.it/repository/ChangeLog.txt"}

  # The descriptive text for the RSS feed:
  RSS_DESCRIPTION=${RSS_DESCRIPTION:-"Corrado Franco (Conraid) Slackware package repository. The package directories include the SlackBuild script."}

  # Maximum number of RSS feed entries to display:
  RSS_FEEDMAX=${RSS_FEEDMAX:-15}

  # The RSS generator must use a unique feed identifier.
  # Generate one for your feed by using the string returned by "uuidgen -t":
  RSS_UUID=${RSS_UUID:-""}


  INFILE=${ROOTDIR}/ChangeLog.txt
  RSSFILE=${ROOTDIR}/ChangeLog.rss

  # These values are all set in the beginning (can be user-overridden):
  TITLE="$RSS_TITLE"
  LINK="$RSS_LINK"
  CLURL="$RSS_CLURL"
  DESCRIPTION="$RSS_DESCRIPTION"
  FEEDMAX=$RSS_FEEDMAX
  UUID="$RSS_UUID"

  PUBDATE=""
  LASTBUILDDATE=$(LC_TIME=en_US TZ=UTC date -u +"%a, %e %b %Y %H:%M:%S UTC")
                 # The 'date -R' RFC-2822 compliant string
                 # does not work for Thunderbird!
  counter=0
  elines=0

  # Parse the input file
  cat ${INFILE} | while IFS= read cline ; do
    if [ "$PUBDATE" == "" ]; then
      # PUBDATE is empty, means we're reading the first line of input.
      # The first line contains the most recent pubdate.
      # For backward compatibility, if the file starts with
      # "+--------------------------+" then we just skip that.
      [ "$cline" == "+--------------------------+" ] && read cline
      PUBDATE=$(LC_TIME=en_US TZ=UTC date -u +"%a, %e %b %Y %H:%M:%S UTC" -d "$cline")
      cat <<-_EOT_ > ${RSSFILE}
	<?xml version="1.0" encoding="iso-8859-1"?>
	<rss version="2.0">
	   <channel>
	      <title>${TITLE}</title>
	      <link>${LINK}</link>
	      <description>${DESCRIPTION}</description>
	      <language>en-us</language>
	      <id xmlns="http://www.w3.org/2005/Atom">urn:uuid:${UUID}</id>
	      <pubDate>${PUBDATE}</pubDate>
	      <lastBuildDate>${LASTBUILDDATE}</lastBuildDate>
	      <generator>${BASENAME} v ${REV}</generator>
	_EOT_
    elif [ "$cline" == "+--------------------------+" ]; then
      # Start of a new entry; dump the previous one
      cat <<-_EOT_ >> ${RSSFILE}
	      <item>
	         <title>${PUBDATE}</title>
	         <link>${CLURL}</link>
	         <description>
	           <![CDATA[<pre>
	_EOT_
      for i in `seq 0 $elines`; do
        [ "${ENTRY[$i]}" != "" ] && echo "${ENTRY[$i]}" >> ${RSSFILE}
      done
      cat <<-_EOT_ >> ${RSSFILE}
	           </pre>]]>
	         </description>
	         <pubDate>${PUBDATE}</pubDate>
	         <guid isPermaLink="false">$(LC_TIME=en_US date -d "${PUBDATE}" +%Y%m%d%H%M%S)</guid>
	      </item>
	_EOT_
      # Next line is the pubdate
      read PUBDATE
      #PUBDATE=$(TZ=GMT date +"%a, %e %b %Y %H:%M:%S GMT" -d "$PUBDATE")
      PUBDATE=$(LC_TIME=en_US TZ=UTC date -u +"%a, %e %b %Y %H:%M:%S UTC" -d "$PUBDATE")
      unset ENTRY
      elines=0
      counter=$(( ${counter}+1 ))
      # Only dump a certain amount of recent entries.
      [ $counter -gt $FEEDMAX ] && break
    else
      # Add a line of description
      ENTRY[$elines]="$cline"
      elines=$(( ${elines}+1 ))
    fi
  done

  if [ ${elines} -ne 0 ]; then
    # We have a last entry in store (means we have less than FEEDMAX)
    cat <<-_EOT_ >> ${RSSFILE}
	      <item>
	         <title>${PUBDATE}</title>
	         <link>${CLURL}</link>
	         <description>
	           <![CDATA[<pre>
	_EOT_
      for i in `seq 0 $elines`; do
        [ "${ENTRY[$i]}" != "" ] && echo "            ${ENTRY[$i]}" >> ${RSSFILE}
      done
      cat <<-_EOT_ >> ${RSSFILE}
	           </pre>]]>
	         </description>
	         <pubDate>${PUBDATE}</pubDate>
	      </item>
	_EOT_
  fi
	
  # Close the XML output:
  cat <<-_EOT_ >> ${RSSFILE}
	   </channel>
	</rss>
	_EOT_

}

make_repo() {

cd $ROOTDIR

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

cd $ROOTDIR
rm -f PACKAGES.TXT CHECKSUMS.md5 MANIFEST MANIFEST.bz2 PACKAGES.TXT.gz CHECKSUMS.md5.gz
echo "PACKAGES.TXT;  $(date -u)" > $ROOTDIR/PACKAGES.TXT
echo "" >> $ROOTDIR/PACKAGES.TXT
for pkg in $(find . -type f -name '*cf.t?z' -print | sort)
do
    NAME=${pkg##*/}
    LOCATION=${pkg%/*}
    PKGEXT=${pkg##*.}
    if [ $PKGEXT = "tgz" ]; then
        INFO=($(gunzip -l $pkg | tail -n1 | tr -s ' '))
        SIZE=${INFO[0]}
        USIZE=${INFO[1]}
    else
        SIZE=$(stat --format="%s" $pkg)
        USIZE=$(xz -dc $pkg | wc -c)
    fi
    let SIZE=SIZE/1024;
    let USIZE=USIZE/1024;
    echo $NAME
    DESCRIPTION=$(tar xOf $pkg install/slack-desc | sed -n '/#/d;/:/p')
    LIST=$(tar tvf $pkg)
    cat <<EOF >> $ROOTDIR/PACKAGES.TXT
PACKAGE NAME:  $NAME
PACKAGE LOCATION:  $LOCATION
PACKAGE SIZE (compressed):  $SIZE K
PACKAGE SIZE (uncompressed):  $USIZE K
PACKAGE DESCRIPTION:
$DESCRIPTION


EOF
    cat <<EOF >> $ROOTDIR/MANIFEST
++========================================
||
||   Package:  $pkg"
||
++========================================
$LIST


EOF
    md5sum $pkg >> $ROOTDIR/CHECKSUMS.md5
done

cat $ROOTDIR/PACKAGES.TXT | gzip -9 -c - > $ROOTDIR/PACKAGES.TXT.gz
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 . | xargs ls -ngGd >> ${LISTFILE}
cat $LISTFILE | gzip -9 -c - > ${LISTFILE}.gz
)

}


make_html() {
cd $ROOTDIR
# Creo packges.inc
echo "" > $HTMLFILE
for DIR in $(find . -type d -name 'src' -print | sort); do
    cd $ROOTDIR/$DIR
    if [ -e slack-desc ]; then
        echo "<h3 class=\"pkg\"><a href=\"http://www.slackers.it/repository/$DIR\">$DIR</a></h3>" >> $HTMLFILE
        echo '<p class="pkg-desc">' >> $HTMLFILE
        cat ./slack-desc | grep -v "^#" | grep -v handy-ruler | grep -v "conraid" | \
		cut -f 2- -d : | cut -b2- | sed -r 's%^(Home.*: (http|ftp|https):)%\n\1%g' | \
		sed -f $SEDFILE | sed "s%^$%\<br\ \/\>%g" | sed 1,3d | \
		sed -r "/^Home/s%((http|ftp|https)://.*)%<a href=\"\1\" rel=\"external nofollow\" title=\"[link esterno] Vai al sito del software $DIR\">\1</a>%g" \
		>> $HTMLFILE
        echo "</p>" >> $HTMLFILE
	echo '<p class="pkg-link">' >> $HTMLFILE
	echo -n "<a href=\"http://www.slackers.it/repository/$DIR/pkg\" rel=\"nofollow\" title=\"Download Package\">Package</a>" >> $HTMLFILE
	echo -n " :: " >> $HTMLFILE
	echo "<a href=\"http://www.slackers.it/repository/$DIR/src\" rel=\"nofollow\" title=\"Download SlackBuild\">SlackBuild</a>" >> $HTMLFILE
	echo "</p>" >> $HTMLFILE
    fi
done
}

make_rss
make_repo
make_html

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

echo ""
echo "Finish!"


make_html() fa una pagina html, purtroppo volevo crearla diversa a partire da file .info dove mettere una lista banale, siccome all'inizio c'erano pochi pacchetti ho fatto quello script che prendeva le info da slack-desc, ma ora inizia ad essere troppo grande.
Quindi non l'ho mai ottimizzato, e non so se vale la pena perderci tempo, visto che vorrei cambiare
Anche se immagino che Spina rabbrividisca di fronte a quelle pipe :-D



newline.sed

Codice: Seleziona tutto

/^$/{
N
/^\n$/D
}

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 »

Ho scritto ad Alien Bob, tra l'altro ho notato che usa:

Codice: Seleziona tutto

  $COMPEXE -cd $PKG | tar xfO - install/slack-desc |grep -v '^#' > $LOCATION/$TXTFILE
nota il '^#'. Non so come mi sia sfiggito, lo stavo cercando apposta :). La traduzione esatta con sed sarebbe:

Codice: Seleziona tutto

tar xOf $pkg install/slack-desc | sed -n '/^#/d;/:/p' >> $LOCATION/$METAFILE
Quindi dovresti modificare il tuo script. Non so se mi sono spiegato c'è un '^#' invece di '#', questo perchè anche nella descrizione ci potrebbe essere un '#' e senza il '^' davanti viene eliminato il rigo dalla descrizione.

Forse mi sono spiegato malissimo :),
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: txz e packages.txt

Messaggio da targzeta »

conraid ha scritto:...
Anche se immagino che Spina rabbrividisca di fronte a quelle pipe :-D
...
Ho decisamente evitato di guardare il codice :), altrimenti passo un altra giornata senza studiare!!

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 »

conraid ha scritto:Questo è lo script definitivo, alla fine prende un po' di tempo, ma non blocca la macchina nemmeno per un istante

Codice: Seleziona tutto


        cat ./slack-desc | grep -v "^#" | grep -v handy-ruler | grep -v "conraid" | \
		cut -f 2- -d : | cut -b2- | sed -r 's%^(Home.*: (http|ftp|https):)%\n\1%g' | \
	
A occhio, questo pezzo
"cat ./slack-desc | grep -v "^#" | grep -v handy-ruler" è uguale a quello postato da spina:

Codice: Seleziona tutto

cat slack-desc | sed -n '/^#/d;/:/p'
Praticamente '/^#/d' toglie la parte commentata
e '/:/p'
printa solo le stringhe contenti i ":" (l'opzione -n dice a sed di non stampare niente, e p obbliga a stampare le stringe che corrispondono al pattern)

P.S.
se ci dai un esempio di slack-desc tuo possiamo ottimizzare quelle 300 pipe :D
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 »

spina ha scritto:Corrado, io tuo script sembra funzionare male, ma il mio non ho capito ancora se va bene. Una cosa alla volta, tu hai un problema in questo rigo:

Codice: Seleziona tutto

tar xfO $pkg install/slack-desc |grep -E '\w+\:'|grep -v '^#' >> $LOCATION/$METAFILE
Infatti:

Codice: Seleziona tutto

$>tar -xOf repos/d/gcc-g++-4.3.3-x86_64-4.txz install/slack-desc |grep -E '\w+\:'|grep -v '^#'

$> echo $?
1
e questo perchè nell'espressione regolare '\w' non è incluso il simbolo '+'.
\w non è tutte le lettere tranne il bordo di parola?
ho trovato anche altri esempi in rete che la usano con grep e le regex estese, comunque:

Codice: Seleziona tutto

# tar -xOf abook-0.6.0pre2-i686-4cf.txz install/slack-desc |grep -E '\w+\:'|grep -v '^#'
abook: abook
abook:
abook: Abook is a text-based addressbook program designed to use with mutt
abook: mail client. Abook runs on Linux, FreeBSD and some other UNIXes.
abook:
abook: Home: http://abook.sourceforge.net/
abook:
abook:
abook:
abook:
abook: Packaged by Corrado Franco <http://conraid.net>
# echo $?
0
#

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:Ho scritto ad Alien Bob, tra l'altro ho notato che usa:

Codice: Seleziona tutto

  $COMPEXE -cd $PKG | tar xfO - install/slack-desc |grep -v '^#' > $LOCATION/$TXTFILE
nota il '^#'. Non so come mi sia sfiggito, lo stavo cercando apposta :). La traduzione esatta con sed sarebbe:

Codice: Seleziona tutto

tar xOf $pkg install/slack-desc | sed -n '/^#/d;/:/p' >> $LOCATION/$METAFILE
Quindi dovresti modificare il tuo script. Non so se mi sono spiegato c'è un '^#' invece di '#', questo perchè anche nella descrizione ci potrebbe essere un '#' e senza il '^' davanti viene eliminato il rigo dalla descrizione.

Forse mi sono spiegato malissimo :),
Emanuele
Non ho capito.
A parte che a me non da errore \w+, ma se metto # mi toglie appunto ogni parte dove compare #, ^# mi toglie solamente le righe commentate, a me sembra di aver usato ^#

Gli slack-desc sono "sempre"

Codice: Seleziona tutto

# HOW TO EDIT THIS FILE:
# The "handy ruler" below makes it easier to edit a package description.  Line
# up the first '|' above the ':' following the base package name, and the '|'
# on the right side marks the last column you can put a character in.  You must
# make exactly 11 lines for the formatting to be correct.  It's also
# customary to leave one space after the ':'.

     |-----handy-ruler------------------------------------------------------|
nome: nome
nome:
nome: 
nome: 
nome:
nome: 
nome:
nome:
nome:
nome:
Con sed poi aumenta il "time"

forse sarebbe meglio togliere N righe e facciamo prima, non so

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:
conraid ha scritto:Questo è lo script definitivo, alla fine prende un po' di tempo, ma non blocca la macchina nemmeno per un istante

Codice: Seleziona tutto


        cat ./slack-desc | grep -v "^#" | grep -v handy-ruler | grep -v "conraid" | \
		cut -f 2- -d : | cut -b2- | sed -r 's%^(Home.*: (http|ftp|https):)%\n\1%g' | \
	
A occhio, questo pezzo
"cat ./slack-desc | grep -v "^#" | grep -v handy-ruler" è uguale a quello postato da spina:

Codice: Seleziona tutto

cat slack-desc | sed -n '/^#/d;/:/p'
Praticamente '/^#/d' toglie la parte commentata
e '/:/p'
printa solo le stringhe contenti i ":" (l'opzione -n dice a sed di non stampare niente, e p obbliga a stampare le stringe che corrispondono al pattern)

P.S.
se ci dai un esempio di slack-desc tuo possiamo ottimizzare quelle 300 pipe :D
rock
lo vedi dagli output dei comandi, comunque è

Codice: Seleziona tutto

# HOW TO EDIT THIS FILE:
# The "handy ruler" below makes it easier to edit a package description.  Line
# up the first '|' above the ':' following the base package name, and the '|'
# on the right side marks the last column you can put a character in.  You must
# make exactly 11 lines for the formatting to be correct.  It's also
# customary to leave one space after the ':'.

     |-----handy-ruler------------------------------------------------------|
abook: abook
abook:
abook: Abook is a text-based addressbook program designed to use with mutt
abook: mail client. Abook runs on Linux, FreeBSD and some other UNIXes.
abook:
abook: Home: http://abook.sourceforge.net/
abook:
abook:
abook:
abook:
abook: Packaged by Corrado Franco <http://conraid.net>
c'è sempre Home: da dove prendo il link

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 »

Codice: Seleziona tutto

's%^(Home.*: (http|ftp|https):)%\n\1%g'
Ma ste percentuali sono un errore o che?Sono degli "/" in realtà

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:

Codice: Seleziona tutto

's%^(Home.*: (http|ftp|https):)%\n\1%g'
Ma ste percentuali sono un errore o che?Sono degli "/" in realtà

rock
sono degli /
siccome c'è http:// ho usato un altro simbolo per dividere le parole, in sed puoi usare qualsiasi carattere

comunque seguendo il tuo consiglio la prima parte

Codice: Seleziona tutto

cat ./slack-desc | grep -v "^#" | grep -v handy-ruler | grep -v "conraid" | \
l'ho trasformata in

Codice: Seleziona tutto

cat slack-desc | sed -n '/^#/d;/conraid/d;/:/p' | \

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 »

Però se la prima parte può essere utile a tutti, soprattutto a noi che dovremmo fare questi file anche per slacky.eu se decidiamo di usare anche i txz, la parte html serve solo a me, non perdeteci tempo se dovete fare altro, anche se vi ringrazio per ogni minuto passato a migliorare lo script :-)

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:...
Non ho capito.
A parte che a me non da errore \w+, ma se metto # mi toglie appunto ogni parte dove compare #, ^# mi toglie solamente le righe commentate, a me sembra di aver usato ^#
Nel tuo script, questo:

Codice: Seleziona tutto

DESCRIPTION=$(tar xOf $pkg install/slack-desc | sed -n '/#/d;/:/p')
deve diventare:

Codice: Seleziona tutto

DESCRIPTION=$(tar xOf $pkg install/slack-desc | sed -n '/^#/d;/:/p')
(nota la '^#').

L'errore con '\w+' lo da solo nei pacchetti come ad esempio gcc-g++... guarda:

Codice: Seleziona tutto

xz -cd gcc-g++-4.3.3-x86_64-4.txz |tar -xOf - install/slack-desc | grep -E '\w+\:'|grep -v '^#'

nessun output, inoltre l'ultimo grep esce con 1 che fa terminare prematuramente lo script. Invece con il nostro:

Codice: Seleziona tutto

xz -cd gcc-g++-4.3.3-x86_64-4.txz |tar -xOf - install/slack-desc | sed -n '/^#/d;/:/p'
gcc-g++: gcc-g++ (C++ for GCC)
gcc-g++:
gcc-g++: C++ support for the GNU Compiler Collection.
gcc-g++:
gcc-g++: This package contains those parts of the compiler collection needed to
gcc-g++: compile C++ code.  The base gcc package is also required.
gcc-g++:
gcc-g++:
gcc-g++:
gcc-g++:
gcc-g++:
Ora hai capito? nella descrizione c'è un g++ e il '+' non è compreso in '\w' quindi '\w+\:' non fa il match con 'gcc-g++:'

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

Messaggio da targzeta »

conraid ha scritto:...
Con sed poi aumenta il "time"

forse sarebbe meglio togliere N righe e facciamo prima, non so
Ma potrebbero non essere solo N righe e ci potrebbero essere righe vuote alla fine. Forse si potrebbero prendere solo le 11 righe finali, visto che
# ... You must make
# exactly 11 lines for the formatting to be correct.
Ma anche qui potrebbero esserci righe vuote alla fine del file, penso che sed sia più opportuno.

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 »

Ok Spina, capito entrambe le cose
il # mi deve essere sfuggito, visto che in tutti gli script avevo ^#

Ora ho capito
mi hai proposto uno script e c'era

Codice: Seleziona tutto

tar xOf $pkg install/slack-desc | sed -n '/#/d;/:/p' >> $ROOTDIR/PACKAGES.TXT
al posto dei grep
Io mi sono fidato senza controllare :-k

Rispondi