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")
Herramientas personales