Este documento describe los pasos para preparar un sistema Linux para contribuir al proyecto Mozilla SUMO. Explica la instalación de varias dependencias como Python, pip, MySQL, Memcached, RabbitMQ, libxml, libxslt, zlib, Redis, Elastic Search y Git. Proporciona enlaces a guías detalladas y ofrece consejos como consultar en el chat ante cualquier duda durante el proceso de instalación.
1. Preparando nuestro sistema:
Kitsune’s Documentation!
Decidí registrarme para colaborar con la gente de Mozilla, para saber en que
grupo quería colaborar me fijé en el siguiente link:
Link:
https://wiki.mozilla.org/Webdev/GetInvolved#support.mozilla.org_.28SUMO.2
9
De las opciones que ahí figuran me interesó el grupo de:
support.mozilla.org (SUMO):
Firefox Help is the support site for Firefox users. It helpts millions of users
every week through a knowledge base and support forum. It also provides
collaboration and localization tools for the contributors. It uses technology like
Python, Django, MySQL, Redis, Memcached, Elastic Search and more.
• Fork us on Github: https://github.com/mozilla/kitsune
• Who: Ricky Rosario (r1cky) & Will Kahn-Greene (willkg)
• IRC: irc.mozilla.org/ & Channel: #sumodev
• Support on Bugzilla: https://bugzilla.mozilla.org/buglist.cgi?
quicksearch=OPEN%20product%3Asupport.mozilla.org
Opté por ese grupo por el hecho de que usan Python y Django, y MySQL.
Me incentivó a formar parte de Mozilla como Contributor el hecho de que
quiero empezar a poner en marcha lo que se de Python, Django, MySQL y
Git y la mejor manera de hacerlo es contribuyendo y tratando de aportar a
esta comunidad que tanto me ayudó y me sigue ayudando.
Paso a contar mi experiencia preparando mi sistema para empezar a
ponerme en acción.
La distro que decidí para usar es:
Linux Mint 13 Maya KDE de 32 bits:
http://www.linuxmint.com/edition.php?id=115
Estas son las otras opciones dentro de Linux Mint 13 Maya:
http://www.linuxmint.com/download.php
2. Elegí esta distro porque en los últimos años me fui inclinando por Mint y me
vienen hablando también bastante bien de KDE, asi que le quise dar una
oportunidad y la verdad todo marcha sobre ruedas con esta distro.
La guía para preparar el sistema es la siguiente:
http://kitsune.readthedocs.org/en/latest/index.html, si bien está en inglés es
entendible y sus pasos fácil de seguir. Aunque debo admitir que en ciertos
momentos me bloqueé pero los hice estando en el chat, y con la ayuda y
guía de los chicos, en especial de r1cky pude completar la guía de forma
satisfactoria.
Mi recomendación es la de seguir la guía estando en el chat, para poder
consultar ante cualquier duda que tengamos.
Algo que hice antes de empezar con la guía, lo que hice fue actualizar mi
Firefox de 12 que es el que trae esta distro a la 15 y cree un Bookmark:
Mozilla_SUMO y ahí guardé los siguientes links:
Webdev/GetInvolved:
https://wiki.mozilla.org/Webdev/GetInvolved#support.mozilla.org_.28SUMO.2
9
Kitsune’s Documentation:
http://kitsune.readthedocs.org/en/latest/index.html
Hecho eso procedí con la guía.
Arranqué con PART 2: DEVELOPER’S GUIDE – INSTALLATION
Los Requerimientos del sistema son los siguientes:
• Python 2.6 or 2.7
• setuptools or pip
• MySQL Server and client headers
• Memcached Server
• RabbitMQ
• libxml and headers
• libxslt and headers
• libjpeg and headers
• zlib and headers
• LESS
• Redis
• Several Python packages. See Installing the Packages.
• Elastic Search. Search covers installation, configuration, and running.
3. Python: La mayoría de las distros ya viene con Python, generalmente la
versión 2.7, la mía es la versión 2.7.3.
setuptools or pip: pip es una herramienta para instalar y gestionar paquetes
Python, es el reemplazo deeasy_install.
Fuente: http://www.pip-installer.org/en/latest/index.html
Para instalar pip seguí los siguientes pasos.
Primero verifiqué la existencia de los siguientes paquetes en el repositorio de
Mint:
sudo apt-cache search python-pip
Resultado de la búsqueda:
python-pip – alternative Python package installer
sudo apt-get install python-pip
Luego busqué:
sudo apt-cache search python-dev
Resultado de la búsqueda:
python-dev – header files and a static library for Python (default)
sudo apt-get install python-dev
python-dev: son los headers files de pythonsirven para que otras librerias
puedan llamar y utilizar codigo de python al momento de compilar cosas
python-dev es el nombre que le suelen dar quienes empaquetan cosas en
distribuciones como ubuntu o debian o fedora. GRACIAS EMI, SOS UN
GROSO (http://ar.linkedin.com/pub/emiliano-dalla-verde-
marcozzi/13/166/349)
Busco ahora:
sudo apt-cache search build-essential
Resultado de la búsqueda:
build-essential – Lista informativa de los paquetes build-essential
4. build-essential: tiene las instrucciones para instalar los paquetes esenciales
para programar en C/C++ (y hacer otras cosas relacionadas con la creación
de paquetes “.deb”.)
Fuente: http://carlosruizortega.wordpress.com/2008/05/12/build-essential/
Una vez que los tres paquetes se encuentran instalados: python-pip, python-
dev y build-essential hacemos lo siguiente:
sudo pip install –upgrade pip
Fuente: http://www.saltycrane.com/blog/2010/02/how-install-pip-ubuntu/
MySQL: es un sistema de gestión de base de datos relacional, multihilo y
multiusuario.
Necesitamos primero asegurarnos como en el paso anterior que se
encuentran en nuestro repositorio, para eso realizamos las siguientes
búsquedas:
sudo apt-cache search mysql-server
mysql-server – MySQL database server (metapackage depending on the
latest version)
mysql-server-5.5 – MySQL database server binaries and system database
setup
mysql-server-core-5.5 – MySQL database server binaries
sudo apt-get install mysql-server mysql-server-5.5 mysql-client-5.5 mysql-
server-core-5.5
mysql-server: es un administrador que permite agregar, acceder y procesar
los datos almacenados en una computadora.
mysql-client: sirve para lo que todos los clientes sql, para escribir consultas
sql y ver/recibir los resultados. GRACIAS TOTAL A MURRAY.
Durante la instalación de MySQL nos va a pedir que ingresemos el password
que va a usar nuestro usuario root.
Memcached Server: es un sistema distribuido de propósito general para
caché basado en memoria, diseñado por Danga Interactive y que es muy
usado en la actualidad por múltiples sitios web.
Fuente: http://es.wikipedia.org/wiki/Memcached
5. Para instalarlo seguí los siguientes pasos:
• Hice una actualización: sudo apt-get update
• Como en el paso anterior ya instalamos mysql-server, debemos instalar
ahora: php5-mysql y php5 php5-memcache
Es una costumbre que tengo, la de revisar si se encuentran en los
repositorios.
sudo apt-cache search php5-mysql
php5-mysql – MySQL module for php5
sudo apt-cache search php5-memcache
php5-memcache – memcache extension module for PHP5
Los instalamos:
sudo apt-get install php5-mysql php5 php5-memcache
Después se procede a la instalación de Memcache:
sudo apt-get install memcached
Luego se instala php-pear, que es el repositorio que almacena memcache.
sudo apt-get install php-pear
Nota: La guía pide que se instale build-essential, pero este paso como es
obvio lo omitimos. Por qué? Por que ya lo instalamos cuando hicimos la
instalación de pip.
Por lo que pasamos al siguiente paso:
sudo pecl install memcache
pecl (PHP Extension Community Library): conceptualmente es similar a
PEAR. PECL contiene extensiones C para compilar en PHP.
Fuente:
http://en.wikipedia.org/wiki/PHP_Extension_Community_Library#PECL
Durante la instalación se realiza una pregunta, hay que contestar que sí:
“yes”.
6. Una vez que se completó esta instalación hay que hacer lo siguiente:
sudo echo “extension=memcache.so” > sudo /etc/php5/conf.d/memcache.ini
Lo que estamos haciendo es añadir memcache a memcache.ini
Fuente: https://www.digitalocean.com/community/articles/how-to-install-and-
use-memcache-on-ubuntu-12-04
RabbitMQ: es un software de negociación de mensajes de código abierto, y
entra dentro de la categoría de middleware de mensajería. Implementa el
estándar Advanced Message Queuing Protocol (AMQP). El servidor
RabbitMQ está escrito en Erlang y utiliza elframework Open Telecom
Platform (OTP) para construir sus capacidades de ejecución distribuida y
conmutación ante errores.
Fuente: http://es.wikipedia.org/wiki/RabbitMQ
Esta parte depende de ustedes, digo esto porqué, porque en el repositorio
figura rabbitmq, pero no es la última versión, en mi caso opté por bajar la
última disponible en el sitio oficial:
http://www.rabbitmq.com/download.html
Ahí vemos las distintas opciones de acuerdo a los distintos sistemas
operativos y en caso de linux, de acuerdo a las distintas distros.
En mi caso descargué: rabbitmq-server_2.8.6-1_all.deb
Lo instalé de la siguiente manera:
sudo dpkg -i rabbitmq-server_2.8.6-1_all.deb
Aclaración: En caso de que hagan como yo y usen la última versión
disponible, recuerden que hay que cumplir con todas las dependencias, es
decir instalar los paquetes erlang. Lo remarco de esta manera porque que
cuando quise instalar directamente el .deb me dio problemas y lo solucioné
instalando las dependencias, que lo hice mediante previo chequeo:
sudo apt-cache search erlang
El resultado fue bastante extenso, pero figura y procedí a su instalación:
sudo apt-get install erlang
Cuando terminó la instalación, volví a ejecutar el comando para instalar el
7. .deb y lo hizo sin problema alguno.
libxml: es una biblioteca de código para analizar documentos XML. Es
también la base de la biblioteca libxslt, que procesa hojas de estilo XSLT-1.0.
Fuente: http://es.wikipedia.org/wiki/Libxml
Esta instalación es muy sencilla, se encuentra en el repositorio, si la buscan:
sudo apt-cache search libxml
El resultado va a ser no muy largo pero si tal vez algo extenso, lo que hay
que instalar es lo siguiente:
sudo apt-get install libxml2 libxml2-dev
libxslt
La instalación es igual a la anterior, buscamos en los repos:
sudo apt-cache search libxslt
Para instalarlo hay que hacer lo siguiente:
sudo apt-get install libxslt1.1 libxslt1.dev
zlib: es una biblioteca de compresión de datos, de software libre/fuente
abierta, multiplataforma desarrollada por Jean-loup Gailly y Mark Adler. Esta
biblioteca provee una implementación del algoritmo DEFLATE usado en el
programa de compresión gzip.
Fuente: http://es.wikipedia.org/wiki/Zlib
Si lo buscamos:
sudo apt-cache search zlib
El resultado va a ser bastante largo, pero lo único que debemos instalar es:
sudo apt-get install zlib-bin
LESS
La guía lo indica bien, antes de instalarlo debemos instalar Node.js y NPM.
8. Buscamos npm:
sudo apt-cache search npm
npm – package manager for Node.js
sudo apt-get install npm
Luego:
sudo npm install less
Redis: es un motor de base de datos en memoria, basado en el
almacenamiento en tablas de hashes (llave, valor) pero que opcionalmente
puede ser usada como una base de datos durable o persistente.
Fuente: http://es.wikipedia.org/wiki/Redis
La instalación la seguí al pie de la letra del sitio oficial. Los pasos son los
siguientes:
wget http://download.redis.io/redis-stable.tar.gz
tar xvzf redis-stable.tar.gz
cd redis-stable
make
Luego del make el sitio dice que si se quiere testear si trabaja de forma
correcta o no, para hacerlo el comando es el siguiente:
make test
Aclaración: Me pasó que cuando quise hacer el test, tuve un mensaje de
error y era porque no estaba cumpliendo una dependencia y la solucioné de
la siguiente manera:
sudo apt-get install tcl8.5
Ejecuté de nuevo el test y funcionó perfectamente.
Sugerencia: Yo personalmente lo hice, total no cuesta nada y nos
aseguramos de que todo va en orden.
Luego debemos hacer las siguientes copias, para ubicarlas en el lugar
correcto. Para hacerlo lo que hay que hacer es ubicarnos en la siguiente ruta:
9. redis-stable/src/
Cuando descargamos redis y lo descomprimimos se creó un archivo con ese
nombre: redis-stable y dentro de ésta se encuentra una carpeta con el
nombre src, nos ubicamos ahí y realizamos las 2 siguientes copias:
• sudo cp redis-server /usr/local/bin/
• sudo cp redis-cli /usr/local/bin/
Luego de haber hecho esto incializamos Redis para probar que funciona,
para hacerlo permanecemos en la ruta /redis-stable/src/ y ejecutamos el
redis-server
Fuente: http://redis.io/topics/quickstart
Elastic Search: es un servidor de búsqueda basado en Apache Lucene.
Fuente: http://en.wikipedia.org/wiki/ElasticSearch
Para instalarlo seguí los siguientes pasos:
sudo apt-get install openjdk-7-jre -y
wget https://github.com/downloads/elasticsearch/elasticsearch/elasticsearch-
0.19.0.tar.gz -O elasticsearch.tar.gz
tar -xf elasticsearch.tar.gz
rm elasticsearch.tar.gz
sudo mv elasticsearch-* elasticsearch
sudo mv elasticsearch /usr/local/share
Nota: Se va a hacer uso de curl, en mi caso cuando lo quise ejecutar al
comando que voy a colocar ahora, me dio un error, por problema de
dependencia, que lo solucioné de la siguiente forma:
sudo apt-get install curl
Una vez satisfecha esta dependencia hay que seguir con esto:
curl -L http://github.com/elasticsearch/elasticsearch-
servicewrapper/tarball/master | tar -xz
10. mv *servicewrapper*/service /usr/local/share/elasticsearch/bin/
rm -Rf *servicewrapper*
sudo /usr/local/share/elasticsearch/bin/service/elasticsearch install
sudo ln -s `readlink -f
/usr/local/share/elasticsearch/bin/service/elasticsearch`
/usr/local/bin/rcelasticsearch
sudo service elasticsearch start
Fuente: https://gist.github.com/2026107
Por último queda instalar git:
http://git-scm.com/book/es/Empezando-Instalando-Git
Bueno eso es todo por ahora, saludos.