Indice del forum www.zeroshell.net
Distribuzione Linux ZeroShell
 
 FAQFAQ   CercaCerca  GruppiGruppi   RegistratiRegistrati 
 ProfiloProfilo  Log inLog in   Messaggi privatiMessaggi privati 

compilazione in chroot e crezione plugins

 
Nuovo argomento   Rispondi    Indice del forum -> ZeroShell
Precedente :: Successivo  
Autore Messaggio
maurizio



Registrato: 03/07/09 20:18
Messaggi: 1

MessaggioInviato: Ven Lug 03, 2009 8:36 pm    Oggetto: compilazione in chroot e crezione plugins Rispondi citando

Ciao fulvio,
innanzitutto complimenti per Zeroshell, la trovo geniale.
Nella mia piccola rete domestica sono passato a Zeroshell da ormai + di un anno, dopo svariati anni di Devil-linux, perchè non aveva l7 (e sopratutto l'interfaccia web!) e per aggiungere un'applicazione o aggiornare il sistema bisognava ricreare il CD ogni volta.
Ora ho messo zeroshell anche su una ADSL da 4M con una media di 30 PC collegati e un' aula con 10 macchine Ubuntu.
Quello che volevo implementare era squid, in modo da evitare la congestione della rete nel momento in cui escono nuovi aggiornamenti evitando di scaricarli per ogni macchina
Cosi ho incominciato a sbirciare sul forum per trovare qualche informazione.
Non ho trovato una semplice guida per farlo, e quindi pensavo di scriverla.
Ma non è semplice, e a un certo punto mi serve l'aiuto tuo e degli utilizzatori per trovare uno standard sulla pacchettizzazione.
Ho deciso di compilare inizialmente un'applicazione più semplice: “LCDproc” http://lcdproc.omnipotent.net/ (ho collegato un lcd 40x4 sulla parallela di zeroshell)

Per compilare applicazioni serve rendere il filesystem di zeroshell read/write, prendendo spunto dal forum ho messo il filsystem dentro una directory, ho montato proc e dev in bind, e poi ho fatto il chroot.
A questo punto sistemando il DNS in /etc/resolv.conf si installano i pacchetti a disposizione per compilare. Si scarica l'applicazione, si compila e si installa con –prefix in un'altra directory.
Ora si esce dal chroot, si smontano proc e dev, e si prendono i file generati che andranno a creare il pacchetto.
E qui viene il difficile, correggetemi se sbaglio, ho impiegato un bel po per capire il funzionamento degli update come asterisk e gli altri. Il meccanismo è molto carino, praticamente crea dei link simbolici nel filsistem principale (che è in RAM) a i file dell'update dentro /Database/opt/.......
Quando ho visto ciò mi è venuto in mente GoboLinux (che non ho mai provato http://www.gobolinux.org/index.php?page=at_a_glance ) ma che usa un sistema simile con il vantaggio di avere i file di ogni pacchetto in una directory diversa, così da poter eliminare il pacchetto semplicemente cancellandola.
A questo punto scavando nella rete ho trovato questo piccolo script in perl:
http://www.gnu.org/software/stow/ e ho deciso di utilizzarlo per fare una prova.
I file nel mio pacchetto tar li ho posizionati in /Database/opt/x.x/stow/M000-lcdproc
e ho modificato lo script “updater” in modo che venga applicato stow in ogni directory dentro a /Database/opt/x.x/stow/.
Perché tutto ciò? Perché nel momento in cui lo voglio rimuovere basta cancellare la directory M000-lcdproc senza che mi rimangano file sparsi nella flash. Di seguito riporto il codice modificato di updater e allego il pacchetto installabile come gli updater (non è perfetto, bisogna riavviare il servizio ogni volta che si riavvia la macchina, ma si dovrebbe risolvere facilmente) :
Codice:

#!/bin/bash
. /etc/kerbynet.conf
export TREE="/Database/opt"
export RELEASE=`$SCRIPTS/release`
export PATCHLEVEL=`$SCRIPTS/patchlevel`
export PATH=$TREE/$RELEASE/$PATCHLEVEL/packages/bin/:/Database/opt/$RELEASE/$PATCHLEVEL/packages/sbin/:$PATH
export LD_LIBRARY_PATH=$TREE/$RELEASE/$PATCHLEVEL/packages/lib/:$LD_LIBRARY_PATH
VERSIONTREE=$TREE/$RELEASE/$PATCHLEVEL
GENERICTREE=$TREE/x.x
echo "Starting updater process for the release $RELEASE.$PATCHLEVEL ..."
echo "--> Checking for installed updates:"
UPDS="`ls -d $VERSIONTREE/db/* 2>/dev/null`"
for U in $UPDS ; do
  DESCRIPTION=`cat $U/Description 2>/dev/null`
  echo "    [`basename $U`] $DESCRIPTION"
done

echo "--> Relinking files ..."
if [ -L /sbin ] ; then
  rm -f /sbin
  mkdir /sbin
  ( cd /cdrom/sbin ; for J in `ls` ; do ln -fs /cdrom/sbin/$J /sbin ; done )
fi

echo "--> Stowing packages ..."
STOWLIST="`ls $GENERICTREE/stow/ 2>/dev/null`"
for ST in $STOWLIST ; do
   $TREE/stow --dir=$GENERICTREE/stow/ --target=/ $ST
done

echo "--> Replacing files ..."
TARLIST="`ls $VERSIONTREE/tars/* $GENERICTREE/tars/* 2>/dev/null`"
for T in $TARLIST ; do
  tar -C / -x -z -f $T
done
echo "--> Patching files ..."
PATCHLIST="`ls $VERSIONTREE/patches/* $GENERICTREE/patches/* 2>/dev/null`"
for P in $PATCHLIST ; do
  patch -N -p0 <  $P
done
echo "--> Running scripts ..."
SCRIPTLIST="`ls $VERSIONTREE/scripts/* $GENERICTREE/scripts/* 2>/dev/null`"
for S in $SCRIPTLIST ; do
  $S
done

echo -n "Syncing filesystem... " ; sync ; echo "Done"


http://www.mediafire.com/?sharekey=5206b5dbb9b9a11f24a64199ac7f73e5e04e75f6e8ebb871

Che ne pensate? E soprattutto che ne pensa il grande fulvio? Non sarebbe bello trovare tante applicazioni pacchettizzate collaborativamente facili da installare e da rimuovere senza lasciar traccia? Magari decidendo anche uno standard per la nomenclatura dei pacchetti e creando un template web con un editor di testo per i file di configurazione?

Ciao Smile
maurizio
Top
Profilo Invia messaggio privato
Mostra prima i messaggi di:   
Nuovo argomento   Rispondi    Indice del forum -> ZeroShell Tutti i fusi orari sono GMT + 1 ora
Pagina 1 di 1

 
Vai a:  
Non puoi inserire nuovi argomenti
Non puoi rispondere a nessun argomento
Non puoi modificare i tuoi messaggi
Non puoi cancellare i tuoi messaggi
Non puoi votare nei sondaggi


Powered by phpBB © 2001, 2005 phpBB Group
phpbb.it