danixland's iMac

about this site

Benvenuto su danixland.net...

Se ti dovesse tornare utile quello che stai leggendo, o anche solo se ti è piaciuto e vorresti leggere qualcos'altro, puoi iscriverti al feed RSS cliccando qui. In questo modo rimarrai sempre aggiornato sulle ultime novità pubblicate su questo sito.

Se stai usando Internet Explorer ti consiglio di passare a firefox altrimenti non riuscirai a visualizzare correttamente queste e moltissime altre pagine web.

wp_patcher – un metodo per aggiornare WordPress

mer 22
lug '09

Ciao a tutti,

purtroppo si sa, l’estate è molto dannosa ai contenuti del mio blog, in questa stagione diventa difficile rimanere a casa a scrivere al pc, la tastiera del portatile si trasforma in una piastra su cui si potrebbe tranquillamente arrostire la carne per un picnic e starci vicino e come accendere il caminetto con 40 gradi di temperatura ambientale, praticamente un supplizio…

wordpress-logo

Tuttavia gli sviluppatori di WordPress continuano alacremente a sfornare novità, ed è risaputo che bisogna aggiornare sempre la propria installazione di WP per non incorrere in spiacevoli inconvenienti come la perdita dei dati o l’hacking del proprio sito web. Per venire incontro ai blogger dalle ultime versioni di WP è possibile aggiornare automaticamente la propria installazione utilizzando una voce nel pannello di controllo. Questa possibilità, almeno per me, non ha funzionato nelle ultime 2 revisioni della versione 2.8, quindi ho deciso di provare un’altra strada :)

chiacchierando su slacky.eu, mi è stato suggerito di usare svn per recuperare le varie versioni di WP e poi di prendere solo le differenze in modo da andare a sostituire solo i files che effettivamente sono stati modificati. A questo punto mi son detto, perchè non scrivere uno script bash che mi chieda solo la mia versione attuale e quella verso cui voglio aggiornare, e poi mi crei un archivio contenente solo i files che mi servono??

Detto fatto, mi sono messo a giocare un po’ con Vim e ho tirato fuori wp_patcher.sh, uno script bash che scarica le 2 revisioni richieste di wordpress, controlla le differenze e crea un archivio tar.bz2 pronto per essere installato ;)

Questo è lo script:

#! /bin/bash
# WP-patcher - script che si occupa di recuperare le differenze
# tra 2 versioni differenti di WordPress, scaricando le revisioni
# tramite svn.

# Autore: Danilo 'danix' Macrì - http://danixland.net
# Licensed under the statements of the GPL v3 - http://www.gnu.org/licenses/gpl-3.0.html

# exit status
E_NOARGS=171

# variabili
workdir="wp_patch"
old_vrs=$1
new_vrs=$2
sane_old_vrs=`echo $1 |sed s/[.]//g`
sane_new_vrs=`echo $2 |sed s/[.]//g`
patchdir="${sane_old_vrs}_to_${sane_new_vrs}_patch"

#funzione di aiuto (viene mostrata in caso di errore nell'avvio del programma)
showhelp () {
  echo "USO: `basename $0` vecchia_versione nuova_versione"
  echo "dove 'vecchia_versione' è la tua attuale versione di WordPress"
  echo "e 'nuova_versione' è la versione verso cui vuoi upgradare"
  exit $E_NOARGS
}

# controllo che siano presenti gli argomenti in modo da avere
# le versioni di WP da scaricare
if [ -z $1 ];then
  showhelp
elif [ -z $2 ];then
  showhelp
fi

# inizio l'esecuzione dei comandi
mkdir $workdir
cd $workdir
echo "sto recuperando le 2 versioni svn"
svn co http://core.svn.wordpress.org/tags/$old_vrs
echo "ho recuperato la versione $old_vrs"
svn co http://core.svn.wordpress.org/tags/$new_vrs
echo "ho recuperato la versione $new_vrs, adesso saranno esportate."
svn export $old_vrs wp_$sane_old_vrs
svn export $new_vrs wp_$sane_new_vrs
rm -rf $old_vrs $new_vrs
echo "ho esportato correttamente le 2 versioni di wordpress"
echo "adesso procedo alla creazione della patch"
diff -qr wp_$sane_old_vrs wp_$sane_new_vrs |cut -d" " -f4 > patch_file.txt
mkdir $patchdir
mods=`cat patch_file.txt`
for i in $mods;do
  cp --parents $i $patchdir
done
echo "compressione in corso..."
cd $patchdir
mv wp_$sane_new_vrs wp_$new_vrs
tar -jcvf ../wp_${patchdir}.tar.bz2 wp_$new_vrs
cd ../
mv wp_${patchdir}.tar.bz2 ../
echo "patch creata"
echo "ripulisco la directory di lavoro"
cd ../
rm -rf $workdir
echo "l'archivio contenente i files da sostituire"
echo "è il file 'wp_${patchdir}.tar.bz2"
# fine :)
exit 0

E’ molto semplice e non dovrebbe essere difficile modificarlo secondo le vostre necessità…

Lo script va salvato con un nome a vostro piacimento (io l’ho chiamato wp_patcher.sh) e poi va lanciato in questo modo:

wp_patcher.sh vecchia_versione nuova_versione

In una directory qualsiasi nella vostra home, ovviamente è consigliabile che lo lanciate in una  directory vuota in modo da evitare conflitti con i files e le dir che il programma crea durante il suo funzionamento…

Nell’esempio che vi ho riportato ‘vecchia_versione’ sarà la vostra attuale versione di WordPress, e ‘nuova_versione’ sarà la versione verso cui vorrete aggiornare.

Perchè lo script funzioni è necessario che nel sistema sia installato svn, tar, e tutti i comandi di base come mv, cp, rm ecc… ma dubito che stiate utilizzando una qualsiasi distribuzione Linux e non abbiate questi programmi installati ;) .

Una volta creato l’archivio con i files da aggiornare vi basterà decomprimerlo e caricare i files sul vostro spazio web sovrascrivendo quelli già presenti. Nel caso in cui fosse necessario un aggiornamento del database di WordPress vi basterà lanciare dal browser la pagina http://urldelblog/wp-admin/upgrade.php.

Come sempre vale il consiglio, prima di aggiornare WordPress, di effettuare un backup dei files e del database, in modo da poter ripristinare una situazione funzionante in caso di problemi.

Questo script come potete vedere è rilasciato sotto la GPL v3, quindi è liberamente utilizzabile e modificabile entro i termini di questa licenza appunto.

Se vi dovesse tornare utile, o anche semplicemente se voleste dirmi che lo avete provato o che non ha funzionato o farmi i complimenti o mandarmi a cagare :) non fatevi problemi e lasciatemi un commento…

A presto

 

e ora?? Semplice, condividi quest'articolo con i tuoi amici...
l'autore di questo post:
Sono Danilo, ho 25 anni e mi interesso di web design da qualche anno. I temi usati su questo sito sono una mia creazione (nel bene e nel male). La mia occupazione principale è la fotografia e potete vedere alcune mie foto nella sezione gallery. Mi raccomando, commentate numerosi i miei articoli...
 

Puoi essere il primo a commentare!!

Lascia una Risposta

Collegati oppure:




XHTML: Puoi usare queste tag:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>