# Instalación y Actualización

La instalación será aún más fácil si destina un computador como servidor de SIVeL. Si debe emplear en el mismo computador otros sistemas operativos se recomienda que destine un disco duro independiente para SIVeL y configure un gestor de arranque que permita ingresar a uno o a otro en el momento de arrancar el equipo. En último caso también es posible instalar en un mismo disco OpenBSD y otros sistemas como Linux o Windows, para esto asegúrese de dejar una partición primaria de al menos 2GB para OpenBSD (si se trata de un computador nuevo haga la solicitud al vendedor, si se trata de un computador donde ya está instalado Windows/Linux destine una de las particiones existentes o emplee una herramienta para reparticionar como `gparted` desde un CD con un instalador de Linux).

Para instalar puede descargar de Internet la imagen ISO de la distribución Aprendiendo De Jesus (adJ) &VER-ADJ; (ver ) y quemarla en un CD como imagen ISO (no como simple archivo o de lo contrario no podrá arrancar su computador con esta). AdJ es una distribución de OpenBSD con todos los paquetes requeridos por SIVeL, datos públicos del Banco de Datos de DH, DIH y VPS del CINEP y un script de instalación que instala y configura SIVeL y sus prerrequisitos.

Por precaución saque copia de la información importante de su disco. Inicie su computador con el CD. Instale OpenBSD respondiendo las preguntas del instalador estándar de OpenBSD --y teniendo cuidado de instalar justo en el disco o partición que ha destinado para OpenBSD. Reinicie y configure arranque múltiple si es el caso. Una vez entre en su sistema recién instalado ejecute:

    su -
    /inst-adJ.sh

Responda las preguntas que le hace este archivo de ordenes, recordando dejar PostgreSQL en un contenedor cifrado, a continuación ejecute:

    /inst-sivel.sh

Este último script formulará otras preguntas breves incluyendo primer usuario y clave para SIVeL y creará un primer sitio para usted. Visitelo desde el servidor con un navegador en la dirección https://127.0.0.1/ y una vez ingrese actualice desde el menú Otros Actualizar.

El resto de instrucciones de este capítulo, le servirán si tiene inconvenientes con el procedimiento anterior o si desea aprender con una instalación menos automatizada o en otras plataformas.

## Prerrequisitos

- Sistema tipo Unix, recomendamos OpenBSD &VER-OPENBSD; y en particular la distribución Aprendiendo de Jesús (ver ).

- Para hacer pruebas durante la configuración puede emplear una consola y el navegador tipo texto `lynx`, sin embargo se sugiere configurar X-Window (ver ) y un navegador gráfico como `mozilla-firefox`.

- Se sugiere crear dos contenedores cifrados en los que residirán la base de datos y copias de respaldo respectivamente. Cada una debe ser al menos de 100MB aunque se sugiere 700MB --para que quepa cada una en un CD por si desea mantener copias de respaldo (ver )-- o de 4GB si saca copias en DVD.

- Servidor web con SSL, recomendamos Apache con `mod_ssl` (ver ). Sugerimos que lo ejecute con `chroot` en `/var/www` y que cree el directorio `/var/www/tmp` para que PostgreSQL ubique su socket allí, con permisos de ejecución, lectura y escritura para todos.

- PostgreSQL (ver ), sugerimos que la configure para usar sockets en `/var/www/tmp`. Así mismo se sugiere que active autovaciado en `/var/postgresql/data/postgresql.conf` con las líneas:

      track_counts = on
      autovacuum = on

- PHP 5 con módulo para PostgreSQL y Pear (ver instalación de PHP 5 en ).

  Se sugiere editar `/var/www/conf/php.ini` para asegurar que tiene:

      max_execution_time = 900
      max_input_time = 900

  así cada analista tendrá más tiempo de edición en algunos casos.

  Para instalar `pear` en OpenBSD, configure la variable `PKG_PATH` (ver ) y ejecute:

      sudo pkg_add pear

- Puede instalar algunos paquetes estables de pear que también están disponibles como paquetes de OpenBSD por ejemplo con:

      sudo pkg_add pear-DB

  Otros paquetes estables para pear los puede instalar con una conexión a Internet por ejemplo con:

      sudo pear install Auth
      sudo pear install HTML_Common
      sudo pear install HTML_Menu
      sudo pear install HTML_QuickForm
      sudo pear install HTML_QuickForm_Controller
      sudo pear install HTML_Javascript
      sudo pear install HTML_CSS
      sudo pear install Date
      sudo pear install DB_DataObject
      sudo pear install Mail
      sudo pear install Mail_Mime
      sudo pear install Net_Socket
      sudo pear install Net_SMTP
      sudo pear install Benchmark
      sudo pear install DB_DataObject_FormBuilder

  Y los paquetes en desarrollo en el momento de este escrito los puede descargar e instalar con:

      sudo pear download Validate
      sudo pear install ./Validate-*

## Procedimiento de instalación

1. Aunque no es indispensable se recomienda que cree una cuenta para sivel (digamos con login `sivel`).

2. Instale en un directorio utilizable por Apache con SSL. Por ejemplo si las fuentes están en `~/Desktop/sivel-&PRY-VERSION;.tar.gz` y va a instalar en el directorio `/var/www/htdocs/sivel` que debería ser visible para Apache, emplee:

       cd /var/www/htdocs
       sudo mkdir sivel
       cd ~/
       mkdir -p tmp
       cd tmp
       tar xvfz ~/Desktop/sivel-&PRY-VERSION;.tar.gz
       sudo cp -rf sivel-&PRY-VERSION;/* /var/www/htdocs/sivel/
       cd /var/www/htdocs/sivel/
       sudo chown -R sivel:sivel .
       sudo chmod -R a+r .

   Después puede editar `/var/www/conf/httpd.conf` y cambiar algunas líneas de la configuracion de SSL (remplace `miServidor` y `micorreo@midominio.org` por valores apropiados para su caso):

       DocumentRoot /var/www/htdocs/sivel
       ServerName miServidor
       ServerAdmin micorreo@midominio.org
       ErrorLog logs/error_log
       TransferLog logs/access_log

3. Cree un usuario para PostgreSQL para manejar la base de datos (las siguientes instrucciones son para PostgreSQL 8.4):

       sudo mkdir /var/www/tmp
       sudo chmod -R a+rxw /var/www/tmp
       sudo su - _postgresql
       createuser -h /var/www/tmp/ -S -d sivel
       exit

4. Ejecute el archivo de ordenes de configuración:

       cd /var/www/htdocs/sivel/
       ./conf.sh

5. Cree un nuevo sitio desde el directorio `sitios` con el archivo de ordenes `nuevo.sh`. Por ejemplo para crear el sitio `sivel`:

       cd /var/www/htdocs/sivel/sitios
       ./nuevo.sh sivel

   Este archivo de ordenes copiará los archivo `pordefecto/conf.php.plantilla` y `pordefecto/vardb.sh.plantilla` como `sivel/conf.php` y `sivel/vardb.sh` cuadrando rutas y usuario de PostgreSQL (si requiere cambiar usuario o clave de PostgreSQL edite `sivel/conf.php`). También inicializará la base de datos y los archivos relacionados, lo cual usted puede hacer manualmente con:

       cd /var/www/htdocs/sivel/sitios/sivel
       ../../bin/creapg.sh

   y el mismo archivo de ordenes le permitirá agregar el primer usuario al cual debe darle el rol de administrador. Si posteriormente requiere agregar otros usuarios para este sitio desde el interprete de comandos ejecute:

       cd /var/www/htdocs/sivel/sitios/sivel
       ../../bin/agus.sh

   Este archivo de ordenes también pondrá un fondo por defecto que puede modificar cambiando en el directorio de su sitio el archivo `fondo.jpg`.

6. Desde un navegador abra el directorio en el que instaló. Si lo requiere puede revisar errores en la bitácora de Apache (por defecto `/var/www/log/error_log`).

### Otros pasos de instalación opcionales

1. Si desea generar la documentación:

       cd /var/www/htdocs/sivel/doc
       ./conf.sh
       cp personaliza.ent.plantilla personaliza.ent

   de requerirlo modifique `personaliza.ent` y finalmente:

       make

2. Si desea configurar un esquema de respaldos puede emplear los archivos de comandos `../../bin/pgdump.sh` y `../../bin/respaldo.sh`, que facilitan hacer respaldo diario y mantener la copia del último mes en el computador local y opcionalmente de la última semana en un computador remoto. Requieren `scp` y algunas variables de configuración de `conf.php` (ver y ).

3. Para activar corrección ortográfica, instale ispell e ispell-spanish. Si Apache corre chroot en un directorio (digamos `/var/www`), cree en ese directorio la estructura de directorios que requieren ispell e ispell-spanish y copie lo básico de estos en la nueva estructura ---las librerías compartidas que `ispell` requiera puede verlas con `ldd`. Eventualmente podrá efectuar estas operaciones con el script `bin/prep-chroot.sh` distribuido junto con las fuentes de SIVeL.

   Una vez instale y pruebe `ispell` en el directorio chroot, desde el directorio de fuentes de SIVeL verifique que la ruta esté especificada en `confv.empty` (variable `CHROOT`) y ejecute:

       $ rm confv.sh
       $ ./conf.sh

   Finalmente puede editar `conf.php` en el directorio de su sitio para modificar el mensaje que se presenta cuando se encuentras errores ortográficos (`MENS_ORTOGRAFIA`).

   Una vez en operación podrá agregar palabras que sean correctas en el diccionario configurado (por defecto está en las fuentes de SIVeL con nombre `ispell.dic`); una palabra por línea, sin dejar espacios a izquierda ni derecha. Si va a agregar palabras con tildes, cambie la vocal tildada por la vocal sin tilde pero con un apostrofe como prefijo, por ejemplo la palabra "nación" se agrega como "naci'on" (sin comillas).

4. Para publicar la Consulta Web en Internet y activar retroalimentación cifrada por correo vea .

## Actualización

Es importante:

- Actualizar SIVeL y el sistema operativo aproximadamente cada 6 meses, para cerrar posibles fallas de seguridad o funcionalidad descubiertas en ese lapso.

- Mantenerse informado de novedades, por ejemplo mediante la lista `sivel-soporte@lists.sourceforge.net`

- Capacitarse para realizar actualizaciones periódicas al sistema operativo y a SIVeL.

El proceso de actualización consta de dos partes: primero actualizar las fuentes y después ejecutar la herramienta de actualización `actualiza.php`.

### Actualización de fuentes

Para actualizar fuentes de un SIVeL genérico o con personalizaciones simples (módulos, tablas básicas, interfaz y reinterpretaciones, ver ) la actualización puede hacerla un administrador de red siguiendo las instrucciones de esta sección.

Para actualizar fuentes con personalizaciones profundas (más que uso de módulos existentes, refinamiento de tablas básicas y de variables de configuración) es necesario que un desarrollador (con conocimientos de PHP, SQL y seguridad informática) mezcle actualizaciones del SIVeL genérico a las fuentes personalizadas.

#### Actualización de versiones menores (e.g 1.1b1 a 1.1b2)

Descargue fuentes de la versión 1.1 más recientes con uno de los siguientes métodos:

1. Descargue las fuentes más recientes desde , ubiquelas en el servidor y descomprímalas. Si las descarga con Firefox desde el servidor posiblemente quedaran en el directorio `Desktop` de su cuenta personal por lo que puede descomprimir y remplazar fuentes anteriores. Usando OpenBSD adJ sería con:

       cd ~/Desktop
       tar xvfz sivel-&PRY-VERSION;.tar.gz
       sudo chown $USER:$USER /var/www/htdocs/sivel/
       cp -rf sivel-&PRY-VERSION;/* /var/www/htdocs/sivel/

2. Si desea emplear las fuentes de desarrollo descárguelas y cópielas con

       cd ~
       mkdir tmp2
       cd tmp2
       cvs -d:pserver:anonymous@sivel.cvs.sourceforge.net:/cvsroot/sivel login
       cvs -z3 -d:pserver:anonymous@sivel.cvs.sourceforge.net:/cvsroot/sivel co -rSIVEL1_1 -P sivel
       sudo chown $USER:$USER /var/www/htdocs/sivel
       cp -rf sivel/* /var/www/htdocs/sivel

   Cuando le solicite clave presione ENTER.

3. Si ya tiene unas fuentes que tengan control de versiones (con el directorio CVS), actualicelas asi:

       cd /var/www/htdocs/sivel
       cvs -d:pserver:anonymous@sivel.cvs.sourceforge.net:/cvsroot/sivel login
       cvs -z3 -d:pserver:anonymous@sivel.cvs.sourceforge.net:/cvsroot/sivel update -rSIVEL1_1 -Pd

Después debe asegurarse de tener configurado Apache para acceder a SIVeL en su nueva ubicación `/var/www/htdocs/sivel/`. Para esto edite el archivo de configuración con:

    sudo xfw /var/www/conf/httpd.conf

Busque una línea con:

    DocumentRoot "/var/www/users/sivel"

y si la encuentra remplázela por:

    DocumentRoot "/var/www/htdocs/sivel"

Complete reiniciando Apache con

    sudo apachectl stop; sleep 1
    sudo sh /etc/rc.local

#### Actualización de la versión 1.0 a la versión 1.1

Esta actualización es bastante compleja, se recomienda dejar su versión 1.0 utilizable con propósitos de auditoria y respaldo.

1. Actualice a la versión más reciente de SIVeL 1.0 (1.0.6 en el momento de este escrito), siguiendo las instrucciones de

2. Valide sus datos desde el menú Otros->Validar. Examine el reporte y corrija las inconsistencias en su base, puede ejecutar varias veces el procedimiento de validación hasta asegurarse de tener datos consistentes. Esto es muy importante porque para la conversión a 1.1 sólo esperamos que se conviertan datos correctos en datos correctos.

   Los datos incorrectos o inconsistentes pueden perderse al convertirlos a la versión 1.1.

3. Respalde y mueva su sistema 1.0 a otro URL. En general debe bastar para el usuario que administra SIVeL ejecutar desde una terminal:

       cd /var/www/htdocs/sivel
       bin/mueve.sh

   Que dejará las fuentes en `/var/www/htdocs/sivel10` usando la base de datos `sivel10` con copia de sus datos y permite ingresar agregando `sivel10/` al URL base. Por ejemplo desde el mismo servidor.

   Si requiere reubicar en otro sitio consulte

   Este script al terminar la reubicación, le sugerirá revisar el nuevo URL y borrar las fuentes de la versión 1.0 de su ubicación anterior, presionando la tecla 's' y 'RETORNO'. Es recomendable que realice esta acción.

4. Instale la versión de desarrollo de SIVeL 1.1, siguiendo los mismos pasos descritos en: .

5. Configúrela para que use la base legada de SIVeL 1.0. Si movió su sistema 1.0 como se describió en esta sección y dejo las ubicaciones por defecto, basta que ejecute:

       	cd /var/www/htdocs/sivel/
       	./conf.sh -i

   En caso de que no tenga respaldo de su sistema 1.0 en las ubicaciones por defecto, configure manualmente.

       cd /var/www/htdocs/sivel/
       ./nuevo.sh sivel

   Si requiere conocer la clave del usuario SIVeL ubiquese en el directorio con fuentes de la versión 1.0 y ejecute:

       sudo grep "dbclave *=" aut/conf.php

   Y ponga esa clave en el archivo de la nueva versión, que puede editar con:

       sudo xfw /var/www/htdocs/sivel/sitios/sivel/conf.php

   buscando `dbclave` y remplazando `xyz` por la clave que anotó. Salve y salga.

6. Haga utilizable su sitio con todas las formas de conexión que tenga a su base por ejemplo si típicamente desde la red local emplea: https://192.168.44.10 para ingresar a SIVeL ejecute:

       cd /var/www/htdocs/sivel/sitios/
       ln -s sivel 192.168.44.10

   Haga lo mismo con otras ubicaciones, el nombre del enlace que debe crear lo verá al intentar abrir SIVeL.

7. Convierta sus datos. Para esto basta que ejecute la herramienta de actualización que debería estar disponible desde el mismo servidor en . Es posible que tenga que iniciar la sesión 2 o 3 veces mientras se actualiza en cada intento la forma de cifrado de las claves En caso de que tenga incoveniente reiterativos con claves asegurese que en la base de datos se esté almacenando el condensado SHA256 de la clave y no el antiguo MD5, esto lo puede hacer para el usuario `juan` ejecutando desde el directorio del sitio:

                   ../../bin/clave_sha1.sh juan

   .

8. Audite los datos convertidos. Por ejemplo puede verificar que el número de casos coincidan, así como los conteos por víctimas individuales.

   Para hacer una auditoria más intensiva se sugiere que genere un reporte general de todos los casos del sistema 1.0 y un reporte general en el 1.1 y los compare teniendo en cuenta que ha cambiado un poco el formato del reporte general (Si en su base ha registrado acciones bélicas active el módulo respectivo antes de realizar las comparaciones).

   Abra dos pestañas en su navegador en una realice un reporte general con todos los datos de la base anterior y en la otra el mismo reporte en la base nueva. Después:

       cd /var/www/htdocs/sivel/sitios/sivel
       mkdir compara-migra
       cd compara-migra/

   Pegue los datos de la base anterior en un archivo que puede iniciar con:

       xfw anterior.txt

   Después pegue los del nuevo SIVeL en otro archivo digamos ábralo con:

       xfw nuevo.txt

   A continuación compare diferencias entre ambos archivos con:

       diff anterior.txt nuevo.txt | less

   Verá sus resultados con el paginador less.

### Herramienta de actualización

La ejecuta abriendo SIVeL con un navegador pero agregando a la dirección `actualiza.php` (e.g. desde el mismo servidor sería ).

Este mismo procedimiento debe realizarlo si activa módulos.

## Pruebas de regresión

Una vez instale o actualice SIVeL es recomendable que ejecute las pruebas de regresión para verificar que en su plataforma opera como se espera.

Hay 2 grupos de pruebas de regresión, unos se ejecutan en un entorno que emula la interacción del navegador con el servidor web y el otro se ejecuta desde el navegador Firefox empleando Selenium .

### Pruebas que emulan navegador y servidor

Las pruebas de regresión que emulan navegador y servidor pueden emplearse después de iniciar un primer sitio (digamos `sitios/sivel`). Debe ejecutarlas como el usuario del sistema operativo que administra SIVeL pues eliminarán y crearán una base de datos con nombre `sivel-prueba`.

No use la base `sivel-prueba` porque será borrada cada vez que se ejecuten las pruebas de regresión.

Para ejecutarlas abra una terminal y pase al directorio con fuentes de SIVeL (eventualmente llega con `cd /var/www/htdocs/sivel/`). Después ejecute:

    sitios/pruebas/pruebas.sh

Se presentará un resumen del resultado de las pruebas, si alguna falla, por favor reporte el inconveniente en adjuntando el archivo `sitios/pruebas/pruebas.bitacora` y todos los archivos de los directorios `sitios/pruebas/salida` y `sitios/pruebas/esperado`. Estos archivos no incluyen información de sus bases de datos, pero si de su instalación de PostgreSQL, PHP y SIVeL.

### Pruebas con Selenium

Las pruebas con Selenium son más demoradas de preparar y de ejecutar. Requieren Mozilla Firefox y el complemento Selenium IDE (disponible en ). Una vez instale el complemento abralo desde Herramientas Selenium IDE. Desde el diálogo que se abre puede crear o reproducir casos de prueba. En el momento de este escrito hay un caso de prueba para las tablas básicas en `sites/pruebas/basicas.selenium`. Este caso de prueba debe ejecutarse desde un SIVeL en operación y a diferencia del otro conjunto de pruebas modifica datos, aunque procura hacerlo de forma controlada. Este caso de prueba espera:

- Que se inicie desde el menú principal de SIVeL

- Que no se hayan borrado registros de las tablas básicas ni que se hayan deshabilitado diversos registros en diversas tablas básicas.

- Que no existan registros en las tablas básicas con nombre `x`

Para iniciarlo desde Selenium IDE elija File Open Test Case, abra el archivo `sites/pruebas/basicas.selenium` y presione el boton de ejecutar. Tendrá que esperar un buen tiempo mientras este procedimiento prueba cada una de las tablas básicas (excepto Clase) modificando la fecha de deshabilitación de un registro existente, volviendolo a dejar en blanco y creando un nuevo registro con nombre `x` que después borra. Si se detienen antes de concluir por favor envíe una captura de pantalla tanto del navegador como de Selenium IDE a .

Lo invitamos a hacer otros casos de prueba y enviarlos por el mismo conducto de las fallas.