Translate

lunes, 23 de agosto de 2021

Instalación de Tkgate 2.2 en CentOS 7

 Instalación de Tkgate 2.2  en CentOS 7

 

  • Cerciórese de que tiene instalado el repositorio EPEL.
yum -y install epel-release

cd
cd Downloads
wget -c https://lab.anahuac.mx/rpms/tkgate/electronics-menu-1.0-7.el6.noarch.rpm
wget -c https://lab.anahuac.mx/rpms/tkgate/tkgate-2.2-1.el7.x86_64.rpm

 
Estos paquetes se construyeron a partir del código fuente de Fedora y de Bitbucket.org:

https://koji.fedoraproject.org/koji/buildinfo?buildID=1549948

Y de una versión más actualizada en:

https://bitbucket.org/starling13/tkgate/src/default/

 ( Esta liga ya no funciona )

  • Instalar los paquetes (como root). Por ejemplo:

 su -c "yum -y install electronics-menu-1.0-24.el7.noarch.rpm tkgate-2.2-1.el7.x86_64.rpm" 

 

El armado del RPM está basado en:

https://rpm-packaging-guide.github.io/

jueves, 17 de junio de 2021

Configuración multiusuario de Anaconda y Conda en Linux CentOS 7

Conda es un gestor de paquetes , aplicaciones y ambientes:

conda -h  |grep 'conda is'
conda is a tool for managing and deploying applications, environments and packages.

Anaconda es una distribución de python que incluye conda

Miniconda es un instalador que también usa conda para paquetes no necesariamente de python


Todo esto está bien si no se tiene una distribución instalada científica de Linux. La idea es que los usuarios de sistemas operativos diferentes a Linux puedan usar fácilmente los paquetes y distribuciones que no están normalmente presentes en sus sistemas. Incluso los usuarios principiantes de Linux tienen estas opciones para 'instalar' fácilmente paquetes y ambientes de trabajo.

 

Ahora bien, si ya se cuenta con una distribución de Linux multiusuario y sus correspondientes paquetes y gestores de paquetes, surgen varias preguntas:

  • ¿Cómo aprovechar las ventajas de estos programas de gestión de paquetes en un ambiente multiusuario de Linux? 
  • ¿Cómo hacer para que no se repitan innecesariamente los programas, ambientes, etc., por cada uno de los usuarios del sistema operativo?
  • ¿Cómo hacer para que no se esté bajando para cada usuario su ambiente de trabajo y este ambiente pueda ser compartido entre varios usuarios?

Para esto, existe cierta documentación, pero no está muy claro que es lo que hay que hacer en concreto. 

Justamente es por ello que se hizo este documento.

 

Como usuario root:

1. Crear un usuario de administración de instalación de ambientes de conda y ponerle una contraseña:

useradd conda

passwd conda

 

Esta cuenta será la que instalará los ambientes, paquetes y programas necesarios que serán compartidos todos los usuarios. Cada ambiente podrá ser empleado por cualquiera de los usuarios del sistema como se describe más adelante

2. Crear un directorio donde se guardarán los paquetes y ambientes. Hacer que el directorio tenga como usuario y grupo propietarios el de usuario administrador de paquetes ( en este caso 'conda'):

mkdir /opt/conda

chown conda: /opt/conda


3. Generar un script de entrada al sistema para que le ponga a los usuarios, las variables de ubicación de los ambientes y paquetes compartidos.

cd /etc/profile.d

echo<<EOF_script.sh> conda-env.sh

export CONDA_PKGS_DIRS="/opt/conda/pkgs","/home/$USER/.conda/pkgs"
export CONDA_ENVS_DIRS="/opt/conda/envs"

EOF_script

 

4. Entrar ahora con el usuario adminstrador de paquetes ( en nuestro ejemplo 'conda' ) para crear e instalar un ambiente con sus paquetes necesarios

 su - conda

5. Verificar los ambientes de trabajo disponibles. Por ejemplo:

conda env list

# conda environments:
#
conda                    /opt/conda/envs/conda
datascience              /opt/conda/envs
base                     /usr

6. Crear un archivo de creación de ambiente e instalación de paquetes:

echo<<EOF_bioenv> bio.yml

name: bio
channels:
  - bioconda
  - conda-forge
dependencies:
 - vsnp
 - freebayes
 - openpyxl

EOF_bioenv


7. Instalar ambiente y paquetes a partir del archivo de configuración/instalación yml ( Nota: Este paso puede durar mucho tiempo):

conda env create -f bio.yml


8. Verificar nuevo ambiente instalado:

conda env list
# conda environments:
#
bio                      /opt/conda/envs/bio
conda                    /opt/conda/envs/conda
datascience              /opt/conda/envs/datascience
base                  *  /usr

Como se puede ver, los paquetes en este caso están instalados en /opt/conda. Podemos verificar el usuario y grupos propietarios de los paquetes. Por ejemplo:

ls -ald /opt/conda/*
drwxr-xr-x.   5 conda conda    77 Jun 14 21:56 envs
drwxr-xr-x. 317 conda conda 32768 Jun 14 22:11 pkgs


9. Activar el ambiente instalado con:

[conda@science install]$ conda activate bio
(bio) [conda@science install]$

10. Una vez instalado el ambiente es posible instalar mostrar cuales paquetes han sido instalados en este. Si ya está activo el ambiente se puede poner:

(bio) $ conda list
# packages in environment at /opt/conda/envs/bio:
#
# Name                    Version                   Build  Channel
_libgcc_mutex             0.1                 conda_forge    conda-forge
_openmp_mutex             4.5                       1_gnu    conda-forge
_r-mutex                  1.0.1               anacondar_1    conda-forge
abyss                     2.3.1                hd403d74_0    bioconda
alsa-lib                  1.2.3                h516909a_0    conda- 

( ... se quitaron muchas lineas)
zlib                      1.2.11            h516909a_1010    conda-forge
zstd                      1.5.0                ha95c52a_0    conda-forge

 
O si se prefiere de otro ambiente ( por ejemplo 'datascience'):

conda list -n datascience

 

11.Los usuarios que van a usar estos ambientes compartidos se tendrán que agregar al mismo grupo que el usuario de administración de paquetes.  De esta manera los usuarios podrán leer estos archivos. Por ejemplo, si el grupo del administrador de paquetes es 'conda', el usuario se agregará a este grupo. Supongamos que el usuario es 'jperez, entonces se pondrá (como usuario root):

# id jperez
uid=1008(jperez) gid=1002(investigadores) groups=1002(investigadores)

# usermod -a -G conda jperez 

# id jperez
uid=1008(jperez) gid=1002(investigadores) groups=1002(investigadores),1007(conda)


12. Ahora el usuario entrará a su cuenta para que se ejecute el script de inicialización de variables de ambiente de conda ( que se creó en el punto 3) y podrá activar este ambiente y paquetes compartido. Por ejemplo:

$ whoami
jperez

$ conda env list
# conda environments:
#
bio                      /opt/conda/envs/bio
conda                    /opt/conda/envs/conda
datascience              /opt/conda/envs/datascience
base                  *  /usr
 

$ conda activate bio

 (bio) $


Algunos comandos del gestor conda:

1) Ver enviroments (ambientes) con:


conda env list

o

conda info --envs


2) Crear un nuevo enviroment con:

conda create --name myenv


3) Crear un nuevo enviroment myenv con ubicación en /opt/conda/pancho/envs/myenv y paquetes AAA BBB CCC:

conda create --name myenv

conda create --prefix  /opt/conda/pancho/envs/myenv AAA BBB CCC


Crear enviroment con confirmación explícita:

conda create -y -n bio


4) Activar un enviroment:

conda activate myenv

 

5) Desactivar enviromente con:

conda deactivate

 

6) Instalar nuevos paquetes en el ambiente activado:

conda install paquete1 paquete2

 

7) Borrar un enviroment:

conda remove --name myenv --all


8) Copiar enviroment para generar archivo de instalación ( y poder compartirlo posteriormente ) con:

conda env export > environment.yml


9) Importar el enviroment con:

conda env create -f environment.yml


Algunas referencias

  1. https://bioconda.github.io/contributor/faqs.html#conda-anaconda-minconda 
  2. https://bioconda.github.io/user/install.html#set-up-channels
  3. https://medium.com/@pjptech/installing-anaconda-for-multiple-users-650b2a6666c6
  4. https://docs.anaconda.com/anaconda/install/multi-user/
  5. https://docs.conda.io/projects/conda/en/latest/user-guide/configuration/admin-multi-user-install.html
  6. https://stackoverflow.com/questions/27263620/how-to-install-anaconda-python-for-all-users
  7. https://bioconda.github.io/contributor/faqs.html#recipe-vs-package
  8. https://projects.ncsu.edu/hpc/Software/Apps.php?app=Conda
  9. https://bioconda.github.io/user/install.html#install-conda

 



lunes, 7 de diciembre de 2020

Moodle with Coderunner plugin, Jobe Sandbox and HTTPs CentOS 6

Moodle with Coderunner plugin, Jobe Sandbox and HTTPs CentOS 6

First, follow install instructions from:

Be sure to enable jobesandbox in Coderunner plugin configuration.

Coderunner uses Jobe sandbox by default but the http protocol is hardwired in file  jobesandbox.php. To change to https, just modify file:

/var/www/moodle/web/question/type/coderunner/classes/jobesandbox.php

In :

$protocol = 'http://';

Change to:

$protocol = 'https://';


jueves, 3 de diciembre de 2020

Instalación de php 7.0 para Moodle 3.8 en CentOS 6

1. Instalamos el SCL (Software collection ):
sudo yum install centos-release-scl

2. Instalamos la colección:
sudo yum install rh-php70

En mi caso, esto además instaló:
rh-php70-php-cli.x86_64 0:7.0.27-2.el6                rh-php70-php-common.x86_64 0:7.0.27-2.el6          
  rh-php70-php-json.x86_64 0:7.0.27-2.el6               rh-php70-php-pear.noarch 1:1.10.1-3.el6            
  rh-php70-php-process.x86_64 0:7.0.27-2.el6            rh-php70-php-xml.x86_64 0:7.0.27-2.el6             
  rh-php70-php-zip.x86_64 0:7.0.27-2.el6                rh-php70-runtime.x86_64 0:2.3-1.el6     



3. Habilitamos script para que modifique las variables de ambiente y tome la nueva versión de php:

cd /etc/profile.d/
cat<<EOF_PHP70>rh-php70.sh
#!/bin/bash
source scl_source enable rh-php70

EOF_PHP70

4. Ejecutamos y verificamos versión:

. ./rh-php70.sh
  php --versionPHP 7.0.27 (cli) (built: Nov  6 2019 09:34:24) ( NTS )
Copyright (c) 1997-2017 The PHP Group
Zend Engine v3.0.0, Copyright (c) 1998-2017 Zend Technologies

which php
/opt/rh/rh-php70/root/usr/bin/php



5. Instalación del módulo para PostgreSQL y PHP para Apache:
yum -y install rh-php70-php-pgsqlrh-php70 rh-php70-php rh-php70-php-gd rh-php70-php-mbstring

6. Activación de AWS con php70. Respaldamos módulo original:
mv /etc/httpd/conf.d/php.conf /etc/httpd/conf.d/php54.off

7. 

Referencias:
Instalación de SCL rh-php70
NextCloud - Instalación de php 7.0

[SOLVED] Correction of: CentOS 6.10 Centos 6 : YumRepo Error: All mirror URLs are not using ftp, http[s] or file.

 

 CentOS 6 is ending and after a yum update, if it gives the error:

# yum update
Loaded plugins: fastestmirror, refresh-packagekit, security
Setting up Update Process
Loading mirror speeds from cached hostfile
YumRepo Error: All mirror URLs are not using ftp, http[s] or file.
 Eg. Invalid release/repo/arch combination/
removing mirrorlist with no valid mirrors: /var/cache/yum/x86_64/6/base/mirrorlist.txt
Error: Cannot find a valid baseurl for repo: base
 

 You can fix it with:

echo "https://vault.centos.org/6.10/os/x86_64/"       >/var/cache/yum/x86_64/6/base/mirrorlist.txt
echo "https://vault.centos.org/6.10/extras/x86_64/"   >/var/cache/yum/x86_64/6/extras/mirrorlist.txt
echo "https://vault.centos.org/6.10/updates/x86_64/"  >/var/cache/yum/x86_64/6/updates/mirrorlist.txt

# These are optional ( if they are installed in your system):
if [ -f /var/cache/yum/x86_64/6/centos-sclo-rh/mirrorlist.txt ]; then
   echo "https://vault.centos.org/6.10/sclo/x86_64/rh/"  >/var/cache/yum/x86_64/6/centos-sclo-rh/mirrorlist.txt
fi
if [ -f  /var/cache/yum/x86_64/6/centos-sclo-sclo/mirrorlist.txt ]; then
  echo "https://vault.centos.org/6.10/sclo/x86_64/sclo/">/var/cache/yum/x86_64/6/centos-sclo-sclo/mirrorlist.txt
fi  

Voila!

References:

 https://www.linuxquestions.org/questions/centos-111/yumrepo-error-centos-5-9-a-4175604669/

miércoles, 11 de noviembre de 2020

Instalación de MathJax 2.7.9 para Moodle en CentOS 6

 El MathJax sirve como sustituto de Tex, pero por omisión no viene correctamente configurado ( al menos en la versión 3.2.9 de Moodle ) ya que se agregaron y modificaron los paths en la versión 3 de MathJax, por lo que puede que no funcione la configuración por omisión.

 

Se recomienda bajar el MathJax y accederlo localmente.

1. Bajar como root el MathJax 2.7.9 de:

https://github.com/mathjax/MathJax/releases

https://github.com/mathjax/MathJax/releases/tag/2.7.9

Por ejemplo:

https://github.com/mathjax/MathJax/archive/2.7.9.tar.gz 


cd /var/www/html

mkdir ajax

wget https://github.com/mathjax/MathJax/archive/2.7.9.tar.gz

tar xvfz MathJax-2.7.9.tar.gz

 

2. En Moodle en:

 Administration->Site administration->Plugins->Filters->MathJax :

Poner en :

MathJax URL:     https://<hostname>/ajax/MathJax-2.7.9/MathJax.js

TeX filter compatibility:  (Check ) 


En : Administration->Site administration->Plugins->Manage Filters


Verificar que esté activado MathJax y que tenga precedencia sobre Tex.

Verificar también que esté activo el filtro enel curso en:


Administration->Course administration-> Filters



Instalación de STACK plugin para Moodle en Centos 6

 Instalación de STACK plugin para Moodle en Centos 6

 Nota: Solo ha funcionado con Maxima versión 5.36.1 . No se logró hacer funcionar ni con versiones previas, ni con versiones posteriores.

Verificado en :

$ distro
Name: CentOS release 6.10 (Final)
Version: 6.10 (Final)
Codename: Final

 $ rpm -qv maxima maxima-gui maxima-runtime-sbcl sbcl wxmaxima php httpd postgresql
maxima-5.36.1-2.el6.x86_64
maxima-gui-5.36.1-2.el6.x86_64
maxima-runtime-sbcl-5.36.1-2.el6.x86_64
sbcl-1.0.38-3.el6.x86_64
package wxmaxima is not installed
php-5.6.40-22.el6.remi.x86_64
httpd-2.2.15-69.el6.centos.x86_64
postgresql-8.4.20-8.el6_9.x86_64



Configuración de Moodle:

Moodle 3.2.9 (Build: 20180517)

Configuración de STACK:

STACK
qtype_stack
4.2 for Moodle 3.0+

 

Platform type:                     ( Linux optimized)

Maxima version:                 default

20

CAS result caching:            Cache in the database

Maxima command:            /home/ext-root-fs/var/www/moodle/data/stack/maxima_opt_auto  -eval '(cl-user::run)'           

Maths filter:                       Moodle Tex filter

 

Ejecución optimizada de Maxima.

Después de ejecutar STACK Healthcheck, es necesario generar el ejecutable optimizado de maxima con el botón: 'Create Maxima image'

 

Reporte de funcionamiento ( STACK Healthcheck):


unix-optimised
OKYou have chosen the "default" version of Maxima, so no Maxima version checking is being done. Your raw connection is actually using version "5.36.1" (36.1). CAS returned data as expected. You have a live connection to the CAS.
OKCorrect and expected STACK-Maxima library version being used (2018073000).

CAS results are being cached in the database.

 

 Creación de RPMs de maxima:

http://rpms.remirepo.net/rpmphp/zoom.php?rpm=maxima

wget http://archive.fedoraproject.org/pub/archive/fedora/linux/updates/22/SRPMS/m/maxima-5.36.1-2.fc22.src.rpm

rpm -ivh  maxima-5.36.1-2.fc22.src.rpm

cd ~/rpmbuild/SPECS

rpmbuild -bb  maxima.spec

cd ../RPMS/x86_64/

sudo rpm -ivh maxima-5.36.1-2.el6.x86_64.rpm maxima-gui-5.36.1-2.el6.x86_64.rpm  maxima-runtime-sbcl-5.36.1-2.el6.x86_64.rpm


 

Referencias:

Instalación en CentOS

https://moodle.org/mod/forum/discuss.php?d=270956 

Instrucciones de instalación:

https://lab.anahuac.mx/moodle/question/type/stack/doc/doc.php/Installation/index.md

Optimización de ejecución de Maxima

https://lab.anahuac.mx/moodle/question/type/stack/doc/doc.php/CAS/Optimising_Maxima.md 

 

sábado, 15 de agosto de 2020

Instalación de Tkgate 2.2 en CentOS 8

 Instalación de Tkgate 2.2  en CentOS 8

 

  • Cerciórese de que tiene instalado el repositorio EPEL.
yum -y install epel-release

cd
cd Downloads
wget -c https://lab.anahuac.mx/rpms/tkgate/electronics-menu-1.0-24.el8.noarch.rpm
wget -c https://lab.anahuac.mx/rpms/tkgate/tkgate-2.2-1.el8.x86_64.rpm

 
Estos paquetes se construyeron a partir del código fuente de Fedora y de Bitbucket.org:

https://koji.fedoraproject.org/koji/buildinfo?buildID=1549948

Y de una versión más actualizada en:

https://bitbucket.org/starling13/tkgate/src/default/

 ( Esta liga ya no funciona )

  • Instalar los paquetes (como root). Por ejemplo:

 su -c "yum -y install electronics-menu-1.0-24.el8.noarch.rpm tkgate-2.2-1.el8.x86_64.rpm" 

 

El armado del RPM está basado en:

https://rpm-packaging-guide.github.io/

lunes, 9 de marzo de 2020

Instalación de Python 3.6 ( SCL ) en Centos 6 / Redhat 6

Versiones más recientes de software, por ejemplo Python 3.6, pueden instalarse en Centos 6.x empleando los SCL (Software collection).

El CentOS 6.10 trae por ejemplo el paquete python-2.6.6-68.el6_10.x86_64.
Pero si se requiere instalar una versión más reciente como la 3.6 se tendrían que actualizar un conjunto de directorios y bibliotecas que afectarían a la instalación original.

En vez de emplear un contenedor, es suficiente cambiar unas cuantas variables de ambiente para que estas apunten a otros nuevos directorios que contendrán las nuevas bibliotecas, códigos fuentes, etc. necesarios para que corran estas nuevas versiones de software y así no afecten a la configuración original de la instalación del sistema. Esto es lo que justamente se resuelve con el SCL.


 Instalación del SCL
1. Instalar los repositorios CentOS-SCLo-scl.repo y de  CentOS-SCLo-scl-rh.repo, mediante:
yum -y install centos-release-scl install centos-release-scl-rh

2. Instalar scl-utlis si aún no está instalado:
yum -y install scl-utils

3. Si es que ya existen, se pueden verificar qué versiones hay ya instaladas de SCL de Python:
scl -l | grep -i python

4. En mi caso, se instaló la rh-python36:
yum -y install rh-python36 rh-python36-runtime

En este caso, se puede ver que el paquete rh-python36 queda instalado en un directorio alternativo que está a partir de  /opt y que además se crea una nuevo árbol de directorios que contiene los archivos, bibliotecas, etc. necesarios para que corra dicha versión:

cd /opt/rh/rh-python36
ls
enable  root
ls root
bin   dev   lib    media  opt   root  selinux  sys  usr
boot  home  lib64  mnt    proc  sbin  srv      tmp


Algunos directorios están vacíos, pero los directorios como lib y lib64 contienen las bibliotecas correspondientes que son requeridas por el python36.


5. Conforme se fueron necesitando diferentes bibliotecas se instalaron los siguientes paquetes:

rh-python36-python-libs-3.6.9-2.el6.x86_64
rh-python36-2.0-1.el6.x86_64
rh-python36-python-virtualenv-15.1.0-2.el6.noarch
rh-python36-python-setuptools-36.5.0-1.el6.noarch
rh-python36-python-3.6.9-2.el6.x86_64
rh-python36-python-pip-9.0.1-2.el6.noarch
rh-python36-python-nose-1.3.7-3.el6.noarch
rh-python36-numpy-1.13.1-1.el6.x86_64
rh-python36-runtime-2.0-1.el6.x86_64
rh-python36-numpy-f2py-1.13.1-1.el6.x86_64
rh-python36-python-devel-3.6.9-2.el6.x86_64
rh-python36-python-tkinter-3.6.9-2.el6.x86_64
rh-python36-scipy-0.19.1-2.el6.x86_64


Por ejemplo: instalación de las bibliotecas necesarias para el ploteo:

yum -y install rh-python36-python-tkinter.x86_64

O si se desea instalar todos los paquetes mencionados:

yum -y install rh-python36-python-libs-3.6.9-2.el6.x86_64 rh-python36-2.0-1.el6.x86_64 rh-python36-python-virtualenv-15.1.0-2.el6.noarch rh-python36-python-setuptools-36.5.0-1.el6.noarch rh-python36-python-3.6.9-2.el6.x86_64 rh-python36-python-pip-9.0.1-2.el6.noarch rh-python36-python-nose-1.3.7-3.el6.noarch rh-python36-numpy-1.13.1-1.el6.x86_64 rh-python36-runtime-2.0-1.el6.x86_64 rh-python36-numpy-f2py-1.13.1-1.el6.x86_64 rh-python36-python-devel-3.6.9-2.el6.x86_64 rh-python36-python-tkinter-3.6.9-2.el6.x86_64 rh-python36-scipy-0.19.1-2.el6.x86_64

6. Algunos paquetes se tuvieron que instalar con el 'pip' ( ¿Package installer for Python ? ). Por ejemplo:

pip install scipy


Lista de paquetes que se necesitarion instalar por medio de pip:

pip list
cycler (0.10.0)
kiwisolver (1.1.0)
matplotlib (3.2.0)
nose (1.3.7)
numpy (1.18.1)
pandas (1.0.1)
pip (9.0.1)
pyparsing (2.4.6)
python-dateutil (2.8.1)
pytz (2019.3)
scipy (0.19.1)
setuptools (36.5.0)
six (1.14.0)
virtualenv (15.1.0)

7. Si se desean instalar todos los paquetes anteriores podemos poner:
pip install cycler kiwisolver matplotlib nose numpy pandas pip pyparsing python-dateutil pytz scipy setuptools six virtualenv

pip install sklearn sklearn-glvq sklearn-lvq sklearn-evaluation skippy scikit-learn

Nota para scikit-learn y sklearn: Es necesario que en el mismo directorio no exista un archivo que se llame queue.py , ya qua este produce errores de compilación en el sistema. Si existe, es necesario cambiarle de nombre o quitqalo de allí.

8. En ocasiones suele pedir que se actualice el pip. ejemplo:
pip install --upgrade pip

9. Una vez instalado el nuevo SCL y los paquetes necesarios de Python, para cambiarse de contexto de instalación (modificación de las variables de ambiente) y ejecutar un programa en este nuevo contexto, simplemente se le pone:

scl enable rh-python36 bash

Por ejemplo, en el caso del ambiente de desarrollo Geany, para que levante con el Python 3.6, se le pone:

/usr/bin/scl enable rh-python36 /usr/bin/geany

o si se desea siempre trabajar con dicho ambiente, se puede modificar el profile del usuario cambiando las variables con el comando:

source scl_source enable rh-python36

Esto es necesario ya que si se ejecuta el comando de scl enable rh-python36 bash en el profile, este indefinidamente, en forma recursiva, levantará shells en cuanto entre el usuario a su cuenta.


Algunas referencias: