Herramientas de usuario

Herramientas del sitio


hpc:easybuild

Instalación de software científico

Gestor de paquetes EasyBuild

En nuestro HPC la instalación de software científico se realiza a través de la herramienta EasyBuild una plataforma modular para compilar e instalar software, escrito en Python. Que no requiere privilegios de administración para su uso, por lo que los mimos usuarios pueden hacer uso de EasyBuild para disponer de sus aplicaciones en el HPC y a través de la herramienta Lmd desplegarlas en su ambiente de trabajo y usarlas.

Inicialmente dio soporte a pocos paquetes de software, pero rápidamente se convirtió en una parte muy importante de las herramientas de soporte de usuario utilizadas por el equipo del HPC UGent. Hoy en día, EasyBuild 3.4.0 tiene soporte para 1331 paquetes de software (incluyedo toolchain y librerias) y está siendo desarrollado y mejorado continuamente.

EasyBuild permite limitar la cantidad de tiempo y esfuerzo necesarios para instalar y actualizar paquetes de software para el usuario final, solamente invirtiendo el tiempo necesario una sola vez para poner en práctica el procedimiento de instalación en un easyblock o quizás tan solo crear un archivo easyconfig. Compilaciones subsecuentes de nuevas versiones de un paquete de software o compilaciones que usan diferentes parámetros por lo general se puede obtener con muy poco o ningún esfuerzo, ahorrando así mucho de tiempo y mano de obra.

En abril de 2012, después de más de tres años de desarrollo interno en UGent, se lanzó EasyBuild en GitHub2 como software libre bajo la licencia GPLv2, siendo considerada la versión 1.0 la primera versión pública, estable y robusta de esta plataforma, también EasyBuild en su versión más reciente está disponible en (PyPi)3. Actualmente está publicada la versión 3.4.0 de EasyBuild.

EasyBuild solamente tiene dos dependencias directas: Python (Python 2.6 o superior) y módulos de entornos (Tcl/C) o Lmod).

EasyBuild confía fuertemente en los módulos de entorno, por lo que el paquete de software para gestionar módulos de entorno es un requisito previo importante. EasyBuild genera automáticamente los módulos de entorno para cada paquete de software que se instala, aliviando de este modo que el usuario tenga que crear manualmente archivos de módulos apropiados. Por otra parte, se basa en el conjunto de módulos de entornos disponibles para la obtención de información acerca de los paquetes de software instalados y para resolver las dependencias.

Mediante la generación de un módulo de entorno para cada instalación completa, EasyBuild permite mantener diferentes versiones sin que se afecten entre sí. Además de proporcionar acceso al paquete de instalación para los usuarios finales, estos módulos también ayudan a EasyBuild a localizar el software para instalaciones posteriores de otros paquetes de software dependientes de este, es decir, para resolver las dependencias.

Configuración de EasyBuild

EasyBuild pude ser configurado a través de tres vías diferentes o incluso usando una combinación apropiada de estas. Estas vías son:

  • Usando eb (comando principal de EasyBuild) con los argumentos correspondientes para las configuraciones.
  • Configurando directamente los valores de las variables de entornos ($EASYBUILD_…).
  • Proporcionando uno o más archivos de configuración.

Vía archivo de configuración

Por defecto EasyBuild usa el archivo de configuración si existe en las siguientes rutas:

  • /etc/easybuild.d/*.cfg, archivo de configuración global para EasyBuild
  • $HOME/.config/easybuild/config.cfg, archivo de configuración propio para cada usuario.

Si un usuario define el archivo de configuración en su $HOME pues este tendrá preferencia sobre el archivo global.

El archivo de configuración de EasyBuild sigue el formato de configuración por defecto de Python a través del módulo configparser. Este se organiza en secciones, el nombre de una sección para una opción de configuración particular se indica en la salida del comando eb –help. Algunos ejemplos de secciones son: MAIN, basic, config, informative, override, regtest, software, unittest, etc.

Las secciones se indican mediante la especificación del nombre de la sección entre corchetes, por ejemplo, [base]. Los ajustes de configuración se especifican siguiendo el formato key = value o key:value, sin usar comillas para los valores en forma de cadenas (string). Para las opciones de configuración booleanas, los valores que se evalúan como True (por ejemplo, true, 1,…) equivalen a habilitar la configuración.

Las líneas de comentarios comienzan con un carácter # (al igual que en el código Python).

Esto sería un ejemplo de un archivo de configuración de EasyBuild y mas detalles puede encontrar en el manual oficial en la parte de configuracion a través de archivos.

Vía variables de entorno

Todas las opciones de configuración que se listan con el comando eb –help también se pueden especificar mediante variables de entorno con el prefijo EASYBUILD_. Los valores de configuración especificados de esta manera siempre tienen prioridad sobre las opciones correspondientes que se especifican en un archivo de configuración. Por ejemplo, para habilitar el registro de depuración utilizando una variable de entorno:

$ export EASYBUILD_DEBUG=1

Si cualquier variable de entorno con el prefijo $EASYBUILD_ que se definen no corresponden a una opción de configuración conocida, EasyBuild informará un mensaje de error y finalizará su ejecución.

En el manual oficial de EasyBuild existen otros ejemplos del uso de variables de entorno para configurar EasyBuild.

Vía argumentos en la línea de comando

El tipo de configuración con la más alta prioridad son los argumentos de la línea de comandos eb, que prevalecen sobre los valores especificados a través de variables de entorno o en archivos de configuración. Para algunas opciones de configuración, ambos argumentos de línea de comandos largos y cortos están disponibles (ver eb –help); las opciones largas indican cómo el valor de configuración debe especificarse en un archivo de configuración o mediante una variable de entorno ($EASYBUILD_<LONGOPTION>).

Para las opciones de configuración booleanas, ambas variantes –<option> y <option>–disable están siempre disponibles.

Por ejemplo, para habilitar el registro de depuración (opción larga) y el registro de la salida estándar (opción corta) se utiliza:

$ eb –debug -l …

Para utilizar /dev/shm como ruta de compilación, instalar en la ruta temporal de instalación y desactivar el registro de depuración:

$ eb –buildpath=/dev/shm –installpath=/tmp/$USER –disable-debug …

Tambien puede encontrar mas detalles en el manual oficial de EasyBuild en la parte de configuracion a través de argumentos en la línea de comandos

¿Cómo usar EasyBuild?

EasyBuild posee una lista de argumentos a través de los cual el usuario invoca las funcionalidades que hacen de este una potente y amigable herramienta para la instalación de paquetes.

Básicamente para usar EasyBuild se debe invocar el comando eb seguido del archivo easyconfig a instalar y luego los argumentos.

Ejemplo para instalar el paquete HPL proporcionando el archivo easyconfig HPL-2.0-goolf-1.4.10.eb

$ eb HPL-2.0-goolf-1.4.10.eb –robot

El argumento –robot habilita la resolución automática de las dependencias.

También se pueden proporcionar más de un archivos easyconfig a la vez por ejemplo:

$ eb HPCG-2.1-goolf-1.4.10.eb GCC-4.8.3.eb

De esta forma EasyBuild también instala GCC.

Otra vía para la instalación de paquetes es usando el comando eb y no proporcionando el archivo easyconfig sino las opciones correspondientes para instalar el paquete.

$ eb –software-name=HPCG –toolchain=goolf,1.4.10

De esta forma EasyBuild compila e instala la última versión disponible de HPCG en un archivo easyconfig correspondiente al toolchain goolg 1.4.10.

A continuación, se listan los comandos comúnmente usados en EasyBuild:

–help /-H
–version
–list-toolchains
–list-easyblocks
–avail-easyconfig-params
–debug / -d
–force / -f
–search / -S
–robot / -r y –robot-paths
–dry-run / -D
–try-* (–try-toolchain), (–try-software-version), (–try-amend)

Mas detalles puede encontrar en http://easybuild.readthedocs.iomanual oficial de EasyBuild en la sección de Usando la línea de comandos de EasyBuild.

hpc/easybuild.txt · Última modificación: 2017/09/22 01:05 por mmartin