1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
|
+++
title = "wp_patcher – un metodo per aggiornare WordPress"
author = "Danilo M."
type = "tech"
date = "2009-07-22T13:37:40+00:00"
excerpt = "Ecco un metodo molto semplice per aggiornare la vostra installazione di WordPress, wp_patcher!!"
categories = [ "Code", "DIY"]
tags = [ "bash", "svn", "update", "WordPress"]
+++
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…
<!--more-->
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][1], 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:
```bash
#! /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
[1]: http://www.slacky.eu "La comunità italiana di utenti slackware"
|