====== Procedimiento para actualizar el OPAC ======
Durante un tiempo (aprox. 2006-2008), el proceso de actualización se realizó ejecutando tres scripts en mi PC:
./download-db.sh bibima
./update-db.sh bibima
./upload-db.sh bibima
Luego de los cambios realizados a OpacMarc alrededor de octubre de 2008, la situación se despelotó y se interrumpieron las actualizaciones.
Ya es hora de volver a la normalidad.
Pero para eso hay que clarificar la situación: cuáles son los pasos y los scripts involucrados, qué hay que hacer manualmente y debería ser automatizado, etc.
===== Descarga de las bases =====
Todo empieza con la obtención de los datos originales:
* la base bibliográfica propia (base **bibima**)
* la base bibliográfica con nuestros registros de seriadas (base **serial**), extraidos de la base colectiva de publicaciones seriadas (base **carpc**)
* el archivo con las existencias asociadas a nuestras publicaciones seriadas (archivo **EMA.001**)
La base ''serial'' fue generada en el servidor mediante un script ''serial.sh'', que simplemente hace esto:
QUERY="-CREADO_POR=FG or -CREADO_POR=LG or -CREADO_POR=ESA or -CREADO_POR=AES"
mx $BASE_CARPC "$QUERY" "proc='d1106'" create=$BASE_SERIAL now -all
FIXME Es una incomodidad tener que correr este script manualmente cada vez que vamos a hacer una actualización del OPAC. --- Pero no hay que correrlo manualmente, podemos ejecutar comandos en forma remota con **ssh**.
Descargamos las bases del servidor de esta manera:
$ cd ~/dev/opacmarc/local-testdata/bin
$ ./download-db.sh bibima
El script ''download-db.sh'' hace esto:
* descarga ''bibima/biblio.{mst,xrf}''
* descarga ''bibima/serial.{mst,xrf}'' <= acerca del origen de esta base, ver arriba
* hace backup local de ambas bases (formato ''.id.gz'')
* crea una base temporal de holdings, a partir de ''EMA.001'' (ver abajo), y envía al diccionario el identificador del registro bibliográfico
* agrega los holdings en un campo 866 a los registros de serial
* une (append) las bases serial y biblio
* elimina la base temporal
Este es el contenido del directorio local que aloja las bases (''~/dev/opacmarc/local-testdata/bases/bibima/db/original''):
~/dev/opacmarc/local-testdata$ ll -tr bases/bibima/db/original/
-rw-r--r-- 1 fernando fernando 133269 2006-10-18 20:31 bibima-secstitle-20061018.zip
-rw-r--r-- 1 fernando fernando 16896 2006-12-14 15:56 biblio-clean.xrf
-rw-r--r-- 1 fernando fernando 3290624 2006-12-14 15:56 biblio-clean.mst
-rw-r--r-- 1 fernando fernando 42938 2007-06-12 17:19 EMA.001-20070612
-rw-r--r-- 1 fernando fernando 89254 2007-06-12 21:19 secs20070612.zip
-rw-r--r-- 1 fernando fernando 139599 2007-06-12 21:30 bibima-secstitle-20070612.zip
-rw-rw-rw- 1 fernando fernando 328696 2007-08-10 17:56 title-20070810.id
-rw-r--r-- 1 fernando fernando 2560 2007-08-10 17:57 secstitle-20070810.xrf
-rw-r--r-- 1 fernando fernando 315904 2007-08-10 17:57 secstitle-20070810.mst
-rw-r--r-- 1 fernando fernando 328674 2007-08-10 17:57 secstitle.id.20070612
-rw-rw-rw- 1 fernando fernando 42317 2007-08-10 18:02 EMA.001-20070810
-rw-r--r-- 1 fernando fernando 2560 2008-04-17 15:26 secstitle-20080417.xrf
-rw-r--r-- 1 fernando fernando 333312 2008-04-17 15:26 secstitle-20080417.mst
-rw-r--r-- 1 fernando fernando 149004 2008-04-17 16:13 bibima-secstitle-20080417.zip
-rw-r--r-- 1 fernando fernando 149344 2008-05-02 15:38 secs-20080502.zip
-rw-rw-rw- 1 fernando fernando 3072 2008-06-03 15:59 secstitle.xrf
-rw-rw-rw- 1 fernando fernando 349184 2008-06-03 15:59 secstitle.mst
-rwxrwxrwx 1 fernando fernando 45191 2008-09-30 16:13 EMA.001-20080417
-rwxrwxrwx 1 fernando fernando 154680 2008-09-30 16:13 bibima-secstitle-20080603.zip
drwxr-xr-x 2 fernando fernando 4096 2008-09-30 16:13 webcheck
-rw-r--r-- 1 fernando fernando 527551 2008-10-01 15:58 serial.iso
lrwxrwxrwx 1 fernando fernando 16 2008-10-16 18:41 EMA.001 -> EMA.001-20080417
lrwxrwxrwx 1 fernando fernando 29 2008-10-16 18:41 bibima-secstitle.zip -> bibima-secstitle-20080603.zip
-rw-r--r-- 1 fernando fernando 16896 2009-05-07 18:35 serial.xrf
-rw-r--r-- 1 fernando fernando 873984 2009-05-07 18:35 serial.mst
-rw-r--r-- 1 fernando fernando 24064 2009-05-07 18:35 biblio.xrf
-rw-r--r-- 1 fernando fernando 7792128 2009-05-07 18:35 biblio.mst
FIXME Habría que limpiar un poco esa carpeta.
El archivo ''EMA.001'' (holdings) es generado desde SeCS en la PC de Leticia. Dos cuestiones para automatizar, una vez que este archivo llega a mi PC:
* Aplicar ''dos2unix'' (en Ubuntu, instalar ''tofrodos'')
* ''EMA.001'' debe ser un link simbólico al más reciente de los archivos ''EMA.001-''
===== La base en mi OPAC local =====
Para ejecutar la actualización en mi instalación local, necesito "crear" la base ''bibima'' en dicha instalación:
$ cd ~/dev/opacmarc/test-install/app/bin
$ python add_db.py bibima
Creo links simbólicos al archivo maestro que tengo en ''local-testdata'':
$ cd ~/dev/opacmarc/test-install/local-data/bases/bibima/db/original
$ ln -s /home/fernando/dev/opacmarc/local-testdata/bases/bibima/db/original/biblio.mst .
$ ln -s /home/fernando/dev/opacmarc/local-testdata/bases/bibima/db/original/biblio.xrf .
ATENCION: si modificamos el código del OPAC, hay que volver a ejecutar ''test.sh'', y crear la base local bibima.
Conectar esta parte con la documentación en [[:entorno_de_desarrollo_para_opacmarc]].
===== La actualización =====
Ejecutamos la actualización:
$ cd ~/dev/opacmarc/test-install/app/bin
$ python update_db.py bibima
Para acceder a la actualización abrimos esta página:
http://192.168.242.60:8081/cgi-bin/wxis?IsisScript=xis/opac.xis&db=bibima&showForm=simple
Nota: 192.168.242.60 es el IP de mi PC; 8081 el puerto asociado a la instalación de OpacMarc (esos números podrían variar). Si pruebo directamente sobre mi PC, puedo entrar a:
http://127.0.0.1:8081/cgi-bin/wxis?IsisScript=xis/opac.xis&db=bibima&showForm=simple
===== Subida de datos al servidor =====
~/dev/opacmarc/local-testdata/bin/upload-db.sh bibima
El script ''upload-db.sh'' hace esto:
* Copia los archivos generados
* Copia los archivos ''msc2000/msc.{mst,xrf}''
Las **imágenes** (tapas de libros) las veníamos subiendo manualmente, usando ''mc''. Sólo subíamos las más recientes.
===== Pruebas =====
El 18/05/2009 hice la primera actualización usando este esquema de trabajo. (La anterior había sido el 16/09/2008.) Hubo un error al subir la base msc:
/home/fernando/dev/opacmarc/test-install/local-data/bases/bibima/db/public/msc2000/msc.mst: No such file or directory
/home/fernando/dev/opacmarc/test-install/local-data/bases/bibima/db/public/msc2000/msc.xrf: No such file or directory
Repasemos lo que sucede con la base msc (o msc2000).
En el código svn de opacmarc, carpeta ''bin/install/data/'', tenemos el archivo **msc2000.id** (un archivo de texto con los datos "puros").
En el script de instalación, ''install.py'', tenemos la función **setup_msc()**, que realiza lo siguiente:
* a partir de ''msc2000.id'' crea la base isis ''app/util/msc2000/msc2000''
* genera el archivo invertido de esa base, usando ''msc.fst''
* AGREGAR: genera diccionario para agrep
ATENCION: esta función es invocada en forma condicional, dependiendo de cómo fue llamado el script ''install.py'':
python install.py => no crea la base
python install.py msc => crea la base
Creo que no es un buen método; podríamos crear la base en forma incondicional, y usarla sólo cuando se la necesite.
El script de actualización, ''update_db.py'', se mete con la base msc en dos ocasiones:
* función build_agrep_dictionaries(), ejecutada sólo cuando DB_NAME == 'bibima' OJO: ya no necesita generar el dict (lo hizo install.py), basta con copiarlo
* función build_aux_files(): Actualiza los postings para cada código MSC, en base a lo que encuentre en la base biblio; también sólo cuando DB_NAME == "bibima". Esta función modifica "in place" la base msc. OJO: ahora no altera la base msc, crea una copia con los postings.
Este script encuentra la base msc mediante el archivo cipar. FIXME terminar la explicación.
Propuesta: el diccionario para agrep (archivo de texto) puede generarse por única vez desde ''install.py'', luego de crear la base msc y generar su archivo invertido. Luego en ''update_db.py'' build_aux_files() debería **crear** una base nueva que contenga los postings, pero dejando inalterada la base msc "pura"; es decir, en vez de ''mx ... copy'', usaríamos ''mx ... create''. Propuesta semi-implementada; testearla!!
===== Imágenes =====
El 23-jun-2009 veo que no aparecen las imágenes de los libros. FIXME