MediaWiki Upgrade Howto
De Grupo de Usuarios de GNU Linux de Quilmes
Contenido |
La Facil
Se bajan los .patch.gz correspondientes por ejemplo:
mkdir /tmp/test
cd /tmp/test
wget http://download.wikimedia.org/mediawiki/1.13/mediawiki-1.13.5.patch.gz
wget http://download.wikimedia.org/mediawiki/1.13/mediawiki-i18n-1.13.5.patch.gz
se descomprimen:
gunzip mediawiki-1.13.5.patch.gz gunzip mediawiki-i18n-1.13.5.patch.gz
se monta por fuse
mkdir /tmp/usla curlftpfs -o user=usuario:password quilmeslug.org /tmp/usla
se cambia al directorio correspondiente
cd /tmp/usla/web/wiki
se aplican los patches
patch -p1 < /tmp/mediawiki-1.13.5.patch patch -p1 < /tmp/mediawiki-i18n-1.13.5.patch
y a otra cosa mariposa
La Dificil
Se bajan los .patch.gz correspondientes por ejemplo:
mkdir test
cd test
wget http://download.wikimedia.org/mediawiki/1.13/mediawiki-1.13.3.patch.gz
wget http://download.wikimedia.org/mediawiki/1.13/mediawiki-i18n-1.13.3.patch.gz
se descomprimen:
gunzip mediawiki-1.13.3.patch.gz gunzip mediawiki-i18n-1.13.3.patch.gz
Las intrucciones
luego se genera un archivo
cat *patch | grep -- ^--- | sed 's#[^/]*/\([^\t]*\)\t.*$#ftp://usuario:password@quilmeslug.org:/web/wiki/\1#' > lista.txt
y se bajan
cat lista.txt | xargs wget -x -nH
luego se pachea lo bajado:
cd web/wiki patch -p1 < ../../mediawiki-1.13.3.patch patch -p1 < ../../mediawiki-i18n-1.13.3.patch
si no hay errores de patch se sube con lftp
lftp quilmeslug.org lftp quilmeslug.org:~> user usuario password lftp usuario@quilmeslug.org:~> cd web/wiki lftp usuario@quilmeslug.org:/web/wiki> mirror -R
y listo el pollo, vermouth con papas fritas y.. good show!!
La explicacion
Ahora bien:
La parte que parece mas esoterica de todo es el sed:
cat *patch | grep -- ^--- | sedc's#[^/]*/\([^\t]*\)\t.*$#ftp://usuario:password@quilmeslug.org:/web/wiki/\1#' > lista.txt
es mas facil explicar lo que quiero hacer, en el archivo patch estan todos los archivos que vas a patchear:
cat *patch | grep -- ^--- | head -n 10 --- mediawiki-1.13.3/config/index.php 2008-10-02 03:13:08.000000000 -0500 --- mediawiki-1.13.3/includes/db/DatabasePostgres.php 2008-09-06 02:14:20.000000000 -0500 --- mediawiki-1.13.3/includes/DefaultSettings.php 2008-12-14 01:50:03.000000000 -0600 --- mediawiki-1.13.3/includes/GlobalFunctions.php 2008-10-02 03:13:08.000000000 -0500 --- mediawiki-1.13.3/languages/Names.php 2008-11-10 09:57:27.000000000 -0600 --- mediawiki-1.13.3/maintenance/convertLinks.inc 2008-05-20 12:13:28.000000000 -0500 --- mediawiki-1.13.3/maintenance/initStats.inc 2008-05-20 12:13:28.000000000 -0500 --- mediawiki-1.13.3/maintenance/populateCategory.inc 2008-05-20 12:13:28.000000000 -0500 --- mediawiki-1.13.3/maintenance/populateParentId.inc 2008-05-02 11:28:46.000000000 -0500 --- mediawiki-1.13.3/maintenance/updaters.inc 2008-09-06 02:14:20.000000000 -0500
ahi tengo la lista de archivos a parchar... pero lo que quiero es que
--- mediawiki-1.13.3/config/index.php 2008-10-02 03:13:08.000000000 -0500
sea
ftp://usuario:password@quilmeslug.org:/web/wiki/config/index.php
normalmente sed es
sed 's/regularexp/reemplazo/'
pero que pasa cuando tengo muchas "/" en la regex? puedo escapar cada "/", una onda "ftp:\/\/" o usar otro caracter de separador, elegí "#", por lo que queda:
sed 's#regex#reemplazo#'
Ahora a por la regex:
[^/]*/\([^\t]*\)\t.*$
[^/]*
0 o mas NO "/" (con eso "llego" hasta la primer "/" de la linea "--- mediawiki-1.13.3/" <--- ahi)
/\(
La "/" (todo lo anterior es "no-/") y inicio de marca para la backreference \1
[^\t]*
0 o mas NO TAB (porque el caracter que separa ".php" de "2008" es un tab y no un espacio)
\)
fin de marca para backreference \1 (con esto marco "config/index.php")
\t
TAB (porque lo anterior es NO-TAB)
-*
cualquier cosa que venga despues
Todo eso cambiarlo por
ftp://usuario:password@quilmeslug.org:/web/wiki/\1
es decir
ftp://usuario:password@quilmeslug.org:/web/wiki/config/index.php
que es lo que necesito bajar.
En (lo mas parecido a) criollo
"no /" "/" ("no tab")"TAB""no me importa que sigue despues", cambialo por ftp://usuario:password@quilmeslug.org:/web/wiki/ y al final ponele lo que hay entre parentesis -- ("no tab")
