Posts Tagged ‘lms’

Tricks to debug Captivate SCORM 1.2 content

November 26, 2014 Leave a comment

If you have to make Captivate-generated SCORM 1.2 content in your (web) platform and you want *more* information about what’s going on, this guide might help.

One of the trickiest things about Captivate and SCORM is that Captivate doesn’t handle the credit/no-credit ( very well. This parameter, in combination with cmi.core.lesson_mode should let you retake exercises that you have already completed and passed.

In Chamilo, if you want to debug the SCORM interactions on the Chamilo side, use Firefox, login as admin, go to the learning paths list and click the ladybug icon in the action icons next to the learning path you want to debug. This will only affect you, so no worries about doing that in production.

ladybug debug iconThen enter the learning path itselt (simply click its name). Once you’re seeing the content, launch the Firefox debugger with SHIFT+F2 and go to the “Console” tab. Click on any item in the table of contents, and you should see the SCORM and LMS interactions pooring in. Something like the screenshot below.

Chamilo SCORM general debug screen

Chamilo SCORM general debug screen

This is already very nice to understand the interaction going on, and when Chamilo will save the information in its database, but it still lacks the possibility to understand what’s going on, on the Captivate side of things.

Captivate itself has debug features though, but they’re not prepared for just any tool. Luckily, we can tap into them with a moderate level of complexity.

First, you need to know where the Captivate content is on disk in your LMS. In Chamilo, this is typically in the {root-folder}/courses/{course-code}/scorm/{scorm-name}/{scorm-name}. For Captivate content, Chamilo usually generates its own folder, then Captivate, which means you have it duplicated.

You’ll have to get into that folder and, for each SCO (item in the table of content in the screen above), locate the scormdriver.js file.

Around line 1032 of scormdriver.js, you’ll find something like this:

function WriteToDebug(strInfo){if(blnDebug){var dtm=new Date();var strLine;strLine=aryDebug.length+”:”+dtm.toString()+” – “+strInfo;aryDebug[aryDebug.length]=strLine;if(winDebug&&!winDebug.closed){winDebug.document.write(strLine+”<br>\n”);}}

We’ll hack into that and just replace it straight away (keep a backup copy if you’re afraid) by the following line:

function WriteToDebug(strInfo){var dtm=new Date();var strLine;strLine=aryDebug.length+”:”+dtm.toString()+” – “+strInfo;aryDebug[aryDebug.length]=strLine; console.log(strLine); return;}

This will simply:

  • force the debug to be active (we don’t check blnDebug anymore, we assume it’s on!)
  • redirect the debug messages from this weird winDebug.document to the officially-supported-in-all-reasonnable-browsers “console.log”, which prints the log in the browser console, as illustrated above

Now, to get this to work, you need to clean the cache in your browser. My favorite way of doing this in Chamilo is to press CTRL+F5, then go *back* to the learning paths list, enter *another* learning path, then enter the hacked learning path again. Captivate debug information should start showing in your browser’s console:

Captivate logs in browser console

Captivate logs in browser console

Now you can analyze all the information flow.

That’s all, folks!

On the Criticality of Learning Management System

October 29, 2014 Leave a comment

I’m often surprised at the little importance large education institutions put on their Learning Management Systems (LMS). Many times, after years of starting a modest pilot and slowly convincing all the people involved, institutions find themselves in a situation in which students (and sometimes teachers, but rarely the institution itself) drive the development of the LMS by demanding for changes.

Students, of course, see it as a way to get better, more ubiquitous access to their course material, to practice more without the need of the teacher, to get feedback faster, etc. Sometimes students feel more confident facing a computer than they would do in class.
Anyway, expectations increase and the institution has to follow or, sometimes, lead this evolution.

However, where the “mild” integration might have been slow in classical educational institutions, there is one crucial step where institutions *have* to make sure everything goes right: the move to a critical LMS integration as fast as their end-users require it.

A critical LMS is a service (not only the software, but also the team around it) on which you can rely to launch and follow training/teaching activities that are critical to your organization.

Obviously, teaching is critical for an educational institution, but it is not critical in the LMS sense if the LMS acts as an *extension* of the classroom courses.

It becomes critical when:

  • students can access to the course *only* through the LMS
  • the LMS serves to generate the students’ grades
  • the LMS is used to generate reports on the activity of teachers or students
  • it is expected to be online permanently, without interruptions of more than half an hour every week or so

If you compare it to other systems deemed “critical” by the IT department in an education institution, you should get this kind of table:

System Must be up all time? Critical information? Must sustain high load?
ERP Not really Yes No
Website Yes No Not really
Library system Not really Not really Not really
LMS Yes Yes Yes

I’m sure some of these criteria can be discussed in specific situations, but when the LMS is used for the cases above (which is usually the case for any serious implementation), it *does* match all these criteria at the same time.

In each and everyone of these cases, it is necessary to be able to rely on a skilled team of specialists, that will be able to assess, intervene and report on any case that might cause some level of inconvenience to the students.

What this means is that a multi-dsiciplinary team of specialists will have to get involved in your project, and give you the power to do what you want and need. Building the team takes time, building and maintaining a high level of skills takes time, getting involved in a project takes time, and providing you with the best possible solution takes time, dedication and vision.

Many times, as the company behind the development of Chamilo LMS as a free software (we have high goals in terms of social responsability), we face this misunderstanding in the first step of our interaction with new customers.

The LMS is not *valued* by the IT department as it really should, and even less when it is based on free software. But software is just software, and although Chamilo LMS is in the top 3 best open source e-learning paltforms around, you can’t hope for a lot if your team doesn’t know how to manage it. And it’s not just a technical issue: dealing with online courses involve a combination of skills that you will need to have if you don’t have the right team to help you out:

  • planning the tools you will use for interaction (videoconference, chat, forum, etc)
  • knowing the limits of your students’ available technology (screen resolution, plugins, apps, etc)
  • being able to design lightweight courses (bandwidth)
  • knowing your students’ behaviour
  • being able to plan (and take action) for a load increase on a server, ahead of a high-attendance online event
  • being able to pinpoint reporting data to improve education methods
  • and much more…

Understanding all this, if the budget for your institutions’ online education project is a 10th of its ERP’s system, it’s probably not going in the right direction, for its first step.

Only once the institution has understood the criticality of their LMS and how it will affect their institution’s image and efficiency, the project can start in the right environment.

Learning Management Systems are critical, not only for educational institutions. They represent a very unique tool that is both desired and required to improve the efficiency of teaching, learning and managing skills. Don’t let it fail. Make sure everybody understands what a LMS is and how useful it will be, and your organization will thrive into the 21st century!

Chamilo LMS

Chamilo LMS is a web-based learning management system focused on usability. It is developed and published under the GNU/GPLv3 license, which allows anyone to use, analyse, modify and distribute copies and modified copies of the software. In its first 4 years of existence, Chamilo LMS has been granted several software prizes and has grown from a community of 10 developers to a community of 9 million users worldwide.

Chamilo allows you to create courses, manage administrators, teachers, students and other typical roles for organizations or departments focused on training. It is suitable for academical, corporate, associative and personal environments.

The BeezNest group

BeezNest is the company behind most of the developments in Chamilo LMS. It specializes in analysis, development and support of e-learning projects in about 40 countries, with offices and collaborators in Belgium, France, Spain, Germany, the UK, Peru and Mexico. Projects managed by BeezNest deal with portals from 100 to 680,000 students, worldwide. It deals with every aspect of e-learning projects, from analysis, to hosting, platform developments, training, online courses building, to data analysis. All you need but marketing (which it prefers leaving to its customers).

Contact BeezNest at

La seguridad de los LMS

September 28, 2014 1 comment

La seguridad de los sistemas de gestión del aprendizaje (LMS) o de cursos virtuales, especialmente en el ámbito corporativo, es un tema crítico. De la misma manera que los documentos relativos a proyectos internos que representan una ventaja competitiva frente a sus competidores, el contenido de los cursos de capacitación de las empresas no pueden caer “en manos del enemigo”, y esto requiere de una protección adecuada de su plataforma e-learning.

Aspectos de la seguridad informática

Para entender los riesgos, es importante estructurarlos. La seguridad informática se puede dividir en 6 aspectos, que ilustramos y explicamos a continuación, en el contexto de una plataforma corporativa de aprendizaje.

Integridad / Validez

Imagínese que un curso esencial para todos los nuevos empleados esté sutilmente modificado. Por ejemplo que, en un curso de inducción que enseña los teléfonos de contacto de la mesa de ayuda técnica, estos números estén cambiados por números externos a la empresa. Imaginen el resultado al primer problema de credenciales para ingresar al sistema. Los nuevos empleados, en toda confianza, llamarán a los números indicados, posiblemente divulgando sus códigos de acceso a personas ajenas a la empresa.

La información contenida en sus cursos debe ser cuidada de tal manera que solo las personas autorizadas puedan modificar el contenido principal, de tal manera que la información no pueda ser alterada a fines destructivos.

Integridad / Persistencia

Que pasará si el servidor se quema, o si un pirata llega a borrar información de los cursos o de los alumnos?

La información tiene que resistir un posible ataque con objetivos de destrucción. Por eso, es imprescindible contar con una buena estrategia de backup, que permita recuperar información completa o parcial de días anteriores.

Visibilidad / Autorización

Que pasará si una persona inscrita en un curso de marketing se ve inscrita por error en un curso de seguridad informática, en el cual tendrá acceso a información de caracter confidencial, o a un curso de gestión en el cual tendrá acceso a información reservada a la gerencia? Que pasará si la difunde a los empleados de otros rubros de la empresa?

La información de los cursos tiene que ser visible solo para las personas que tengan una razón profesional por acceder a ella. El control de dichos permisos es esencial para evitar la difusión de secretos comerciales u otros problemas relacionados con estrategias confidenciales.

Accesos / Autenticación

Que pasará si una persona ajena a la empresa tiene acceso a la plataforma a través de la cuenta de un empleado, y navega entre los proyectos de investigación, y se hace pasar por un miembro del grupo?

Es imprescindible que uno pueda asegurar que las personas que acceden a la plataforma son quienes pretenden ser.

Disponibilidad / Resistencia

Que pasará si todo el sistema se cae como consecuencia de un ataque de piratas? Y si por alguna razón las protecciones simples se ven deshabilitadas por un momento?

Uno de los aspectos de seguridad poco considerados es la disponibilidad, o la resistencia a ataques del sistema LMS. Si bien es cierto que la indisponibilidad del sistema LMS raramente provoca problemas de seguridad en sí, es importante entender que, durante un ataque de fuerza bruta (cientos de computadoras generando consultas indebidas al sistema LMS), un sistema indisponible es más vulnerable a ataques de otros tipos (robo o destrucción de información). Es por ello que es importante asegurar que su sistema esté preparado, con las adecuadas medidas de prevención a nivel de red, de configuración del servidor y del aplicativo mismo, para que los posibles ataques sean prevenidos o mitigados.


Que pasará si una nueva falla se descubre en el sistema usado, y no existe el equipo especializado dentro de la organización para cubrir la brecha?

Cualquier sistema informático requiere de actualizaciones ocasionales para cubrir nuevas técnicas de hackeo. Si el personal interno de la empresa no tiene las competencias requeridas, será imprescindible contar con un servicio externo confiable para mantener el sistema en su mejor estado en términos de seguridad.


Chamilo LMS cuenta con mecanismos avanzados para mejorar la seguridad de su plataforma.

Información a los usuarios (autenticación)

Para una seguridad de alto nivel, es importante que todos los involucrados estén al tanto de los aspectos de la seguridad en los cuales tienen un rol activo. Las distintas herramientas de comunicación hacia los usuarios (anuncios globales y a nivel de curso, términos y condiciones a nivel global y de curso así como otros mecanismos) permiten una comunicación fluida que aumenta la participación de los usuarios en el asunto de la seguridad y transforma agentes peligrosos en agentes de seguridad que aumentarán el nivel general de confianza de la solución.

Isolación de permisos (validez)

En Chamilo, los usuarios tienen acceso a contenidos dentro de cursos, según su rol en el curso. Tutores de cursos pueden visualizar y modificar la visibilidad de los contenidos, pero no pueden editarlos. Finalmente, los alumnos pueden visualizar pero no editar el material. Una división clara por roles (sin posibilidad de definición granular) reduce los errores de configuración y de privilegios.

Nivel de complejidad de contraseñas (accesos)

En Chamilo LMS 1.9.8, encontrará un mecanismo para dar una evaluación al usuario del nivel de complejidad de su contraseña, de tal manera que piensa 2 veces antes de usar una de las 20 contraseñas más frecuentes en internet (empezando por 1234567).

CAPTCHA (accesos)

En Chamilo LMS 1.9.8, puede activar la opción de CAPTCHA, que evitará que piratas lleguen a usurpar la identidad de otros usuarios por ataques de tipo diccionario.

Actualizaciones de seguridad (mantenimiento)

Chamilo cuenta con un record de correcciones rápidas y eficientes. En varios años de historia del proyecto, no ha pasado más de 72h entre el descubrimiento de un error de seguridad y su corrección.

Mecanismos de autenticación (accesos)

Chamilo cuenta con mecanismos de autenticación seguros como OpenID, Facebook login y mecanismos extensibles (y otros no tan seguros) como LDAP, Shibboleth y CAS. Además, contando con un certificado SSL, se puede vincular de manera segura con Drupal y PrestaShop.

Cifrado de contraseñas (autenticación)

Chamilo LMS ofrece 3 tipos de cifrado de contraseñas, de los cuales SHA1 es el valor por defecto. De esta manera, un pirata robando la base de datos de usuarios no podrá (de una manera fácil) decifrar las contraseñas para usurpar la identidad de los usuarios.

Borrado de datos (persistencia)

Chamilo LMS no borra de inmediato los archivos eliminados. En su vez, los guarda (opción activada por defecto) con un nombre distinto en el disco, hasta que un proceso automatizado los borre unos días más tarde.

Acceso por curso (autorización)

El sistema ofrece funcionalidades de asignación de alumnos por cursos y de definición de clases (grupos de alumnos), de tal manera que los errores a nivel de administración se reduzcan notablemente. La limitación del acceso por periodos gracias a la noción de “sesiones” (ciclos) permite limitar los accesos en el tiempo, evitando que ex-empleados sigan teniendo acceso a contenidos confidenciales.

Alta disponibilidad (disponibilidad)

Aunque el sistema Chamilo mismo no cubra este requerimiento, los proveedores oficiales de Chamilo (como BeezNest) brindan servicios profesionales de configuración en clusters de alta disponibilidad y redimensionables, protegidos por firewalls y mecanismos de protección anti-DOS y DDOS.

Comunicación protegida (autenticación)

BeezNest ofrece, como parte de su servicio, la compra y configuración de certificados SSL para una comunicación segura (cifrada) entre los usuarios y el servidor. Así, no será posible para un posible espía capturar comunicaciones (y por ende nombres de usuarios, contraseñas, y otras informaciones confidenciales).

Además, mecanismos avanzados permiten el envío de mensajes como los credenciales de acceso por SMS o por correo cifrado por GPG o PGP.

Actualizaciones de seguridad (mantenimiento)

BeezNest se encarga de clientes en todo el mundo, y mantiene sus portales actualizados de tal manera que no tengan que lidiar con problemas de seguridad después de que ocurran (lo cual resultaría mucho más costoso). Además, BeezNest se asegura que los parches de seguridad sean publicados en las 72h luego de su registro oficial para así mantener la web siempre segura.


Esperamos este artículo le haya ayudado en entender los aspectos que merecen un cuidado especial en términos de seguridad para su plataforma e-learning.

BeezNest también cubre requerimientos especiales (conexión a nuevos sistemas, auditorías de seguridad de sistemas existentes, reconfiguración de servidores, etc).

En resumen, BeezNest se hace cargo de todas estas preguntas de seguridad para sus clientes, para que puedan tener tranquilidad y preocuparse exclusivamente de los aspectos de gestión del aprendizaje.

Si desea mayor información sobre los servicios de BeezNest, vea nuestra información de contacto en

Si desea probar Chamilo, inicie una prueba de 15 días gratis de su propio portal Chamilo.


Este artículo se inspiró inicialmente de un artículo en inglés sobre la seguridad de LMSes, pero lo extiende mucho y aplica estos conceptos a Chamilo LMS (desarrollado mayormente por BeezNest), la solución de e-learning de software libre más segura en existencia en este momento.

Chamilo User Day en Latinoamérica Mayo 2013

March 28, 2013 Leave a comment

Inspiración para el desarrollo de Chamilo

Extracto de algo que escribí para Learning Review en el 2009. Ahora cambiamos de nombre y somos Chamilo, con la misma idea…

Simplicidad de uso es la fuerza mayor de Chamilo [ndlr: eraDokeos]. Al ser una plataforma de uso simple, permite que el usuario no se pierda dentro de la herramienta. Nos enfocamos a guiarlo directamente dentro de sus cursos, con pocas cosas para distraerlo fuera de ellos. Además, realizamos una herramienta de calidad, que permite, entre otras cosas, que los docentes puedan crear cursos rápidamente con un esfuerzo mínimo y un resultado máximo en términos de aprendizaje del alumno.

Consideramos que desarrollar esta plataforma de código abierto, es nuestro aporte en la construcción de un mundo mejor, al permitir a quienes no cuentan con capacidad financiera para hacer una inversión en un sistema de e-learning privado, acceder a esta plataforma con todos sus elementos, sin otro costo que el esfuerzo humano para instalarla y la voluntad de usarla.

Creemos que la mejora de todos pasa por la educación de cada uno, y que todos tenemos el derecho a una educación con las mejores herramientas. No sólo en cuanto a costos se refiere, sino desde un enfoque de accesibilidad para personas con dificultades. Creemos que cumplir con este objetivo mediante la metodología del software libre, nos permite brindar una plataforma que responde mejor a las necesidades de los docentes y alumnos.

Categories: Chamilo, Dokkeos, open-source, Spanish Tags: ,

Interesting educause video Moodle vs Blackboard

As always, the most interesting features here are the comments by users…

I guess that my own opinion is that Chamilo is more secure and more open, anyway :-)

Instalar Chamilo en una XO 1.0

September 5, 2011 3 comments

Revolucionando el modelo de distribución de contenido pedagógico en zonas rurales de paises en desarrollo…

Este artículo sigue mi previo artículo sobre la XO y un intento para instalar Chamilo como servidor, intento que falló por falta de RAM. El objetivo aquí es de permitir a otros, a partir de este procedimiento, de instalar por completo un servidor de Chamilo (a la excepción de la videoconferencia y del convertidor de PowerPoint en lecciones) para permitir su uso con otras XO en un salón de clase sin conectividad a internet.

La idea es que el aporte en salón de clase permita introducir una noción de e-learning colaborativo y a distancia en un pueblo, y la acumulación de recursos educativos (y su posible re-uso a partir de cursos elaborados por el ministerio de educación, descargables desde una cabina internet e instalables en una versión local de Chamilo). Faltan unos pasos todavía en este procedimiento general, pero en la medida de lo posible esta guía debería eliminar unas barreras comunes en el montaje de la plataforma.

Picture of Chamilo server on the OLPC's XO

Chamilo corriendo en la XO 1.0, como servidor!

El cambio de modelo de distribución de contenido pedagógico que este pequeño paso implica tiene un impacto posiblemente gigantesco para los 2 próximos años.

Paso 0: Conectarse a internet

Para todo lo que sigue, se supone que la XO estará conectada a internet por un buen tiempo. Si no tiene la posibilidad de mantenerla conectada, aguarde este procedimiento hasta tener esta oportunidad, sino podría tener que dejar el procedimiento en el medio, lo que podría dañar su sistema.

Paso 1: actualizar la XO (opcional)

Si tiene una XO que fecha un poco, vale la pena actualizarla. Se puede actualizar la XO a partir del sitio de OLPC, siguiendo el procedimiento explicado aquí: y en particular para la versión de Julio de 2011, el procedimiento exacto aquí: . Se planifica una nueva versión para Noviembre 2011. A este momento, será necesario consultar la página siguiente: para saber cual es la última versión.

En esta explicación, me basaré en un sistema de Julio 2011.

Paso 2: actualizar la base de aplicaciones disponibles para el sistema operativo

Una vez instalada la actualización, será necesario actualizar la base de aplicativos disponibles en total libertad para instalar en su XO. Para esto, usaremos un comando propio al sistema operativo (en base a Linux RedHat), pero primero tenemos que conectarnos como se debe.

En la laptop, presione simultáneamente las teclas CTRL + ALT + F3 (o el tercer botón a partir de arriba a la izquierda en el teclado, el que normalmente da la vista de redes inalámbricas disponibles alrededor). Esto les dará una vista terminal. Se puede regresar a la vista gráfica en cualquier momento presionando CTRL + ALT + F5 (o el quinto botón a partir de la izquierda). Si en cualquier momento se siente perdido, puede apagar la laptop para después reiniciarla, presionando y manteniendo el podón de encendido/apagado por más de 5 segundos.

Una vez en el terminal, lanzar los comandos siguientes:

-bash-3.2# su


Note la diferencia entre las dos líneas… cuando no haya un prefijo “-“, significa que está en modo administrador. Por lo tanto, puede hacer cosas peligrosas para el sistema. Para salir de este modo, simplemente entrar el comando “exit” seguido de la tecla “enter”. Siga bien las instrucciones siguientes para no hacer nada daniño para su XO.

bash-3.2# yum update

Aparecerán progresivamente unas líneas como sigue:

updates-newkey                                                                                          | 3.4 kB     00:00
8b20a393f4caa93598f1148bc171d320b45c1814-primary.sqlite. | 4.4 MB     04:26
fedora                                                                                                             | 2.4 kB     00:00
primary.sqlite.bz2                                                                                      | 6.1 MB     01:40
olpc_development                                                                                      | 1.9 kB     00:00
primary.sqlite.bz2                                                                                      | 565 kB     00:11
olpc-joyride                                                                                                  |  951 B     00:00
primary.xml.gz                                                                                           |  82 kB     00:03
olpc-joyride                                                                                                  325/325
updates                                                                                                          | 2.6 kB     00:00
primary.sqlite.bz2                                                                                      | 9.1 kB     00:00
Excluding Packages from Fedora 9 – i386 – Updates Newkey
Excluding Packages from Fedora 9 – i386
Excluding Packages from OLPC Development repo based off of Fedora 9
Excluding Packages from Fedora 9 – i386 – Updates
Setting up Update Process
Resolving Dependencies
–> Running transaction check
–> Processing Dependency: NetworkManager >= 0.6.5 for package: olpc-update
—> Package NetworkManager-glib.i386 1:0.7.1-1.fc9 set to be updated
–> Processing Dependency: NetworkManager = 1:0.7.1-1.fc9 for package: NetworkManager-glib
–> Finished Dependency Resolution
1:NetworkManager-glib-0.7.1-1.fc9.i386 from updates-newkey has depsolving problems
–> Missing Dependency: NetworkManager = 1:0.7.1-1.fc9 is needed by package 1:NetworkManager-glib-0.7.1-1.fc9.i386 (updates-newkey)
olpc-update-2.18-1.noarch from installed has depsolving problems
–> Missing Dependency: NetworkManager >= 0.6.5 is needed by package olpc-update-2.18-1.noarch (installed)
Error: Missing Dependency: NetworkManager = 1:0.7.1-1.fc9 is needed by package 1:NetworkManager-glib-0.7.1-1.fc9.i386 (updates-newkey)
Error: Missing Dependency: NetworkManager >= 0.6.5 is needed by package olpc-update-2.18-1.noarch (installed)

Dejelo acabar tránquilamente (puede tomar un cierto tiempo).

Paso 3: Instalar el software necesario

Una vez recupere la mano (línea con cursor cuadrado cintillando), entre los comandos siguientes:

bash-3.2# yum install nginx mysql-server mysql php php-mysql php-common php-gd php-mbstring

Esto les dará un resultado largote como el siguiente, al fin del cual se les preguntará si están de acuerdo con descargar algo de 29M (les había dicho: es necesario tener una conexión internet por un rato). indicar que sí, presionando “y”.

Excluding Packages from Fedora 9 – i386 – Updates Newkey
Excluding Packages from Fedora 9 – i386
Excluding Packages from OLPC Development repo based off of Fedora 9
Excluding Packages from Fedora 9 – i386 – Updates
Setting up Install Process
Parsing package install arguments
Resolving Dependencies
–> Running transaction check
—> Package mysql-server.i386 0:5.0.77-1.fc9 set to be updated
–> Processing Dependency: perl-DBD-MySQL for package: mysql-server
–> Processing Dependency: perl(POSIX) for package: mysql-server
–> Processing Dependency: for package: mysql-server
–> Processing Dependency: perl(warnings) for package: mysql-server
–> Processing Dependency: perl(Data::Dumper) for package: mysql-server
–> Processing Dependency: perl(strict) for package: mysql-server
–> Processing Dependency: perl(Sys::Hostname) for package: mysql-server
–> Processing Dependency: perl(File::Path) for package: mysql-server
–> Processing Dependency: for package: mysql-server
–> Processing Dependency: perl-DBI for package: mysql-server
–> Processing Dependency: perl(Getopt::Long) for package: mysql-server
–> Processing Dependency: perl(vars) for package: mysql-server
–> Processing Dependency: perl(File::Copy) for package: mysql-server
–> Processing Dependency: /usr/bin/perl for package: mysql-server
–> Processing Dependency: perl(File::Temp) for package: mysql-server
–> Processing Dependency: for package: mysql-server
–> Processing Dependency: perl(DBI) for package: mysql-server
–> Processing Dependency: perl(File::Basename) for package: mysql-server
–> Processing Dependency: for package: mysql-server
—> Package mysql.i386 0:5.0.77-1.fc9 set to be updated
—> Package nginx.i386 0:0.6.36-1.fc9 set to be updated
–> Processing Dependency: for package: nginx
—> Package php-mysql.i386 0:5.2.9-2.fc9 set to be updated
–> Processing Dependency: php-pdo for package: php-mysql
—> Package php-common.i386 0:5.2.9-2.fc9 set to be updated
–> Running transaction check
—> Package perl.i386 4:5.10.0-68.fc9 set to be updated
–> Processing Dependency: perl(Module::Pluggable) for package: perl
–> Processing Dependency: perl(version) for package: perl
–> Processing Dependency: perl(Pod::Simple) for package: perl
—> Package perl-DBD-MySQL.i386 0:4.005-8.fc9 set to be updated
—> Package perl-libs.i386 4:5.10.0-68.fc9 set to be updated
—> Package php-pdo.i386 0:5.2.9-2.fc9 set to be updated
—> Package perl-DBI.i386 0:1.607-1.fc9 set to be updated
—> Package mysql-libs.i386 0:5.0.77-1.fc9 set to be updated
–> Running transaction check
—> Package perl-Pod-Simple.i386 1:3.07-68.fc9 set to be updated
–> Processing Dependency: perl(Pod::Escapes) >= 1.03 for package: perl-Pod-Simple
—> Package perl-Module-Pluggable.i386 1:3.60-68.fc9 set to be updated
—> Package perl-version.i386 3:0.74-68.fc9 set to be updated
–> Running transaction check
—> Package perl-Pod-Escapes.i386 1:1.04-68.fc9 set to be updated
–> Finished Dependency Resolution

Dependencies Resolved

Package                  Arch    Version            Repository           Size
mysql                    i386    5.0.77-1.fc9       updates-newkey       3.3 M
mysql-server             i386    5.0.77-1.fc9       updates-newkey       9.8 M
nginx                    i386    0.6.36-1.fc9       updates-newkey       328 k
php-common               i386    5.2.9-2.fc9        updates-newkey       238 k
php-mysql                i386    5.2.9-2.fc9        updates-newkey        81 k
Installing for dependencies:
mysql-libs               i386    5.0.77-1.fc9       updates-newkey       1.5 M
perl                     i386    4:5.10.0-68.fc9    updates-newkey        11 M
perl-DBD-MySQL           i386    4.005-8.fc9        fedora               165 k
perl-DBI                 i386    1.607-1.fc9        updates-newkey       776 k
perl-Module-Pluggable    i386    1:3.60-68.fc9      updates-newkey        29 k
perl-Pod-Escapes         i386    1:1.04-68.fc9      updates-newkey        23 k
perl-Pod-Simple          i386    1:3.07-68.fc9      updates-newkey       196 k
perl-libs                i386    4:5.10.0-68.fc9    updates-newkey       904 k
perl-version             i386    3:0.74-68.fc9      updates-newkey        33 k
php-pdo                  i386    5.2.9-2.fc9        updates-newkey        63 k

Transaction Summary
Install     15 Package(s)
Update       0 Package(s)
Remove       0 Package(s)

Total download size: 29 M
Is this ok [y/N]: y

Esto les dará ya otra pantalla de descarga como esta:

Downloading Packages:
(1/15): perl-Pod-Escapes-1.04-68.fc9.i386.rpm            |  23 kB     00:03
(2/15): perl-Module-Pluggable-3.60-68.fc9.i386.rpm       |  29 kB     00:02
(3/15): perl-version-0.74-68.fc9.i386.rpm                |  33 kB     00:02
(4/15): php-pdo-5.2.9-2.fc9.i386.rpm                     |  63 kB     00:02
(5/15): php-mysql-5.2.9-2.fc9.i386.rpm                   |  81 kB     00:03
(6/15): perl-DBD-MySQL-4.005-8.fc9.i386.rpm              | 165 kB     00:09
(7/15): perl-Pod-Simple-3.07-68.fc9.i386.rpm             | 196 kB     00:30
(8/15): php-common-5.2.9-2.fc9.i386.rpm                  | 238 kB     00:52

Es probable que el sistema le pide confirmación varias veces. Es muy probable que no haya ningun riesgo mayor en validar esta pedidas de seguridad. En realidad, existe un riesgo pero es muy poco probable que alguien esté destinando algo malicioso para las XO, por lo tanto y por enfoque a la sencillez ante todo, ignoramos este paso.

Ahora queremos descargar Chamilo, pero no cualquier versión de Chamilo. Queremos una versión disminuida con solo los idiomas Inglés, Español, Francés, Brasilenio y Quechua. Por lo tanto podemos lanzar el comando siguiente:


Si la última versión de Chamilo es distinta de la, puede averiguar la URL correcta desde la lista de paquetes aquí:

Una vez todos estos elementos mencionados así como esta guía han sido descargados, ya puede desconectar la conección internet: no debería ser necesaria a partir de este punto.

Paso 4: Determinar el nombre de su portal

Para que sus alumnos luego puedan conectarse a Chamilo a través de la interconexión de las XO, necesitan tener un nombre específico al cual tendrán que apuntar sus navegadores (estamos viendo la posibilidad con Sebastián Silva de crear una “Aplicación Chamilo” que permita quitar este requerimiento, pero todavía no está).

Por lo tanto, tiene que decidir de un nombre parecido a una URL en el cual su Chamilo va a estar disponible. Recomendamos, si es que su institución tiene un nombre de dominio, de usar este. Por ejemplo, para un colegio imaginario “Las palomitas” que tendría como dominio “”, usaríamos “”. Por ahora no parece ser muy importante, pero si a futuro su portal se vuelve más usado, podría ser muy práctico haber pensado en algo así en el etapa de instalación.

Paso 5: Configurar la base de datos

MySQL es un sistema ligero si uno usa las mediciones comunes en sistemas, pero cuando se trata de instalarlo en una XO, suele ser una buena idea bajar sus requerimientos para que su uso de memoria no sea tan alto, porque la memoria en una XO 1.0 es realmente un recurso escaso.

Aquí debería aprender a usar VI para poder hacer un buen trabajo, pero tratemos de explicarlo en unos pasos simples:

bash-3.2# vi /etc/my.cnf

posicionar el cursos sobre la línea después de “old_passwords=1”

teclar la letra “i”

copiar las siguientes líneas hasta “skip networking”

query_cache_limit = 1M
query_cache_size = 4M
key_buffer = 1M
max_allowed_packet = 8M
thread_stack = 2K
thread_cache_size = 16
tmp_table_size = 2M
max_heap_table_size = 1M
sort_buffer_size = 2M
;The following two settings prevent MySQL from booting. Hence disabled.
;table_open_cache = 16
;table_definition_cache = 64
read_buffer_size = 128
max_connections = 64
key_buffer_size = 4M

ahora presionar succesivamente:  “escape” (la tecla más arriba a la derecha), “:”, “wq”, “enter”.

Esto debería haberles devuelto al terminal

bash-3.2# /etc/init.d/mysql start

Ahora tenemos una base de datos MySQL funcionando. Es tiempo de definir nuestro portal de Chamilo.

Paso 6: Configurar el servidor web

Como hemos descargado Chamilo desde la carpeta actual, deberíamos ahora encontrarnos en /home/olpc/. Para verificarlo:

bash-3.2# pwd

Ahí debería tener la mini versión de Chamilo. Para verificarlo:

bash-3.2# ls

Esto debería darme una lista de ficheros. Uno de ellos se llama “chamilo-”. Es tiempo de descomprimirlo.

bash-3.2# tar zxf chamilo*

bash-3.2# mv chamilo- chamilo

bash-3.2# chmod -R 0777 chamilo

Si ya no va a necesitar el paquete de Chamilo para ninguna otra cosa, puede eliminarlo para recuperar el espacio usado.

bash-3.2# rm chamilo-

Ahora tenemos una carpeta que se llama “chamilo”, y se encuentra en /home/olpc/. Por lo tanto, sabemos (porque lo necesitaremos ahora) que la instalación de Chamilo se encuentra en /home/olpc/chamilo/.

Ahora pasemos a la configuración de nginx, nuestro servidor web. Esto se hace en dos pasos: (1) asegurar que el servidor web funcione con páginas HTML simples, y (2) hacerlo funcionar con el lenguaje PHP que permite a Chamilo funcionar.

bash-3.2# vi /etc/nginx/conf.d/virtual.conf

ponga lo siguiente, como contenido del ficher (puede insertarlo después de las 3 primeras líneas de comentario poniendo el curso en la 4ta línea y presionando “i”. Use el nombre de su colegio en lugar de “palomitas” en la línea que dice “server_name”.

server {
listen        80;
server_name   localhost;
root /home/olpc/chamilo/;
index index.php index.html;
location / {
client_max_body_size 20M;
location ~ \.php$ {
include /etc/nginx/fastcgi_params;
expires 5m;
fastcgi_index index.php;
fastcgi_param  SCRIPT_FILENAME  /home/olpc/chamilo$fastcgi_script_name;

ahora presionar succesivamente:  “escape” (la tecla más arriba a la derecha), “:”, “wq”, “enter”.

En la línea de comando, entrar:

bash-3.2# /etc/init.d/nginx start

para iniciar al servidor web.

Desde ahora debería poder ver una página de Chamilo desde la aplicación de navegador de su XO. Presione CTRL + ALT + F5 (la quinta tecla arriba del teclado) para regresar en modo visual. Ahí, vaya a su aplicación de navegador (browser) e indique la URL siguiente: http://localhost/documentation/index.html. Debería ver la página de inicio de la documentación de instalación y versiones de Chamilo. Todo conforme? Pase al etapa siguiente…

Presione CTRL + ALT + F3 para regresar al modo terminal, donde lo habíamos dejado.

bash-3.# php-cgi -b -c /etc/php.ini &

Este método de inicio de php no es muy elegante, porque no sobrevivirá una alta carga ni un re-inicio de la máquina, pero hasta mejorar el proceso, será suficiente. Esta última línea tendrá que ser lanzada a cada vez que reinicie su XO, o si el servidor responde “Bad gateway” en algún momento.

Finalmente, y para simplificar todo lo que sigue, edita el fichero /etc/hosts y defina ahí el nombre que usará para su portal:

bash-3.2# vi /etc/hosts

añadir la línea siguiente cambiando el nombre por el que usará

salga guardando (“escape” + “:wq” + “enter”)

Ya está para la infraestructura del sistema. Ahora pasemos a instalar Chamilo.

Paso 7: Instalar Chamilo

En los pasos anteriores, se tomó un atajo de simplificación: usaremos el usuario de base de datos “root”. Es fácil cambiar esto antes de instalar Chamilo, pero no *tan* fácil como para detallarlo aquí en unas líneas.

Regrese a la pantalla gráfica con CTRL + ALT + F5. En el navegador, entre: y Enter

Debería aparecer la página del instalador de Chamilo. Básicamente tiene que validar todo y seguir las instrucciones. Las únicas cosas que debe modificar (frente a lo propuesto por defecto en el paso 5 de 6) son:

  • cambiar la dirección del portal (probablemente esté proponiendo http://localhost/, pongale o lo que corresponde para usted)
  • cambiar la contraseña (pongale algo más fácil de recordar y más personal)
  • cambiar la opción “Permitir que los propios usuarios puedan registrarse como creadores de cursos” a “No”

Todo lo demás solo tiene que leer y dar clic en “siguiente”.

Paso 8: Aprovechar

Desde ahora en adelante, el único paso que se tiene que repetir para iniciar el portal son los 2 comandos siguiente en el terminal:

bash-3.2# su

bash-3.2# php-cgi -b -c /etc/php.ini &

Para que sus alumnos puedan aprovechar del portal, tendrá (hasta que desarrollemos una “aplicación Chamilo”) que configurar cada una de las XO para que vinculen el nombre con su dirección IP. Para esto, tendrá que identificar su propia dirección en un terminal con el comando /sbin/ifconfig, y de ahí extraer la primera dirección de la línea “inet addr” en la sección “eth0”. Si su dirección es, tendrá que añadir la siguiente línea en la XO de los niños:

De ahí, solo necesitarán cargar en su navegador para poder acceder al aula virtual.

Este artículo será continuado… para que podamos llegar algun día a esto pero con el aporte adicional de un Chamilo con recursos del ministerio de educación respectivo:

Indigenas usando la XO

%d bloggers like this: