script per creare un "mirror" locale di un reposit
Moderatore: Staff
Regole del forum
1) Citare sempre la versione di Slackware usata, la versione del Kernel e magari anche la versione della libreria coinvolta. Questi dati aiutano le persone che possono rispondere.
2) Per evitare confusione prego inserire in questo forum solo topic che riguardano appunto Gnu/Linux in genere, se l'argomento è specifico alla Slackware usate uno dei forum Slackware o Slackware64.
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.
1) Citare sempre la versione di Slackware usata, la versione del Kernel e magari anche la versione della libreria coinvolta. Questi dati aiutano le persone che possono rispondere.
2) Per evitare confusione prego inserire in questo forum solo topic che riguardano appunto Gnu/Linux in genere, se l'argomento è specifico alla Slackware usate uno dei forum Slackware o Slackware64.
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.
- venerdi_12
- Packager

- Messaggi: 258
- Iscritto il: sab 9 lug 2005, 0:00
- Nome Cognome: Luciano Fattore
- Kernel: 3.0
- Desktop: kde-4.7.0
- Distribuzione: archlinux
- Località: Lusciano (Ce)
script per creare un "mirror" locale di un reposit
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?
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?
- venerdi_12
- Packager

- Messaggi: 258
- Iscritto il: sab 9 lug 2005, 0:00
- Nome Cognome: Luciano Fattore
- Kernel: 3.0
- Desktop: kde-4.7.0
- Distribuzione: archlinux
- Località: Lusciano (Ce)
- touchstyle
- Linux 4.x

- Messaggi: 1085
- Iscritto il: gio 13 mag 2004, 0:00
- Slackware: 12.1
- Kernel: 2.6.27
- Desktop: KDE
- Località: Portogruaro [VE]
- Contatta:
Se funziona ti faccio Presidente della Repubblica, te lo prometto!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
- venerdi_12
- Packager

- Messaggi: 258
- Iscritto il: sab 9 lug 2005, 0:00
- Nome Cognome: Luciano Fattore
- Kernel: 3.0
- Desktop: kde-4.7.0
- Distribuzione: archlinux
- Località: Lusciano (Ce)
Troppo tarditouchstyle ha scritto: Se funziona ti faccio Presidente della Repubblica, te lo prometto!
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.