Instalacion Alberto Herrera - ASTROINGENIERIA/ASTROUFRO GitHub Wiki
En el presente documento se describen los pasos necesarios para poder llevar a cabo la instalacion de Alma Common Software (ACS) en un equipo portatil. En una primera instancia se detallaran las caracteristicas del equipo utilizado para la instalacion, y posteriormente se describira el paso a paso de la misma.
- Procesador: Intel i3 de tercera generacion con dos nucleos y cuatro hilos (2,4 GHz por nucleo).
- Ram: 4 GB DDR3.
- Disco Duro: 500 GB normal.
- Sistema Operativo: CentOS 6.8 con arquitectura de 32 bits (i386) descargable desde > ftp://ftp.inf.utfsm.cl/pub/Linux/CentOS/6.8/isos/i386/CentOS-6.8-i386-LiveCD.iso .
-
¿Que arquitectura debo elegir? A la hora de elegir la arquitectura del sistema CentOS a utilizar, es necesario tener en cuenta que si se posee un equipo con un procesador de la familia Intel la arquitectura correspondiente es la
i386
(en referencia a la familia de procesadores Intel x86 en especifico a la version Intel i80386) arquitectura que define el sistema operativo a 32 bits, o bienx86_64
(en referencia a la familia de procesadores intel compatibles con arquitecturas de 32 bits y 64 bits), .Si se posee un equipo con un procesador de la familia AMD la arquitectura correspondiente es lax86_64
o en algunas ocaciones denominadoamd64
. Cabe destacar que la mayoria de los sistemas operativos vienen en ambas versiones (Procesadores basados en el intel 80386 y reconocida como i386, y procesadores basados en arquitectura dual x86_64). -
¿Que hacer si no se utiliza el usuario root? En caso de no utilizar el usuario root, es necesario que el usuario que se este utilizando tenga permisos de super usuario, por lo que es necesario modificar el archivo ubicado en
/etc/sudoers
con cualquier editor de texto plano (vim, nano, gedit, etc) y añadir debajo de la definicion del usuario root el usuario en cuestion añadiendo exactamente los mismos atributos que el usuario root posee, con esto, el usuario utilizado en cuestion podra realizar cualquier tarea que necesite de un super usuario (dentro de ellas la instalacion de paquetes, necesaria para el siguiente paso). -
¿Como realizar una instalacion limpia? Antes de realizar el proceso de instalacion, es recomendable realizar una actualizacion al sistema de gestor de paquetes utilizado por CentOS, para esto es necesario seguir la siguiente cadena de comandos en su orden respectivo.
sudo yum clean all
->sudo yum update
->sudo yum upgrade
->reboot
. -
¿Que hace el comando source? Cuando se ejecuta un script o comando dentro de una consola, este crea un sub proceso (proceso hijo) el cual es ejecutado por la shell (proceso padre), si el comando o script ejecutado realiza modificaciones en las variables de entornos del sistema, estos no seran permanentes sino temporales hasta que la ejecucion del comando o script finalice. Para efectos del proceso de compilacion en la instalacion de ACS, se utiliza el comando
source
de Bash, el cual permite dejar de manera permanente los cambios realizados a la hora de ejecutar un comando o script.
Para la instalacion de ACS copie y pegue el siguiente comando, en una consola desde el usuario root, si no esta logeado como el usuario root use sudo -s
y luego el comando de instalacion. Cabe destacar que es necesario tener configurada la clave publica para el servicio SSH, necesaria para la compilacion del producto externo Ant, si esta no esta configurada porfavor dirigirse a la seccion de Referencias. Para el detalle de la instalacion porfavor continuar leyendo el documento:
cd /; yum clean all; yum update -y; yum upgrade -y; yum install -y ksh blas-devel expat-devel gcc-c++ byacc patch cvs subversion openssh git libX11-devel ncurses-devel gdbm-devel bzip2-devel zlib-devel sqlite-devel openssl-devel db4-devel openldap-devel freetype-devel libpng-devel libxml2-devel libxslt-devel gsl-devel flex epel-release doxygen autoconf213; yum list -y; yum install -y xemacs python-pip python-virtualenv; yum list -y; wget https://bootstrap.pypa.io/ez_setup.py -O - | python; git clone https://bitbucket.org/AlbertoHP/jdk; rpm -ivh /jdk/jdk-7u79-linux-i586.rpm; rm -rf /jdk; pip install virtualenv==13; git clone https://bitbucket.org/AlbertoHP/acs; unzip /acs/ACS-master.zip; cp -rf /ACS-master/ /ACS; rm -rf /ACS-master; rm -rf /acs; mkdir /alma; source /ACS/LGPL/acsBUILD/config/.acs/.bash_profile.acs; wget http://download1590.mediafire.com/79qptu7qobeg/tdy39pqhr9j644i/extprod.zip; unzip /extprod.zip; rm -rf /extprod.zip; rm -rf /ACS/ExtProd/PRODUCTS; cp -rf /AlbertoHP-acs_extprod-c7392bf99703 /ACS/ExtProd/PRODUCTS/; rm -rf /AlbertoHP-acs_extprod-c7392bf99703; cd /ACS/ExtProd/INSTALL/; source ./buildTools
Con esto los productos externos de ACS estaran instalados correctamente, posteriormente es necesario copiar los modulos de python al directorio alma creado anteriormente en la raiz del sistema, exportar las variables de entorno y realizar el make para la instalacion de ACS:
cd /ACS/ExtProd/INSTALL/; export MAKE_NOSTATIC=yes; export MAKE_NOIFR_CHECK=on; cd /ACS; make
- Nombre del paquete: epel-release (
sudo yum install epel-release
) - Nombre del paquete: ksh (
sudo yum install ksh
) - Nombre del paquete: blas-devel (
sudo yum install blas-devel
) - Nombre del paquete: expat-devel (
sudo yum install expat-devel
) - Nombre del paquete: jdk-1.7.0 (Descargado desde http://www.oracle.com/technetwork/es/java/javase/downloads/jdk7-downloads-1880260.html)
- Nombre del paquete: pip (
sudo yum install python-pip
) - Nombre del paquete ez_setup (
wget https://bootstrap.pypa.io/ez_setup.py -O - | python
) - Nombre del paquete: gcc-g++ (
sudo yum install gcc-c++
) - Nombre del paquete: byacc (
sudo yum install byacc
) - Nombre del paquete: patch (
sudo yum install patch
) - Nombre del paquete: cvs (
sudo yum install cvs
) - Nombre del paquete: subversion (
sudo yum install subversion
) - Nombre del paquete: openssh (
sudo yum install openssh
) - Nombre del paquete: git (
sudo yum install git
) - Nombre del paquete: libX11-devel (
sudo yum install libX11-devel
) - Nombre del paquete: libncurses-devel (
sudo yum install ncurses-devel
) - Nombre del paquete: libgdbm-devel (
sudo yum install gdbm-devel
) - Nombre del paquete: libbz2-devel (
sudo yum install bzip2-devel
) - Nombre del paquete: zlib-devel (
sudo yum install zlib-devel
) - Nombre del paquete: libsqllite3-devel (
sudo yum install sqlite-devel
) - Nombre del paquete: openssl-devel (
sudo yum install openssl-devel
) - Nombre del paquete: libdb4.5-devel (
sudo yum install db4-devel
) - Nombre del paquete: openldap-devel (
sudo yum install openldap-devel
) - Nombre del paquete: libfreetype-devel (
sudo yum install freetype-devel
) - Nombre del paquete: libpng12-devel (
sudo yum install libpng-devel
) - Nombre del paquete: libxml2-devel (
sudo yum install libxml2-devel
) - Nombre del paquete: libxslt-devel (
sudo yum install libxslt-devel
) - Nombre del paquete: python-virtualenv (
sudo yum install python-virtualenv
) - Nombre del paquete: gsl-devel (
sudo yum install gsl-devel
) - Nombre del paquete: flex (
sudo yum install flex
) - Nombre del paquete: xemacs (
sudo yum install xemacs
) - Nombre del paquete: doxygen (
sudo yum install doxygen
) - Nombre del paquete: autoconf2.1 (
sudo yum install autoconf213
) - Nombre del paquete: bc (Este paquete ya se encuentra instalado)
- Nombre del paquete: autoconf (Este paquete ya se encuentra instalado)
- Nombre del paquete: util-linux (Este paquete ya se encuentra instalado)
- Nombre del paquete: unzip (Este paquete ya se encuentra instalado)
- Nombre del paquete: time (Este paquete ya se encuentra instalado)
- Nombre del paquete: gcc (Este paquete ya se encuentra instalado)
- Nombre del paquete: make (Este paquete ya se encuentra instalado)
- Nombre del paquete: gcc-fortran (Este paquete ya se encuentra instalado)
- Nombre del paquete: vim (Este paquete ya se encuentra instalado)
- Nombre del paquete: libncursesw-devel (Este paquete ya se encuentra instalado)
- Nombre del paquete: readline (Este paquete ya se encuentra instalado)
- Nombre del paquete: gdbm (Este paquete ya se encuentra instalado)
- Nombre del paquete: xemacs-sumo (Este paquete ya se encuentra instalado)
- Nombre del paquete: sunrpc (Se ha optado por ignorar este paquete)
- Nombre del paquete: mintty (Se ha optado por ignorar este paquete)
Para esta etapa de la instalacion, es necesario importar el codigo fuente desde el repositorio de ALMA mediante el siguiente comando cd /
y posteriormente sudo git clone https://github.com/ACS-Community/ACS
, este proceso puede tomar mucho tiempo dependiendo de la conexion de red (Con una descarga de 2 Mb/s el proceso tarda al rededor de 30 minutos).
-
Es necesario crear el directorio de alma mediante el comando
sudo mkdir /alma/
y cambiar el propietario de esta al usuario que realizara la compilacion mediante el comandosudo chown -R <user> /alma
en este caso el usuario es alberto por lo que el comando quedaria comosudo chown -R Alberto /alma
. -
Para la correcta compilacion de todos los productos externos de ACS, es necesario tener definida las variables de entorno de manera correcta ya que si alguna de estas esta mal definida o no existe, la instalacion de cualquiera de los modulos es propensa a fallar. Cuando se copia el codigo fuente, viene en el un bash con la definicion de todas las variables de entorno que la compilacion necesita. Para su correcta carga primero nos ubicaremos como usuario root mediante el comando
sudo -s
, y posteriormente cargaremos las variables de entorno a nuestra bash mediante el comandosource /ACS/LGPL/acsBUILD/config/.acs/.bash_profile.acs
, con esto todas las variables de entorno deberian haber sido cargadas en la bash actual. A modo de prueba una vez realizado el comando anterior al ver a donde apunta por ejemplo la variableACE_ROOT
mediante el siguiente comandoecho $ACE_ROOT
deberia apuntar a/alma/ACS-2015.4/TAO/ACE_wrappers/build/linux
. -
Una vez comprobado el correcto funcionamiento de las variables de entorno, es necesario descargar los productos externos utilizados por la compilacion de ACS, mediante el comando
cd ACS/ExtProd/PRODUCTS
y luegosource ./download-products.sh
. -
Una vez descargados los ficheros necesarios para la compilacion de los productos externos que ACS utiliza, es necesario compilarlos mediante comando
cd /ACS/ExtProd/INSTALL
y luegosource ./buildTools
. Cabe destacar que dicho proceso puede tardar varios minutos incluso horas dependiendo del procesador del equipo, ademas que es necesaria la conexion a internet para una correcta compilacion. -
A veces, la compilacion del modulo buildPyModules a pesar de que aparece como compilada (OK) esta en realidad no lo esta, debido a que no es capaz de obtener librerias tales como pytz, six, numpy, etc. Para asegurarnos de que el Python con el que trabajara ACS tiene las librerias necesarias tipiaremos el siguiente comando
sudo -s
seguido derm -rf /alma/ACS-2015.4/Python/lib/python2.6; cp -rf /usr/lib/python2.6/ /alma/ACS-2015.4/Python/lib/; rm -rf /alma/ACS-2015.4/Python/include/python2.6; cp -rf /usr/include/python2.6/ /alma/ACS-2015.4/Python/include/; rm -rf /alma/ACS-2015.4/Python/bin/python; rm -rf /alma/ACS-2015.4/Python/bin/python2.6; cp -rf /usr/bin/python /alma/ACS-2015.4/Python/bin/; cp -rf /usr/bin/python2.6 /alma/ACS-2015.4/Python/bin/; cd /ACS/ExtProd/INSTALL/; source ./buildPyModules
-
Una vez compiladas todos los productos externos de ACS, entonces es necesario como paso previo a la compilacion de ACS definir dos nuevas variables de entorno mediante los comandos
export MAKE_NOSTATIC=yes
yexport MAKE_NOIFR_CHECK=on
-
Por ultimo, ya es posible realizar la compilacion de ACS. Si el proceso es ejecutado en un equipo con procesador multinucleo entonces la compilacion se realizara mediante el siguiente comando
cd /ACS
seguido porMAKE_PARS=" -j nNucleos " make
donde nNucleos es el numero de nucleos que posea el equipo en el que se trabaja. En este caso el equipo posee 2 nucleos por lo que el comando se ejecutario asiMAKE_PARS=" -j 2 " make
. En caso de que el procesador no sea multinucleo entonces la compilacion se realizara mediante el siguiente comandocd /ACS
seguido pormake
.
Si todos los pasos anteriores fueron realizados tal y como se mencionan en el presente documento, entonces es necesario realizar los ultimos ajustes para poder ejecutar correctamente los servicios de ACS, los cuales seran detallados en pasos a continuacion.
-
Es necesario instalar un paquete adicional, el cual se instala mediante el siguiente comando
yum install -y procmail
y posteriormente realizando unyum update -y
seguido poryum upgrade -y
y por ultimoyum list -y
. -
Es necesario verificar que el archivo de host de linux este bien configurado, si no es asi probablemente ACS no pueda iniciar sus servicios. Es por eso que el fichero
/etc/hosts
sera usado como la interface de red de ACS para la red de comunicaciones de ACS. Esta interface puede ser el loopback local o bien no. Lo importante es que esta este mapeada de manera correcta a una direccion de red (IP).Por ejemplo si la maquina que ejecutara ACS se llama
acsvm
, su dominio fuera localdomain, y la direccion de red de su adaptador de red fuera10.0.0.100
. Si se deseara utilizar el adaptador de red local entonces el fichero/etc/hosts
deberia lucir asi:
10.0.0.100 acsvm acsvm.localdomain
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
En caso de que se se desee utilizar el loopback local (No habra comunicacion con el entorno de la red solo a nivel local de la maquina) entonces el fichero `/etc/hosts` deberia lucir asi:
127.0.0.1 acsvm acsvm.localdomain localhost localhost.localdomain localhost4 localhost4.localdomain4
-
Instalacion de paquetes rpm en CentOS: http://www.linux-es.org/node/672
-
Configuracion de variables de entorno basicas: http://www.webtutoriales.com/articulos/configurar-variables-de-entorno-en-linux
-
Como fucniona el comando source: http://www.aradaen.com/tips-y-trucos/comando-source-evitando-la-creacion-de-subprocesos-en-bash/
-
Como funciona el comando yum: http://www.linuxcommand.org/man_pages/yum8.html
-
Como utilizar git: http://rogerdudler.github.io/git-guide/index.es.html
-
Obtencion de clave publica y privada para la comunicacion SSH: https://www.jsitech.com/linux/autenticacion-mediante-llaves-publicas-y-privadas-opensshcentos/
#PROBLEMAS
En esta seccion se detallan los problemas que van surgiendo durante la instalacion del software, y a medida que se van solucionando tambien se comentan sus soluciones, en primera instancia estan los problemas presentados con los productos externos de ACS y luego los problemas presentados durante la compilacion del propio ACS.
-
buildAnt -> error de Java en testURLKeystoreHTTP (Unico error de 1666 test realizados, compilacion exitosa pero los test no).
-
SOLUCION: Este error se produce cuando la conexion es interrumpida, es un error en un test por lo que no significa mayor problema. Como solucion, se recomienda encarecidamente asegurar la conexion a internet (Buena conexion a internet) antes de realizar la instalacion de ACS.
-
buildPyModules -> No puede importar el modulo pytz, pero si esta en el sistema. Al parecer hay un problema con las variables de entorno o el source que se utiliza en el bash.
-
SOLUCION: Primero
sudo -s
y luegopip install virtualenv==13
. -
buildTAO -> Compilacion exitosa, pero dentro del registro se encontro que falta el siguiente archivo DLSYM_VX.patch .
-
buildTcltk -> Compilacion exitosa, pero dentro del registro se encontro que falta el siguiente archivo /ACS/ExtProd/PRODUCTS/tcltk/TclTk8.5.15-Linux-2.6.32-642.4.2.el6.i686-NO_MSQL .
-> AltKeyInDialog AmpMenuArgs AmpWidget ButtonAutoInvoke ButtonDown ButtonEnter ButtonInvoke ButtonLeave ButtonUp CancelRepeat CheckEnter CheckInvoke CheckLeave CheckRadioInvoke EntryAutoScan EntryBackspace EntryButton1 EntryClosestGap EntryGetSelection EntryInsert EntryKeySelect EntryMouseSelect EntryNextWord EntryPaste EntryPreviousWord EntryScanDrag EntryScanMark EntrySeeInsert EntrySetCursor EntryTranspose EventMotifBindings FindAltKeyTarget FirstMenu GenerateMenuSelect GetSelection ListboxAutoScan ListboxBeginExtend ListboxBeginSelect ListboxBeginToggle ListboxCancel ListboxDataExtend ListboxExtendUpDown ListboxMotion ListboxSelectAll ListboxUpDown MbButtonUp MbEnter MbLeave MbMotion MbPost MenuButtonDown MenuDownArrow MenuEscape MenuFind MenuFindName MenuFirstEntry MenuInvoke MenuLeave MenuLeftArrow MenuMotion MenuNextEntry MenuNextMenu MenuRightArrow MenuUnpost MenuUpArrow PlaceWindow PostOverPoint RestoreFocusGrab RestoreOldGrab SaveGrabInfo ScaleActivate ScaleButton2Down ScaleButtonDown ScaleControlPress ScaleDrag ScaleEndDrag ScaleIncrement ScreenChanged ScrollButton2Down ScrollButtonDown ScrollButtonUp ScrollByPages ScrollByUnits ScrollDrag ScrollEndDrag ScrollSelect ScrollStartDrag ScrollToPos ScrollTopBottom SetAmpText SetFocusGrab SourceLibFile TabToWindow TextAnchor TextAutoScan TextButton1 TextClosestGap TextCursorInSelection TextInsert TextKeyExtend TextKeySelect TextNextPara TextNextPos TextNextWord TextPasteSelection TextPrevPara TextPrevPos TextResetAnchor TextScanDrag TextScanMark TextScrollPages TextSelectTo TextSetCursor TextTranspose TextUpDownLine TraverseToMenu TraverseWithinMenu UnderlineAmpersand button canvas checkbutton entry frame label labelframe listbox mc mcmax mcmaxamp menubutton message panedwindow pkgconfig radiobutton scale scrollbar spinbox text toplevel
FAILED
->> AltKeyInDialog AmpMenuArgs AmpWidget ButtonAutoInvoke ButtonDown ButtonEnter ButtonInvoke ButtonLeave ButtonUp CancelRepeat CheckEnter CheckInvoke CheckLeave CheckRadioInvoke EntryAutoScan EntryBackspace EntryButton1 EntryClosestGap EntryGetSelection EntryInsert EntryKeySelect EntryMouseSelect EntryNextWord EntryPaste EntryPreviousWord EntryScanDrag EntryScanMark EntrySeeInsert EntrySetCursor EntryTranspose EventMotifBindings FindAltKeyTarget FirstMenu GenerateMenuSelect GetSelection ListboxAutoScan ListboxBeginExtend ListboxBeginSelect ListboxBeginToggle ListboxCancel ListboxDataExtend ListboxExtendUpDown ListboxMotion ListboxSelectAll ListboxUpDown MbButtonUp MbEnter MbLeave MbMotion MbPost MenuButtonDown MenuDownArrow MenuEscape MenuFind MenuFindName MenuFirstEntry MenuInvoke MenuLeave MenuLeftArrow MenuMotion MenuNextEntry MenuNextMenu MenuRightArrow MenuUnpost MenuUpArrow PlaceWindow PostOverPoint RestoreFocusGrab RestoreOldGrab SaveGrabInfo ScaleActivate ScaleButton2Down ScaleButtonDown ScaleControlPress ScaleDrag ScaleEndDrag ScaleIncrement ScreenChanged ScrollButton2Down ScrollButtonDown ScrollButtonUp ScrollByPages ScrollByUnits ScrollDrag ScrollEndDrag ScrollSelect ScrollStartDrag ScrollToPos ScrollTopBottom SetAmpText SetFocusGrab SourceLibFile TabToWindow TextAnchor TextAutoScan TextButton1 TextClosestGap TextCursorInSelection TextInsert TextKeyExtend TextKeySelect TextNextPara TextNextPos TextNextWord TextPasteSelection TextPrevPara TextPrevPos TextResetAnchor TextScanDrag TextScanMark TextScrollPages TextSelectTo TextSetCursor TextTranspose TextUpDownLine TraverseToMenu TraverseWithinMenu UnderlineAmpersand button canvas checkbutton entry frame label labelframe listbox mc mcmax mcmaxamp menubutton message panedwindow pkgconfig radiobutton scale scrollbar spinbox text toplevel
FAILED
-
buildOpenSpliceDDS -> Compilo bien, pero al leer el registro falta /ACS/ExtProd/INSTALL/../PRODUCTS/OpenSpliceDDSV5.3-x86.linux2.6-gcc412-gnuc25-HDE.tar.gz y luego se detonan muchos ficheros no encontrado.
-
buildJacORB -> Compila bien, pero al leer el registro no puede conectarse a un repositorio git scm:git:[email protected]:JacORB/JacORB.git/jacorb-services y una serie de repos mas.
-
A la hora de realizar la compilacion de ACS, no se encuentra el package de java
alma.ACSErr.ErrorTrace
-
SOLUCION: Este paquete se instalo correctamente, luego del fix del modulo de buildPyModules.
-
Estos paquetes no se instalan al hacer el make:
-
SOLUCION: Todos los paquetes fueron instalados exitosamente, luego del fix del modulo de buildPyModules.