Esta entrada es una de las mas esquivas que he podido tener en el corto tiempo que llevo escribiendo este blog. La tarea mas complicada que he tenido en todos mis años de trabajo con software y hardware y la que a estas alturas de mi vida me ha hecho mas falta tener a la mano para la cantidad de proyectos que he realizado sin usar una metodología que realmente ayude a llevar un control de qué es lo que se hace en un proyecto de desarrollo de software.

Para hacer el cuento corto, necesitaba instalar la metodología MDCSL de Cenditel (Metodología de Desarrollo Colaborativo de Software Libre) y ésta tiene un plugin que funciona muy pero muy bien en TRAC. Lo necesitaba para poder llevar un control coherente y mas ordenado de lo que he estado haciendo desde hace unos 3 años: Mi Proyecto UBV de Software para el Control Académico y Administrativo de la Escuela Bolivariana Luis Hómez II en el Estado Zulia. Este plugin y haber aprendido a trabajar con GIT (GitLab.com) me ha ayudado enormemente en momentos en los que no podía trabajar directamente en mi PC o en mi Laptop permitiéndome bajar un poco el estress de no tener todo ordenado disponible y a tiempo.

Así que… sin mas preámbulo:

COMO INSTALAR TRAC EN LINUX MINT (en Debian y Ubuntu debería funcionar también… hay que realizar pruebas.!)

Instalar Trac (con conexión a internet)

1.- Actualizar pip a la ultima versión
sudo pip install --upgrade pip

2.- Instalar Babel 1.3
sudo apt-get install python python-babel python-dev
pip install Babel

3.- Instalar easy_install para poder instalar Genshi 0.7

Para el caso en el que tengas linux basado en Debian solo es necesario escribir en la consola

sudo pip install ez_setup

En el caso contrario… la forma mas larga es:

Descargar ez_setup.py de la pagina:
https://pypi.python.org/pypi/setuptools#unix-wget

alternativamente se puede descargar asi:
wget https://bootstrap.pypa.io/ez_setup.py -O - | python

Luego instalarlo (se puede instalar desde el directorio donde se descargó)
sudo easy_setup.py
y finalmente escribimos en la consola para que no de error de versiones:
export PKG_RESOURCES_CACHE_ZIP_MANIFESTS=1

Luego, la manera mas fácil de instalar Genshi que es otra de las dependencias de Trac 0.12 es escribiendo en la terminal

sudo apt-get install Genshi

.. pero si por casualidad no se instala entonces lo descargaríamos manualmente desde su pagina

https://genshi.edgewall.org/wiki/Download#LatestRelease:0.7

para luego finalmente proceder a instalarlo

sudo easy_install Genshi-0.7-py2.7-linux-x86_64.egg

No explicaremos como instalar el servidor de base de datos porque, si estas desarrollando es muy probable que ya sepas lo complicado que es instalar correctamente postgres con un usuario extra, cambiar la contraseña básica del usuario postgres y crear la bd y el esquema necesarios. De todas maneras, de una forma breve y sin profundizar podemos hacer lo siguiente para instalar postgresql:

sudo apt-get update
sudo apt-get install postgresql postgresql-contrib libpq.dev

cambiamos de usuario para crear uno propio
sudo -i -u postgres

en el usuario postgres:
createuser --interactive
y luego de escribir el nombre del usuario que queremos crear escribimos la letra “y” para permitir que ese usuario tenga rol de superusuario

4.- Instalar TRAC
Existen algunas versiones de Linux como por ejemplo Debian que tienen en sus repositorios los archivos necesarios para instalar Trac. Con agradable sorpresa descubrimos que en Debian 8 Jessie podemos escribir en la consola

sudo easy_install Trac==0.12

y se descarga la versión 0.12 de Trac. Aquí debo hacer un paréntesis porque hay que explicar que el plugin Cenditel no funciona (para el año 2017) en cualquier versión estable de Trac a partir de la 1.0. No fue simpático descubrir que en el sistema operativo Chalet OS basado en Ubuntu 16.04 Trac 0.12, 1.1 y 1.2 no funciona al momento de instalar el plugin de Cenditel (aun estamos investigando si finalmente se podrá usar en ese sistema operativo). Esto no pasó en Linux Mint 18 también basado en Ubuntu 16.04 que aunque en sus repositorios la versión actual de Trac es la 1.2, se pudo descargar y hacer funcionar la versión 0.12 de Trac en donde si funciona el plugin de Cenditel.

Entonces para instalar Trac 0.12 de forma manual primero descargamos el .tar de la pagina:

https://trac.edgewall.org/wiki/TracDownload
… y seleccionar el .tar que se necesita

Luego instalamos el trac

sudo easy_install Trac-0.12.7.tar.gz

NOTA: Esta versión instalará automáticamente el Genshi 0.6 si hay conexión a internet y debería funcionar bien aunque ya se haya instalado la versión Genshi 0.7

5.- Instalar Driver de postgresql (Se hace después de instalar PostgreSQL.):
sudo easy_install psycopg2

Según la guía de instalación en la pagina https://trac.edgewall.org/wiki/0.12/TracInstall el proceso es:
Para instalar Trac con Base de Datos Postgresql
You need to install the database and its Python bindings:

PostgreSQL, version 8.0 or later
psycopg2

See DatabaseBackend for details.

Es decir, instalamos la base de datos postgres con su respectivo Driver para la conexión del Trac con Postgres y luego para conectar Trac con Postgres se necesita:
Prerequisites:

Have a working copy of Postgresql.
Get the proper database driver for Python, see above.
Create a database for your Trac environment:

% createdb dbname

Run trac-admin to create a new Trac environment. When prompted for a Database connection string, use:

postgres://user:pass@localhost:5432/dbname?schema=schemaname

Notice that the port number might be different in your Postgresql installation, eg 5433. See postgresql.conf.

Alternatively on UNIX, if the database is a local one, you can use UNIX sockets instead of TCP/IP:

postgres://user:pass@/dbname?host=/path/to/unix/socket/dir&schema=schemaname

If you are using user Trac without a password to connect through UNIX sockets to database trac and have only one project (hence no need for different schemas), your connections string would be postgres://trac:@/trac

Entonces entramos a Postgres con el comando:
su postgres -c psql postgres

cambiamos la contraeña del usuario postgres para que podamos usar ese usuario en la config de trac.ini

alter user postgres with password 'mi_nueva_contraseña';
(ctrl+d para salir, si asi lo deseas)

Y creamos la base de datos que vamos a utilizar con el trac
usuario=# create database NombreBD;

Además creamos un esquema para que se lo especifiquemos en el comando de  conexión de trac a postgres
usuario=# create schema NombreEsquema;

Salimos de Postgres para crear un proyecto de Trac

6.- Creando el Proyecto en Trac

Se procede a crear un proyecto con el comando
trac-admin /directorio/del/proyecto initenv

Ej.: trac-admin /var/www/miproyecto initenv

El initenv solicitará coloques una descripción del proyecto que vas a crear.
Luego, solicitará la instrucción que se usará para conectarse a la base de datos, en nuestro caso será Postgres entonces, el comando será:

postgres://usuariopostgres:clave@localhost:5432/basededatos?schema=esquema

y Finalmente (si todo esta bien instalado) debe salir un mensaje parecido a este:
———————————————————————
El entorno del proyecto para ‘Proyecto para la EPB Luis Homez’ se creó con éxito.

Ahora puede configurar el entorno editando el fichero:

/var/www/tracepblhomez/conf/trac.ini

Si desea hacer pruebas del entorno del proyecto,
pruebe a ejecutar el servidor de web independiente de Trac, `tracd`:

tracd --port 8000 /var/www/tracepblhomez

Apunte su navegador a http://localhost:8000/directorio/del/proyecto.
Allí también podrá hojear la documentación de su versión instalada
de Trac, incluyendo información de instalación más amplia (como
el despliegue de Trac en un servidor real).

La documentación más actual también puede ser encontrada en el sitio
web del proyecto:

http://trac.edgewall.org/

¡Enhorabuena!
———————————————————————-

Para probar que se instaló el trac correctamente es necesario iniciar el servidor web local que trae el mismo trac con el comando:
tracd --port:8000 /directorio/del/proyecto

y luego abrir un navegador y escribir en la barra de dirección:
127.0.0.1:8000

Acá podrás ver los proyectos que están activos en ese momento. El Nombre que saldrá es el que se escribió en la descripción de proyecto que escribimos cuando lo estábamos creando

Si hay algún mensaje diferente es porque no se creó el proyecto así que hay que borrar el directorio que se creó y tal vez el esquema en la base de datos (si la creación del proyecto llegó hasta allí) y entonces, sin problemas podemos ejecutar el comando: trac-admin /var/www/miproyecto initenv otra vez.

7.- Instalación del modulo de autenticación
Este modulo permitirá manejar usuarios dentro del proyecto para así poder crear tickets (algo parecido a un commit de git) y poder controlar las versiones que se han ido creando del proyecto, además de poder hacer modificaciones en los puntos de la metodología que trae el plugin de MDSL- Cenditel.

 7.1.- Primero instalamos el modulo de autenticación

Podemos hacerlo directamente usando la descarga e instalación con easy_install que dice la pagina del plugin

easy_install https://trac-hacks.org/svn/accountmanagerplugin/tags/acct_mgr-0.4.4

…O descargamos el archivo TracAccountManager-X.X.X.tar.gz (Se debe descargar la ultima versión estable) desde:

https://pypi.python.org/pypi/TracAccountManager

…y buscamos el botón de descarga (o en su defecto el .tar mas reciente)

Y lo instalamos (no hay problema de instalarlo desde el directorio donde cayo el archivo) con:

sudo easy_install TracAccountManager-0.4.4.tar.gz

Abrimos el archivo trac.ini con nuestro editor favorito. Este se encuentra en:

gedit /directorio/del/proyecto/conf/trac.ini

… buscamos la palabra “components” y al conseguir [components] seleccionamos todo lo que esté dentro del modulo ese modulo y con un copy+paste movemos todo hacia el final del archivo trac.ini y añadimos las siguientes lineas:


[account-manager]
db_htdigest_realm = TracDB
hash_method = HtDigestHashMethod
password_store = SessionStore
reset_password = false

y estas otras aparte de las que se consigan. Tener cuidado de no repetir las lineas

[components]
acct_mgr.admin.* = enabled
acct_mgr.api.* = enabled
acct_mgr.db.sessionstore = enabled
acct_mgr.htfile.* = disabled
acct_mgr.http.* = disabled
acct_mgr.notification.* = enabled
acct_mgr.pwhash.htdigesthashmethod = enabled
acct_mgr.pwhash.htpasswdhashmethod = disabled
acct_mgr.register.* = enabled
acct_mgr.svnserve.svnservepasswordstore = disabled
acct_mgr.web_ui.* = enabled
acct_mgr.web_ui.resetpwstore = disabled
plantuml.* = enabled
trac.web.auth.loginmodule = disabled
tractoc.* = enabled

[plantuml]
plantuml_jar = /directorio/del/proyecto/plugins/plantuml.jar
java_bin = /usr/bin/java

Todo esto es para usar el SessionStore y poder loguearnos en nuestro proyecto Trac como si fuese el login de una pagina web común.

Por otra parte, los parámetros para [plantuml] deben ser cambiados por los parámetros de tu proyecto. Esos parámetros sirven para que se puedan ejecutar los comandos de PlantUML y se puedan ver las imágenes de los diagramas hechos en lenguaje UML.
Para ubicar en donde esta instalado el “java_bin” escribimos en la consola el comando:

whereis java

y copiamos el primero donde veamos la palabra “bin”.
Si no has instalado java8, mas adelante explicamos como hacerlo de forma sencilla con los repositorios de linux disponibles.

Recordar que si se desea permitir que el usuario resetee su password se debe cambiar la linea:
acct_mgr.web_ui.resetpwstore = disabled
por
acct_mgr.web_ui.resetpwstore = enabled

Luego se reinicia el servidor (desde la consola en la que hemos venido trabajando todo este tiempo):
tracd --port 8000 /directorio/del/proyecto

Abrimos el navegador y en la pagina del trac (o la del proyecto: 0.0.0.0:8000/directorio/del/proyecto/) buscamos la opcion “Register” o “Registrarse”. Esta opción está en el area superior de la esquina derecha de la pagina web de trac que se observa cuando escribimos en el navegador: 127.0.0.1:8000.
Con esta opción registraremos un usuario para poder realizar las respectivas modificaciones a nuestros proyectos. En nuestro caso vamos a usar el plugin para TRAC de CENDITEL para la Metodologia de Desarrollo Colaborativo de Software Libre.

8.- Instalar plugin CENDITEL

Para instalar este plugin debemos descargar los siguientes archivos:
Plugin de trac-hacks.org TocMacro http://trac-hacks.org/wiki/TocMacro
Plugin de trac-hacks.org PlantUML http://trac-hacks.org/wiki/PlantUmlMacro

Es decir, debes abrir cada enlace y buscar la sección “Downloads” de cada uno y descargar el archivo que se necesita.

  8.1 Para Instalar el TocMacro escribimos en consola el siguiente comando:
sudo easy_install https://trac-hacks.org/svn/tocmacro/0.11

Si da algun problema o mensaje de error se debe repetir el comando porque a veces pasa que no hay conexion a los servidores de este archivo y no se puede instalar completamente

8.2.- Para instalar PlantUML se necesita tener el JDK de Java entonces debemos descargarlo e instalarlo antes de instalar PlantUML

Para hacer esto primero agregamos un repositorio que permita la descarga e instalación del JDK, JVM y JRE por medio de apt-get. El repositorio se agrega asi:
sudo add-apt-repository ppa:webupd8team/java
sudo apt-get update

Presionas enter para q se agregue el repositorio y esperamos que termine…
(esta pagina ayuda a entender que es lo que se estaria instalando con este comando: https://www.digitalocean.com/community/tutorials/how-to-install-java-with-apt-get-on-ubuntu-16-04)

Luego de instalar el JRE se debe probar que funciona el plantuml. En estos momentos es que debemos saber que lo que agregamos en el modulo [component] del archivo trac.ini es lo que va a hacer que funcione el plantuml y el tractoc ( ¿si recuerdan plantuml.* = enabled y tractoc.* = enabled? eso es todo..!)

Recuerda que la instalación de JAVA de Oracle en Linux es necesaria solo cuando existe algún problema de compatibilidad. Para evitar que esto suceda con nuestro plantuml es que estamos haciendo esta instalación. Entonces hay que “manejar” la versión de java que quede instalada. Esto se hace con el comando:
sudo update-alternatives --config java
Con este comando se nos permite seleccionar cual JVM vamos a utilizar por defecto y asi le pasamos el control al java q acabamos de descargar e instalar.
Otra forma de colocar este java para q sea el “por defecto” es escribiendo el siguiente comando:
sudo apt install oracle-java8-set-default

Nos movemos hacia el directorio donde copiamos el plantuml, luego probamos que funcione el plantuml con el comando:
sudo java -jar plantuml.jar -version

y mostrará un mensaje parecido a este:
PlantUML version 8039beta0 (Mon Apr 04 12:32:35 VET 2016)
(GPL source distribution)
Java(TM) SE Runtime Environment
Java HotSpot(TM) Server VM
1.8.0_111-b14
Linux

The environment variable GRAPHVIZ_DOT has not been set
Dot executable is /usr/bin/dot
Error: file does not exist
Error: only sequence diagrams will be generated

El mensaje de error se debe a que todavía no se ha instalado el GRAPHVIZ. Para ello debemos escribir en la consola
sudo apt-get install graphviz

Y Linux se encargará de instalar los archivos necesarios.
Volvemos a probar el plantuml y debe salir un mensaje parecido a este:
sudo java -jar plantuml.jar -version

PlantUML version 8039beta0 (Mon Apr 04 12:32:35 VET 2016)
(GPL source distribution)
Java(TM) SE Runtime Environment
Java HotSpot(TM) Server VM
1.8.0_111-b14
Linux

The environment variable GRAPHVIZ_DOT has not been set
Dot executable is /usr/bin/dot
Dot version: dot – graphviz version 2.38.0 (20140413.2041)
Installation seems OK. File generation OK

Finalmente escribimos el siguiente comando para finalizar la integracion del plantuml a nuestro trac
sudo easy_install https://trac-hacks.org/svn/plantumlmacro/trunk

Si da algun problema o mensaje de error se debe repetir el comando porque a veces pasa que no hay conexion a los servidores de este archivo y no se puede instalar completamente

Por fin..! instalamos el plugin de MDCSL Cenditel

para que no pida confirmación de superusuario
export GIT_SSL_NO_VERIFY=1

para clonar el repositorio de Metodologia0.2 y lo guarde en una carpeta llamada MetodologiaSoftware0.2 (copia la linea completa hasta donde dice “MetodologiaSoftware0.2”)


git clone https://calidad-sl.cenditel.gob.ve/scm/git/metodologia.git MetodologiaSoftware0.2

Entra en la carpeta (se pueden haber creado 2 veces la misma carpeta…):

cd MetodologiaSoftware0.2/MetodologiaSoftware0.2

Ejecuta el siguiente comando para que se instale la metodología y se pueda ver en el trac

python setup.py bdist_egg

Luego copiamos el archivo “.egg” generado por este ultimo comando en la carpeta “plugins” del proyecto

sudo cp TracMetodologiaMacro-0.2-py2.7.egg /directorio/del/proyecto/plugins/

y también lo copiamos en la carpeta “site-packages” de python para que lo reconozca:

sudo cp TracMetodologiaMacro-0.2-py2.7.egg /usr/local/lib/python2.7/site-packages/

… y actualizamos el trac para que funcione con el plugin

trac-admin /directorio/del/proyecto/ upgrade --no-backup

Levantamos el servidor de trac:
tracd --port 8000 /directorio/del/proyecto

y Ejecutamos en un navegador
http://127.0.0.1:8000/wiki/metodologia

Ya podemos iniciar con el cargado de datos segun la metodologia MDCSL Cenditel

(Recuerda que puedes seguir la guia de instalación de la pagina:https://calidad-sl.cenditel.gob.ve/trac/)

Como una nota aparte, podemos colocar un logo para identificar cada proyecto que creemos en trac. Para hacer esto solo debemos buscar el archivo de la imagen y copiarlo en el directorio /directorio/del/proyecto/htdocs/ y crear una carpeta con un nombre que identifique que alli se guardarán imagenes. (Ej,: ~/htdocs/img). Luego procedemos a copiar la imagen en ese directorio y por ultimo abrir nuestro trac.ini y modificar las siguientes lineas:
[header_logo]
alt = logo-nuevo_epbluishomez.png
height = 60
link =
src = site/img/logo-nuevo_epbluishomez.png
width = 400

El tamaño de logo se puede cambiar en las lineas “height” y “width” para asi tener un control total de como se verá el logo en la pagina.

Por favor, si instalaste seguiste esta guia y conseguiste algún problema que no se mencione aquí, mucho te sabría agradecer que dejes tu comentario. Juntos podemos mejorar toda la guía.! Éxitos en tus proyectos.!

Anuncios