Pagina 1 di 1

script per creare un "mirror" locale di un reposit

Inviato: mar 9 mag 2006, 22:01
da venerdi_12
Ciao,
ho fatto un semplice script che crea e mantiene aggiornata, in locale, una copia di un repository di pacchetti remoto.
Per ora si chiama lru (local repository update).

Se interessa a qualcuno lo posto, anche perché non gli farebbe male qualche rtocco (però funziona).

Interessa?

Inviato: mar 9 mag 2006, 22:03
da venerdi_12
Dimenticavo...
...il suo scopo principale è quello di creare un repository masterizzabile su cd o dvd ed usabile per aggiornare con swaret i pc non collegati ad internet o collegati con una connessione lenta.
Happy slacking

Inviato: mer 10 mag 2006, 0:09
da Loris
Direi che è utile... posta posta :)

Inviato: mer 10 mag 2006, 8:24
da touchstyle
venerdi_12 ha scritto:Dimenticavo...
...il suo scopo principale è quello di creare un repository masterizzabile su cd o dvd ed usabile per aggiornare con swaret i pc non collegati ad internet o collegati con una connessione lenta.
Happy slacking
Se funziona ti faccio Presidente della Repubblica, te lo prometto! 8)

Inviato: mer 10 mag 2006, 17:29
da venerdi_12
touchstyle ha scritto: Se funziona ti faccio Presidente della Repubblica, te lo prometto! 8)
Troppo tardi :wink:

Questo è lo script:

----cut----
#!/bin/sh
#lru è uno script che, tramite swaret, rsync e gli swaret tools, crea e mantiene aggiornato un repository
#di pacchetti slackware,usabile in locale,di repositories remoti.
#Lo script crea una directory con lo stesso nome di quella del repository aggiungendo il suffisso _loc
#(ad esempio, per Slacky.it, crea, in /var/swaret/repos/, una directory Slacky.it_loc con tutti i pacchetti
#del repository. Dopo ogni aggiornamento crea, in /var/swaret/repos_backup, una directory contenente
#i pacchetti sostituiti che ha come nome $NomeRepository_$Data (per Slacky.it aggiornato il 10/5/06
#sarà creata una directory Slacky.it_060510)
#
#Alcuni passi sono necessari per ottenere il repository locale.
#
#Prima di lanciare il comando (ad esempio lru Slacky.it) è necessario lanciare "swaret --update" in modo
#da aggiornare FILELIST.TXT per il repository che si vuole aggiornare (se avete più REPOS_ROOT attivi
#consiglio di lasciare decommentato solo quello che si vuole aggiornare). Il passo successivo è quello
#di lanciare #swaret --get -a#. Questo comando avvierà un processo lungo solo la prima volta che viene lanciato
#in quanto le volte successive scarichera solo i nuovi pacchetti.
#A questo punto deve essere lanciato il comando "lru Slacky.it" per ottenere in /var/swaret/repos una
#directory, Slacky.it_loc, che è possibile masterizzare ed usare su pc non in rete

SWARET_DIR=/mnt/downloads/slackware/swaret #definisce la vostra directory. Generalmente è /var/swaret

#Sostituire le voci nel costrutto case, secondo i propri bisogni. I nomi sono quelli dei REPOS_ROOT in swaret.conf
case $1 in
Slacky.it)
repo=$1
;;
frg)
repo=$1
;;
InfinityPerl)
repo=$1
;;
LinuxPackagesDOTNET)
repo=$1
;;
tuxjm)
repo=$1
;;
*)
echo
echo "Indicare il repository locale da aggiornare."
echo "Repository disponibili su questo sistema:"
echo "Slacky.it frg InfinityPerl LinuxPackagesDOTNET tuxjm" #sostituire queste voci con quelle dei
#REPOS_ROOT usate precedentemente
echo
exit
;;
esac

cd $SWARET_DIR

if [ ! -d mom ]; then
mkdir mom
fi

if [ -e mom/lista_pacchetti ]; then #Se gia esiste lista_pacchetti
mv mom/lista_pacchetti mom/lista_pacchetti.old #lo rinomina in lista_pacchetti.old
fi

cp -v repos/$repo/FILELIST.TXT mom/lista_pacchetti
cd repos/$repo
ls *.tgz>../../mom/lista_pacchetti1 #crea un file con all'interno i nomi dei pacchetti presenti in locale
cd $SWARET_DIR
sed -i "s|^[0-9]* \./MANIFEST.bz2||g" mom/lista_pacchetti #elimina la riga del Manifest.bz
sed -i "s|^[0-9]* \.||g" mom/lista_pacchetti # elimina tutti i numeri
sed -i "s|/.*/||g" mom/lista_pacchetti #elimina le sottodirectory lasciando soo in nome del file

diff -e mom/lista_pacchetti mom/lista_pacchetti1>mom/vecchi_pacchetti
sed -i "s|^[0-9]*[a-z]$||g" mom/vecchi_pacchetti
sed -i "s|^\.||g" mom/vecchi_pacchetti
sed -i "s|^[0-9]*,[0-9]*[a-z]||g" mom/vecchi_pacchetti
mv mom/vecchi_pacchetti mom/vecchi_pacchetti1
sed -e '/^$/d' mom/vecchi_pacchetti1 >mom/vecchi_pacchetti
rm -fv mom/vecchi_pacchetti1

mkdir -p repos_backup/"$repo"_`date +%y%m%d`

for pacchetto in `cat mom/vecchi_pacchetti`; do
mv -v repos/"$repo/$pacchetto" repos_backup/"$repo"_`date +%y%m%d`
done
rm -rfv mom

echo "aggiorno i pacchetti del repository locale..."
rsync -azrbv --delete --exclude=.* --exclude=CHECKSUMS.md5 --exclude=*.TXT --exclude=MANIFEST.bz2 \
$SWARET_DIR/repos/$repo/ $SWARET_DIR/repos/"$repo"_loc
rm -f $SWARET_DIR/repos/"$repo"_loc/*.tgz~

echo "lancio repos per creare un repository valido per swaret...."
repos $SWARET_DIR/repos/"$repo"_loc
----cut----


bisogna invocare lru $nomeRepository (ad esempio lru Slacky.it -- modificare la lista dei repository nello script second le proprie esigenze) dopo aver dato swaret --update e swaret --get -a.
All'inizio del file ci sono dei commenti che spiegano meglio.
Per dubbi e consigli non esitate a esprimervi.

Inviato: mer 10 mag 2006, 19:10
da gohanz
Complimenti anche io cercavo uno Script come quello che hai scritto!:D