View previous topic :: View next topic |
Author |
Message |
cloc3 Advocate
Joined: 13 Jan 2004 Posts: 4809 Location: http://www.gentoo-users.org/user/cloc3/
|
Posted: Wed Aug 02, 2006 8:16 am Post subject: [tip] generare la cartella /etc/portage/package.* |
|
|
Con la nuova versione di portage, è possibile ridistribuire le voci dei file /etc/portage/package.* all'interno di una cartella omonima.
L'opzione è molto utile per ridurre la complessità di questi file, che diventa spesso ingestibile.
Unico neo: dopo che io ho scritto questo, kernel78 ha proposto uno script di manutenzione della cartella /etc/portage che utlizza una filosofia diversa dalla mia e incompatibile. Se volete utilizzare il suo programmino, preparate la cartella con la versione compatibile qui postata.
Ho scritto un piccolo programmino di bash per eseguire la conversione:
Code: |
s939 ~ # cat /usr/local/bin/split-package-list.sh
#!/bin/bash
HELP="
questo programma: \n
1. genera un backup di /etc/portage/package.""$""1; \n
2. genera la cartella /etc/portage/package.""$""1; \n
3. suddivide in file distinti per cateoria il contenuto di package.""$""1. \n
\n
sintassi: split-package-list opzione \n
Opzioni: -mask -unmask -keywords -use --help
"
# controlli iniziali
opzioni=" -mask -unmask -keywords -use "
if [ "$1" == "--help" ]; then echo -e "$HELP";exit;fi
if [ "$opzioni" == "${opzioni/$1}" ]; then
echo parametro non valido;
exit;
fi
chiave=${1:1}
if [ -d /etc/portage/package.$chiave ]; then
echo "La cartella /etc/portage/package."$chiave" esiste già"
exit 1
fi
if [ ! -e /etc/portage/package.$chiave ]; then
echo "il percorso /etc/portage/package."$chiave" non esiste"
exit 1
fi
#backup
mv /etc/portage/package.$chiave /etc/portage/package.$chiave.old
mkdir /etc/portage/package.$chiave
#split: decommentare la linea seguente e commentare la successiva se si desidera sopprimere i commenti.
#for string in `sed '/^#/d' /etc/portage/package.$chiave.old | sed 's|/.*||' | sed 's/[>=#]//g'` ; do
for string in `sed 's|/.*||' /etc/portage/package.$chiave.old |sed 's/[>=#]//g'` ; do
if [ ! -e /etc/portage/package.$chiave/$string ]; then
echo $string
grep $string /etc/portage/package.$chiave.old > /etc/portage/package.$chiave/$string
fi
done
|
edit1: aggiunto link alla gwn di portage-2.1
edit2: suggerita una istruzione per eliminare i commenti
edit3: inserito riferimento al lavoro di kernel78 _________________ vu vu vu
gentù
mi piaci tu
Last edited by cloc3 on Thu Aug 17, 2006 8:17 pm; edited 8 times in total |
|
Back to top |
|
|
Scen Retired Dev
Joined: 29 Jul 2003 Posts: 2470 Location: Padova, Italy
|
Posted: Wed Aug 02, 2006 10:20 am Post subject: Re: [tip] generare la cartella /etc/portage/package.* |
|
|
Bene! Quando ho un pò di tempo lo provo
Precisazione:
cloc3 wrote: | Unico neo: per il momento alcuni programmi esterni, come eix, non riconoscono la nuova funzionalità.
emerge, in ogni caso, si comporta correttamente. |
Problema risolto nella versione 0.5.6 (attualmente mascherato ~ su tutte le architetture supportate) _________________ I was born in a deep forest/I wish I could live here all my life/I am made from stones and roots/My home, these woods and roads
All my life I loved this sound/Of the woods all around/Eagles flies where the winds blows free
Journey is my destiny |
|
Back to top |
|
|
topper_harley Guru
Joined: 05 Apr 2006 Posts: 363 Location: Treviso / Udine (Italy)
|
Posted: Wed Aug 02, 2006 12:53 pm Post subject: |
|
|
Dove troviamo informazioni sulla nuova struttura (e relativo funzionamento) dei package.* ? _________________ http://topperh.ath.cx
Jabber: topper_harley@jabber.org
ICQ: 224179391
MSN: Topper_Harley80@gmail.com
Last FM |
|
Back to top |
|
|
cloc3 Advocate
Joined: 13 Jan 2004 Posts: 4809 Location: http://www.gentoo-users.org/user/cloc3/
|
Posted: Wed Aug 02, 2006 1:10 pm Post subject: |
|
|
topper_harley wrote: | Dove troviamo informazioni sulla nuova struttura (e relativo funzionamento) dei package.* ? |
Prima di tutto `man portage`.
La nuova funzionalità che utilizzo però, non è ancora documentata in man.
Qualcosina si può trovare qui.
Di più, credo che tu debba rivolgerti a qualche sviluppatore. _________________ vu vu vu
gentù
mi piaci tu |
|
Back to top |
|
|
Lestaat Guru
Joined: 13 Jan 2005 Posts: 412 Location: Perugia
|
Posted: Wed Aug 02, 2006 1:52 pm Post subject: |
|
|
cloc3 wrote: | topper_harley wrote: | Dove troviamo informazioni sulla nuova struttura (e relativo funzionamento) dei package.* ? |
Prima di tutto `man portage`.
La nuova funzionalità che utilizzo però, non è ancora documentata in man.
Qualcosina si può trovare qui.
Di più, credo che tu debba rivolgerti a qualche sviluppatore. |
c'è un errore di sintassi
c'è l'opzione umask invece di unmask.
Non sarebbe un problema se poi non tentasse di aprire il file /etc/portage/package.umask
_________________ Vorrei salvare il mondo...
...ma non so con che estensione!!! |
|
Back to top |
|
|
cloc3 Advocate
Joined: 13 Jan 2004 Posts: 4809 Location: http://www.gentoo-users.org/user/cloc3/
|
Posted: Wed Aug 02, 2006 2:04 pm Post subject: |
|
|
Lestaat wrote: |
Non sarebbe un problema se |
non lo fosse ... . _________________ vu vu vu
gentù
mi piaci tu |
|
Back to top |
|
|
Lestaat Guru
Joined: 13 Jan 2005 Posts: 412 Location: Perugia
|
Posted: Wed Aug 02, 2006 2:08 pm Post subject: |
|
|
cloc3 wrote: | Lestaat wrote: |
Non sarebbe un problema se |
non lo fosse ... . |
Vabbe dai, è solo una svista.
Lo script funzia benissimo però.
Devo controllare per benino ma sembra tutto corretto.
Anche se mi sfugge per il momento la separazione delle cartelle Code: | /etc/portage/package.<option>/<categoria> | e la crtella Code: | /etc/portage/package.<option>/~<categoria> |
_________________ Vorrei salvare il mondo...
...ma non so con che estensione!!! |
|
Back to top |
|
|
cloc3 Advocate
Joined: 13 Jan 2004 Posts: 4809 Location: http://www.gentoo-users.org/user/cloc3/
|
Posted: Wed Aug 02, 2006 7:01 pm Post subject: |
|
|
Lestaat wrote: |
Anche se mi sfugge per il momento la separazione delle cartelle Code: | /etc/portage/package.<option>/<categoria> | e la crtella Code: | /etc/portage/package.<option>/~<categoria> |
|
non ho capito cosa intendi. prova a spiegarti meglio.
effettivamente, se è qui che vuoi parare, sarebbe possibile separare i pacchetti che utilizzano la keyword senza tilde da quelli che utilizzano la tilde.
così un utente ppc potrebbe utilizzare un insieme di pacchetti con keyword x86 e un altro insieme con keyword ~ppc, avendo in tal caso interesse a splittare ulteriormente le liste relative.
ok. quell'utente si pacci pure il mio script . _________________ vu vu vu
gentù
mi piaci tu |
|
Back to top |
|
|
Lestaat Guru
Joined: 13 Jan 2005 Posts: 412 Location: Perugia
|
Posted: Thu Aug 03, 2006 3:23 pm Post subject: |
|
|
cloc3 wrote: | Lestaat wrote: |
Anche se mi sfugge per il momento la separazione delle cartelle Code: | /etc/portage/package.<option>/<categoria> | e la crtella Code: | /etc/portage/package.<option>/~<categoria> |
|
non ho capito cosa intendi. prova a spiegarti meglio.
effettivamente, se è qui che vuoi parare, sarebbe possibile separare i pacchetti che utilizzano la keyword senza tilde da quelli che utilizzano la tilde.
così un utente ppc potrebbe utilizzare un insieme di pacchetti con keyword x86 e un altro insieme con keyword ~ppc, avendo in tal caso interesse a splittare ulteriormente le liste relative.
ok. quell'utente si pacci pure il mio script . |
No il senso è che lo script mi ha creato ad esempio sia la cartella Code: | /etc/portage/package.keywords/dev-libs | che la cartella Code: | /etc/portage/package.keywords/~dev-libs |
e non comprendo con che criterio.[/code] _________________ Vorrei salvare il mondo...
...ma non so con che estensione!!! |
|
Back to top |
|
|
cloc3 Advocate
Joined: 13 Jan 2004 Posts: 4809 Location: http://www.gentoo-users.org/user/cloc3/
|
Posted: Thu Aug 03, 2006 6:31 pm Post subject: |
|
|
Lestaat wrote: |
No il senso è che lo script mi ha creato ad esempio sia la cartella Code: | /etc/portage/package.keywords/dev-libs | che la cartella Code: | /etc/portage/package.keywords/~dev-libs |
e non comprendo con che criterio. |
probabilmente ti è accaduto qualcosa del genere:
Code: |
s939 ~ # cat /etc/portage/package.keywords
#=~x11-base/xorg-x11-6.8.99.8 ~x86
s939 ~ # split-package-list.sh -keywords
~x11-base
s939 ~ # cat /etc/portage/package.keywords/~x11-base
#=~x11-base/xorg-x11-6.8.99.8 ~x86
|
Il programma, volutamente, preserva le linee di commento.
Inoltre non effettua alcun controllo sulla regolarità sintattica del file iniziale, che si presume corretto.
il sed:
Code: |
sed 's|/.*||' /etc/portage/package.$chiave.old |sed 's/[>=#]//g'
|
produce la variabile $string togliendo gli eventuali simboli >=# , ma non il simbolo ~ , che viene incluso nel nome di categoria.
probabilmente è meglio lasciare lo script così, perché, in fondo il disturbo è "colpa" dell'utente.
la funzione dello script è troppo marginale per prevedere tutti i commenti "sbagliati" che un utente potrebbe architettare.
Questa potrebbe essere una patch provvisoria, in attesa di pensare qualcosa di meno pesante:
Code: |
`sed 's|/.*||' /etc/portage/package.$chiave.old |sed 's/[>=#]//g'|sed 's/-/A/'|sed 's/[^[:alnum:]]*//g'|sed 's/A/-/'`
|
edit: probabilmente la cosa migliore è suggerire un'opzione per togliere i commenti. ho modificato in tal senso il testo originale.
grazie per l'osservazione. _________________ vu vu vu
gentù
mi piaci tu |
|
Back to top |
|
|
Kernel78 Moderator
Joined: 24 Jun 2005 Posts: 3654
|
Posted: Thu Aug 17, 2006 9:17 am Post subject: |
|
|
eix 0.5.6 è stabile su x86 e lo script è veramente carino.
Grazie mille _________________ Le tre grandi virtù di un programmatore: pigrizia, impazienza e arroganza. (Larry Wall).
Prima di postare un file togli i commenti con Code: | grep -vE '(^[[:space:]]*($|(#|!|;|//)))' |
|
|
Back to top |
|
|
Deus Ex Guru
Joined: 16 Nov 2005 Posts: 489 Location: Patavium
|
Posted: Thu Aug 17, 2006 6:17 pm Post subject: |
|
|
Davvero complimenti per l'ottimo script! _________________ Deus Ex
--
L’inflazione che caccia nelle mani dell’individuo, in un gesto solo, miliardi di marchi, lasciandolo più miserabile di prima, dimostra punto per punto che il denaro è un’allucinazione collettiva. |
|
Back to top |
|
|
|