Herramientas de usuario

Herramientas del sitio


inmabb:procedimiento_para_actualizar_el_opac

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-<fecha>

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

inmabb/procedimiento_para_actualizar_el_opac.txt · Última modificación: por 127.0.0.1