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.
Todo empieza con la obtención de los datos originales:
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
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:
bibima/biblio.{mst,xrf}bibima/serial.{mst,xrf} ⇐ acerca del origen de esta base, ver arriba.id.gz)EMA.001 (ver abajo), y envía al diccionario el identificador del registro bibliográfico
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
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:
dos2unix (en Ubuntu, instalar tofrodos)EMA.001 debe ser un link simbólico al más reciente de los archivos EMA.001-<fecha>
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.
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
~/dev/opacmarc/local-testdata/bin/upload-db.sh bibima
El script upload-db.sh hace esto:
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.
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:
msc2000.id crea la base isis app/util/msc2000/msc2000msc.fst
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:
Este script encuentra la base msc mediante el archivo cipar. terminar la explicación.
Propuesta: el diccionario para agrep (archivo de texto) puede generarse por única vez desde Propuesta semi-implementada; testearla!!
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.
El 23-jun-2009 veo que no aparecen las imágenes de los libros.