Linux

  • CentOS 7.3: ¡necesito actualizar a PHP 7 y no viene en los repositorios por defecto! { Notas de Laboratorio }

    CentOSphp7upgradeSCL

    Problema:

    Tengo una instancia de CentOS 7, con el clásico Apache funcionando y por requerimientos de versiones necesito actualizarme a PHP 7...pero no lo veo en los repositorios.

    Solución utilizada:

    • Utilizando una consola (vuelvo y lo confieso no he superado mi adicción a la interfaz de comandos, me hace sentir en matrix), iniciamos sesión con permisos administrativos (también se puede usar sudo) y agregamos el repositorio SCL (Software Collections), que incluye versiones actualizadas, como la requerida de php: yum install centos-release-scl
    • Instalamos nuestro php: yum install rh-php70 y las dependencias que necesitemos, se pueden listar con yum list rh-php70\*, en específico se requiere como mínimo soporte para mysql (si se usa) y el manejador de procesos php (FPM-PHP), una instalación básica podría ser: 
      • rh-php70-php-fpm
      • rh-php70-php-mysqlnd
      • rh-php70-php-gd
      • rh-php70-php-pspell
      • rh-php70-php-soap
      • rh-php70-php-bcmath
    • Decirle a apache que use fpm, en /etc/httpd/conf.d/php.conf:

    ...

    <FilesMatch \.php$>

    # SetHandler application/x-httpd-php

    SetHandler "proxy:fcgi://127.0.0.1:9000"

    </FilesMatch>

    ...

    • Si se necesitan configuraciones adicionales: php.ini esta en /etc/opt/rh/rh-php70/php.ini ...para correr el servicio FPM como otro usuario que no sea apache (tal vez nginx), eso se configuraría en /etc/php-fpm.d/www.conf (no olvidar reiniciar servicios)
    • Iniciar el servicio fpm: service rh-php70-php-fpm start (para dejarlo como autoarranque: systemctl enable rh-php70-php-fpm). No olvidar reiniciar apache: service httpd restart.

     

  • Cloud + Open Source + Azure

    Los invitamos una vez más a este nuevo taller donde aprenderemos como configurar y desplegar nuestro entorno de desarrollo web Open Source soportado en la plataforma Microsoft Azure.

    Nivel: Básico

    Cuándo
    Sede
    Vivelab Bogotá Av el dorado Carrera 45 No 26-33
    ¡Los esperamos!

    Inscripciones

    https://www.eventbrite.es/e/entradas-cloud-open-source-azure-24751616752

    ¡Entrada libre!

     

    Taller Open Source Azure
  • Cómo incrementar los valores de timeout para PHP en Apache

    5Mayo2016Timeout

    Problema:

    • Se necesita incrementar la cantidad de tiempo que le toma una aplicación en PHP para ejecutarse, antes de que nuestro servidor decida detener el proceso (PHP session timeout). Si bien conviene por eficiencia tener este valor bajo, hay aplicaciones que por diseño necesitan valores más altos, o situaciones específicas que lo requieren (actualización de aplicativos, carga de datos).

    Solución utilizada:

    • Si no se recuerda o conoce el manejador de PHP que se está ejecutando (¿cómo usa la máquina usa PHP?...por medio de mod_php (Apache DSO, Dinamic Shared Object), suPHP, FastCGI, CGI o PHP-FPM), un pequeño script en la carpeta web del sitio (el nombre del script lo colocan ustedes, la ruta depende del servidor), con las siguientes líneas, nos puede confirmar la ruta del archivo principal php.ini (obviamente no se recomienda tenerlo activo en producción):
      • <?php
        phpinfo();
        ?>
    • Hay dos variables a modificar: max_input_time (tiempo máximo disponible para desplegar/analizar datos de entrada para el script PHP) y max_execution_time (tiempo total permitido de ejecución para el script de PHP). Ambas tienen asignado por defecto 60 segundos, este sería el valor a incrementar (en una actualización de Moodle (por ejemplo) fué necesario aumentar su valor a 120 segundos).
    • Si se utiliza PHP por medio de PHP-FPM, es posible aumentar este valor en la variable request_terminate_timeout del archivo de configuración de este servicio.
    • Para que los cambios se actualicen en el sistema, es necesario reiniciar servicios:
      • service httpd reload
      • service php5-fpm reload #en caso de usar php-fpm

    Imagen Original (CC Atribución): https://flic.kr/p/aVdo7v

    Fuentes Consultadas:

  • Cómo montar particiones LVM desde el modo de rescate (CentOS/Fedora) { Notas de Laboratorio }

    LVM (By Emanuel DussThis vector image was created with Inkscape, and then manually edited by Perhelion. - Own work, CC BY-SA 3.0 de, https://commons.wikimedia.org/w/index.php?curid=11624545)

    Original Image: Emanuel Duss vector image created with Inkscape and manually edited by Perhelion. Own work, CC BY-SA 3.0

    Simplemente cómo nota de laboratorio, porque ya me ha pasado varias veces (y necesito anotarlo en algún lado), en un equipo que usa fedora (también sirve para CentOS) y tiene usuarios creativos, de esos que lo apagan a patadas, dejo para el registro el proceso para montar un Volumen Lógico.

    Después de que el usuario deja el equipo en modo de solicitud de restauración (esa consola negra que pide una constraseña administrativa para escanear los discos y restaurar el sistema)...si se tiene la fortuna de recordar la clave de root, no se tiene claro cómo montar ese maldito y sensual volumen lógico que se hizo cool al momento de instalación (LVM es una nota, pero si se retoma un equipo que no se ha tocado en años, puede quedar uno perdido por unos momentos).

    El procedimiento en consola de recuperación es:

    Revisar los volúmenes lógicos de la máquina:

    lvm vgscan -v

    Activar los volúmenes lógicos:

    lvm vgchange -ay

    Listar los volúmenes lógicos disponibles:

    lvm lvs -all

    Montar el volúmen requerido:

    mount /dev/volgroup/logvol /mountpoint

    Con el volúmen detectado y siendo capaces de montarlo, ya se puede recuperar al menos la información.

    Si por algún motivo se imaginan que este procedimiento es mio...pueees nop, agradezco al amigo Jim Zimmerman por hacer la tarea de registrarlo en su sitio, al menos aquí lo tienen en español, aunque con los comandos eso es irrelevante, y reitero, es una nota personal para no andar buscando en google lo mismo, cada vez que se le hace el favor a mi vecina ( "favor" :P...cuando se hace al derecho, queda uno como el Neo del barrio obrero, la consola negra asusta y si se saben par cosillas se descresta jejeje! ).

  • Cómo realizar una copia de respaldo con rsync

    archivosCopia

    Problema/Necesidad:

    • Necesito crear una copia local de una carpeta remota en un servidor

    Solución utilizada:

    • el comando rsync permite sincronizar desde terminal archivos y directorios, de remoto a local y viceversa
    • si tengo una llave de acceso en mi $HOME/.ssh/key puedo usarla
    • rsync tiene muchas opciones, se escogen las siguientes:
      • ---progress: muestra el avance del proceso de sincronización
      • -a, equivalente a --archive, una copia recursiva que preserva todos los atributos posibles de los archivos
      • -v, equivalente a --verbose, ofrece información adicional del proceso de sincronización
      • -z, equivalente a --compress, permite comprimir los archivos para reducir la cantidad de datos transmitidos
      • -e, permite ejecutar un comando que soporta la comunicación, en este caso ssh, pude incluir llaves de acceso puertos, etc
    • Sintaxis general:
      • rsync --opciones ORIGEN DESTINO
    • Comando ejecutado:
      • sync --progress -avz -e "ssh -i /home/myuser/.ssh/key" user@ipOrDomain:/dir/dir/dir .
      • el "." final traduce directorio actual
    Imagen Original (CC Atribución): https://flic.kr/p/5ZrohQ
  • Debian 7: ¿remover LXDE e instalar MATE? { Notas de Laboratorio }

    mateDesktop

    Problema:

     
    Tengo una instancia de Debian 7 (wheezy, antigua versión estable), con el escritorio LXDE instalado, me gustaría instalar el escritorio MATE...
     

    Solución utilizada:

    1. se abre una consola (lo confieso no he superado mi adicción a la interfaz de comandos, me hace sentir en matrix)
    2. se digita el comando "su -" (al ejecutar nos pedirá la clave de administración)
    3. se instalan los paquetes requeridos para el entorno de escritorio mate: "apt-get install mate-desktop-environment mate-desktop-environment-core mate-desktop-environment-extras"
    4. los anteriores comandos resuelven las dependencias requeridas, preguntando antes de instalar que si deseamos continuar... se oprime la tecla homérica 'y'
    5. después de terminar, se termina la sesión y se puede usar el nuevo entorno de escritorio, es posible que sea necesario seleccionar el escritorio en la ventana de login del lightdm.

    Si algun@ quedó insatisfech@, abajo está la sección de comentarios...
  • Décima Jornada de Software Libre - Uniminuto Villavicencio

    photo 2016 10 18 15 42 56

    El próximo 22 de octubre estaremos acompañando a nuestros amigos de Uniminuto Villavicencio en la décima jornada de software libre con la charla titulada Linux para seres humanos (Una visión desde lo cotidiano).

    El objetivo del evento es fomentar la apropiación de software libre como alternativa de desarrollo de proyectos informáticos y como modelo de negocio viable en la industria del software.

    Las actividades se llevaran a cabo el día viernes 21 y sábado 22 de octubre del año en curso en el auditorioCorocoras en el Parque de la Vida COFREM.

    http://www.uniminuto.edu/web/llanos/-/decima-jornada-de-software-libre

  • DNF listar archivos de un paquete y ¿a qué paquete pertenece un ejecutable?

    DNF list files

     

    Problema

    • desde un sistema Fedora, necesito conocer los archivos incluidos en un paquete

    Solución Utilizada

    • DNF es el sistema de gestión de paquetes en Fedora (instalar/remover software del sistema)
    • abrimos una terminal de comandos y realizamos la siguiente consulta:
      • dnf repoquery -l NombrePaqueteAConsultar
    • la salida nos ofrece un listado de binarios y recursos incluidos en el paquete
    • ¿y si tengo la situación inversa: con el nombre de un binario quiero consultar el paquete al que pertenece?
    • se puede usar otra consulta desde el comando dnf:
      • dnf provides NombreBinarioAConsultar
    • la salida nos lista los repositorios y el paquete que contiene al archivo/binario en cuestión

     

    Imagen Original (CC Atribución): https://flic.kr/p/rZNUvK

  • Empezando a usar Ubuntu Linux 14.04, ¿Y ahora que?


    Ubuntu es un sistema operativo basado en GNU/Linux y perteneciente a la familia Debian, este se distribuye como software libre, e incluye su propio entorno de escritorio denominado Unity.

    Esta orientado al usuario promedio de escritorio, por lo cual su premisa de funcionamiento se basa en la facilidad de uso y en brindar las aplicaciones básicas necesarias para que cualquier usuario pueda ejecutar sus tareas cotidianas en un entorno amigable, sencillo y seguro.

    Este articulo esta pensado para aquellas personas que instalan Ubuntu por primera vez y quieren saber que opciones tiene a su alcance para sacar el máximo provecho a su nuevo sistema operativo.

    A la fecha la ultima versión de Ubuntu Linux es la 14.04 LTS. Esta versión al ser una LTS nos garantiza soporte para actualizaciones de seguridad por un periodo de 3 años.

    1 - Activar los repositorios de software de socios Canonical

    Entrando en materia lo primero que deberíamos hacer una vez instalamos un Ubuntu, es activar los repositorios de software de socios Canonical (Empresa creadora de Ubuntu) estos repositorios nos permitirán instalar programas adicionales, que debido a su licencia no libre no están activos al momento de una instalación normal. Para lograrlo simplemente tenemos que hacer lo siguiente:

    • Nos dirigimos al panel de configuración del sistema.

    Paso 1

    • Damos clic sobre la opción "Configuración del sistema..."

    Paso 02 - Configuracion del sistema

    • Damos clic sobre "Software y Actualizaciones"

    Paso 3 - Software y Actualizaciones

    • Activamos la opción "Socios de Canonical"

    Paso 4 - Socios Canonical

    Una vez hecho esto, nos solicitará nuestra contraseña y daremos clic en el botón “Autenticar”, luego daremos clic al botón “Cerrar”. A continuación se mostrara una ventana en la cual daremos clic al botón recargar tal y como se muestra en la siguiente imagen:

    Recargar

    Al terminar la actualización de los repositorios ya podemos instalar los nuevos programas directamente desde el centro de software, programa que en Ubuntu se encarga de instalar y desinstalar aplicaciones de una forma simple.

    2 – Instalando controladores adicionales

    Si tienes una tarjeta de video Nvidia o AMD y quieres obtener el máximo desempeño de la misma, es muy recomendable verificar que tu Ubuntu cuente con los controladores “Drivers” correspondientes y actualizados.

    Una forma fácil de hacer esto es por medio del panel de controladores adicionales en la herramienta de Software y actualizaciones.

    Al dar clic en la pestaña que se muestra en la imagen, Ubuntu empezará a buscar los controladores mas adecuados para su hardware.

    Controladores

    Una vez terminada la búsqueda se puede obtener un listado de controladores del cual usted podrá escoger la mejor opción.

    Por lo general los controladores marcados como (Privativo, Probado) son los mas recomendables.

    ControladorPP
    Para instalarlo, simplemente tenemos que seleccionar el controlador que deseamos y dar clic sobre el botón “Aplicar cambios”

    3 – Instalar codecs y utilidades de terceros.

    Para poder ejecutar de manera adecuada archivos de audio y vídeo algunas veces es necesario contar con ciertos codecsadicionales, para poder lograr esto en Ubuntu simplemente tenemos que instalar el paquete llamado “Extras restringidos de Ubuntu” el cual también instalará lo necesario para poder ejecutar el Adobe Flash, reproducir DVD y las tipografías básicas de Microsoft. Para hacerlo ejecutamos el programa “Centro de Software de Ubuntu” y una vez en el, buscamos el paquete descrito anteriormente tal y como se muestra a continuación.

    Extras

    O simplemente introduciendo el siguiente enlace en el navegador

    apt://ubuntu-restricted-extras

    Si queremos visualizar de forma adecuada DVD cifrados podemos instalar el paquete “libdvdread4” introduciendo el siguiente enlace en el navegador

    apt://libdvdread4

    Y luego ejecutar las siguientes instrucciones en la consola.

    sudo /usr/share/doc/libdvdread4/install-css.sh

    4 – Instalar Skype

    Skype es uno de los programas mas populares de comunicación vía texto, voz y vídeo sobre Internet (VoIP), y si seguimos correctamente el paso No. 1, Instalarlo es muy sencillo.

    Podemos desde el Centro de Software de Ubuntu buscar la palabra “skype” tal y como se muestra a continuación

    Skype

    O simplemente introduciendo el siguiente enlace en el navegador:

    apt://skype

    5 – Java

    Java es una tecnología bastante utilizada en la actualidad para múltiples propósitos, varios programas que usamos cotidianamente están escritos en Java y algunas aplicaciones web lo requieren para funcionar de manera adecuada.

    Para instalar OpenJDK y IcedTea en Ubuntu simplemente tenemos que introducir el siguiente enlace en el navegador

    apt://icedtea-7-plugin,openjdk-7-jre

    6 – DropBox

    Dropbox es un servicio de alojamiento de archivos multiplataforma en la nube. El servicio permite a los usuarios almacenar y sincronizar archivos en línea para así compartirlos con otros.

    Para instalarlo de manera simple en Ubuntu podemos buscarlo en el centro de software de la siguiente manera “nautilus-dropbox” e instalarlo tal y como se muestra a continuación.

    Dropbox

    O introduciendo el siguiente enlace en el navegador: apt://nautilus-dropbox

    7 – Musica y video

    Una de las funcionalidades mas comunes para nuestros computadores personales es el entretenimiento y gran parte de este lo obtenemos en forma de musica y video.

    Ubuntu nos ofrece ya instalados Rhythmbox para reproducir musica y Totem para video, pero si desea explorar un poco más a continuación explicamos como instalar dos de las aplicaciones más populares tanto para musica como para video.

    Describiremos brevemente como instalar Spotify y VLC.

    Instalando Spotify

    Para instalar Spotify en nuestro Ubuntu simplemente tenemos que ejecutar los siguientes comandos tal y como se muestra a continuación:

    • sudo sh -c 'echo "deb http://repository.spotify.com stable non-free" > /etc/apt/sources.list.d/spotify.list'

    Spotify 1
    • sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 94558F59
    Spotify 2
    • sudo apt-get update
    Spotify 3
    • sudo apt-get install spotify-client
    Spotify 4

    Y finalmente obtenemos nuestro Spotify Instalado.
    SpotifyFinal

    Instalando VLC

    VLC es quizás uno de los mejores reproductores de video y aunque no viene instalado por defecto en Ubuntu, instalarlo es muy fácil. Para hacerlos nos dirigimos al Centro de software de Ubuntu y lo buscamos como “vlc” tal y como se muestra en la imagen.

    VLC

    O introduciendo el siguiente enlace en el navegador: apt://vlc

    ---

    Esperamos que esta pequeña guía sea de utilidad y estaremos atentos a sus comentarios y sugerencias.

    Hasta una próxima entrada.

  • Entornos de trabajo para ciencia de datos, instalando R-Studio y Anaconda en Ubuntu Linux 18.04

    bannerDS

    La ciencia de datos o “Data Science” como se le denomina en ingles, es una de las áreas que mayor interés ha despertado en últimos años, siendo descrita por muchos expertos como una de las áreas de mayor relevancia laboral durante la próxima década.

    Pero en sí ¿que es la ciencia de datos?; La ciencia de datos es un área de estudio interdiciplinaria que usa métodos científicos, procesos matemáticos y algoritmos computacionales, con el objetivo de obtener información, conocimiento y representación de comportamientos significativos basados en datos de diferentes fuentes y tipos. Esta ciencia se encuentra muy relacionada con otras áreas igualmente destacadas recientemente, como el Big Data o el Machine Learning. Vinculando a su vez conceptos más tradicionales como lo son las bases de datos (relacionales y no relacionales) y un uso extensivo de métodos y técnicas estadística.

    Por lo anterior y con el objetivo de adentrarnos en el estudio de este interesante tema, a continuación describiremos como instalar dos de los principales entornos de desarrollo para ciencias de datos, sobre nuestro Ubuntu Linux 18,04 LTS Bionic Beaver.

    Para empezar describiremos el proceso de instalación de R Studio un IDE especializado para el lenguaje de programación R, lenguaje especialmente diseñado para el desarrollo de estadística computacional y graficación.

    1 - Instalación de R Studio

    Antes de instalar R Studio necesitaremos instalar en nuestro sistema el paquete r-base que provee el lenguaje de programación R sobre el cual trabajara nuestro IDE.

    Abrimos una terminal o consola “ctr + alt + t” e introducimos los siguientes comandos:

    $ sudo apt update sudo

    $ apt -y install r-base

    R Studio esta disponible para dos de las principales distros de Linux; Fedora y Ubuntu. Para este tutorial instalaremos la versión de R Studio para Ubuntu 16,04+/Debian 9+, la cual podemos descargar del siguiente enlace: https://www.rstudio.com/products/rstudio/download/#download

    R1

     Una vez realizada la descarga volvemos a nuestra terminal o consola e introducimos los siguientes comandos:

    $ cd Descargas
    $ ls
    rstudio-xenial-1.1.456-amd64.deb

    La carpeta descargas puede variar de acuerdo a la configuración o la instalación de su sistema así que podría tener Descargas o Downloads*

    Una vez identificado el paquete procedemos a su instalación:

    $ sudo gdebi rstudio-xenial-1.1.456-amd64.deb

    Y a continuación podremos ejecutar R Studio desde la consola con el siguiente comando:

    $ rstudio

    R2
    O bien desde el menú de aplicaciones:

    R3
    2 – Instalación de Anaconda

    Anaconda es una distribución de Python y R especializada en ciencia de datos “Data Science” y “Machine Learning” orientada al procesamiento de datos a gran escala. Cuenta con su propio administrador de paquete e integra más de 250 librerías y utilidades especializada para el trabajo en ciencia de datos.

    Para comenzar, lo primero que tenemos que hacer es dirigirnos a la pagina de Anaconda y descargar el script de instalación. Podemos hacer esto dando clic en el siguiente enlace: https://www.anaconda.com/download/#linux (esta descarga puede tomar algunos minutos según la velocidad de su conexión)

    An1

    Una vez realizada la descarga volvemos a nuestra terminal o consola e introducimos los siguientes comandos:

    $ cd Descargas
    $ ls
    Anaconda3-5.3.0-Linux-x86_64.sh

    Identificado el paquete, volvemos a la terminal e iniciamos el proceso de instalación por medio del siguiente comando:

    $ sh Anaconda3-5.3.0-Linux-x86_64.sh

    Al ejecutarlo se despegará el siguiente mensaje:

    An2

    Oprimimos la tecla Enter para ver todos los términos de la licencia y finalmente escribimos “yes” para aceptar y continuar con el proceso de instalación.

    Posteriormente nos solicita confirmar la ubicación de los archivos de instalación, para el presente caso usaremos los predeterminados por lo que simplemente oprimiremos la tecla Enter

    An3

    A continuación nos pregunta si deseamos que el instalador inicialice Anaconda3 en nuestro bashrc a lo que en este caso diremos que si, “yes”.

    An4

    Una vez finalizada la instalación de Anaconda, el instalador nos preguntará si deseamos instalar el editor Visual Studio Code, con lo que conforme a sus preferencias ustedes podrán aceptar o seguir adelante y utilizar su editor preferido.

    Finalmente procedemos con la activación de la instalación de anaconda ejecutando el siguiente comando:

    $ source ~/.bashrc

    y la confirmamos con:

    $ conda info

    An5
    Ok, ya esta instalado nuestro Anaconda, pero aun falta el paso final, la cereza del pastel. Y es desplegar nuestro entorno grafico de configuración y trabajo desde el navegador.

    Para hacer esto simplemente ejecutamos el siguiente comando desde nuestra terminal y tendremos todo el poder de Anaconda a nuestra disposición.

    $ anaconda-navigator

    An6


  • Fedora 20: ¿Libre Office en español? { Notas de Laboratorio }

    libreOfficeEsp

    Problema:

     
    Tengo una instancia de Fedora 20 ligeramente virgen y mi Libre Office me sale en inglés...
     

    Solución utilizada:

    1. se abre la consola
    2. se digita el comando "su -" (al ejecutar nos pedirá la clave de administración)
    3. se instalan los paquetes requeridos con yum desde la consola: "yum install libreoffice-langpack-es hunspell hunspell-es"
    4. el anterior comando resolvera las dependencias requeridas, preguntando antes de instalar que si deseamos continuar... se oprime la tecla homérica 'y'
    5. después de terminar, al abrir de nuevo Libre Office nos saldrá en español y con corrección de ortografía...
    Si algun@ quedó insatisfech@, abajo está la sección de comentarios...

     
  • Generar un volcado (copia) de una base de datos en MySQL desde la terminal

    6Marzo2011Backup

    MySQL es uno de los motores de bases de datos más utilizados actualmente, principalmente por ser uno de los componentes del stack LAMP (Linux, Apache, MySQL, PHP).

    Necesidad:

    • Se requiere generar desde la terminal de linux una copia de respaldo de cierta base de datos, el objetivo es repetir este comando desde algún script de cron cuando sea requerido

    Solución utilizada:

    • El comando mysqldump es la herramienta buscada, recibe como parámetro el usuario de la base de datos, el nombre de la base de datos, el servidor al que nos conectamos.
    • Sintaxis:
      • mysqldump -p -h SERVIDOR -u USUARIO_B.D. NOMBRE_B.D. > /directorio/destino/nombre.sql
    • El caracter de redirección de flujo ">", es una característica de bash que permite dirigir la salida de un comando a un archivo, en este caso el archivo sql requerido (si no existe dicho archivo se crea, y si existe lo sobreescribe. Si se usa doble ">>" agrega el contenido al final...útil para algun tipo de logen el sistema)
    • El comando anterior preguntará la contraseña, sin embargo puede incluirse directamente (aunque quedaría en texto plano y visible 😐...eso se puede mejorar...en otra entrada registraremos como hacerlo) junto al parámetro -p asi:
      • mysqldump -pCONTRASEÑASINESPACIOS -h SERVIDOR -u USUARIO_B.D. NOMBRE_B.D. > /directorio/destino/nombre.sql
    • También se puede mejorar (de nuevo gracias a las bondades de bash) reemplazando el "nombre.sql" por un archivo con la fecha del momento de ejecución del comando, eso puede ser útil si se usa en un script en cron:
      • mysqldump -pCONTRASEÑASINESPACIOS -h SERVIDOR -u USUARIO_B.D. NOMBRE_B.D. > /directorio/destino/nombre-$(date +"%F-%H:%M:%S").sql
    • Como siempre se pueden consultar opciones y características adicionales del comando con:
      • man mysqldump
    Imagen Original (CC Atribución): https://flic.kr/p/mUfqu4
  • Instalando Django 2.0 en Ubuntu Linux 16.04 LTS

    python

     

    El pasado 2 de Diciembre fue liberada la version 2.0 de Django, Framework para desarrollo web escrito en Python.

    Es por esto que en OpenSAI nos dimos a la tarea de hacer un pequeño resumen de como instalarlo de manera facil en nuestro Ubuntu Linux 16.04.

    Antes de instalar Django verificamos cumplir los requerimientos mínimos del sistema.

    Para la version 2.0 es nesario contar con Python 3.5 instalado.

    Luego Procedemos a instalar pip3

    1 - Como súper usuario ejecutamos:

     

    :~$ apt install python3-pip

     

    2 - Una vez instalado pip procedemos a actualizarlo a la ultima versión disponible

     

    $source djangoprojects/bin/activate

    :~$ pip3 install -U pip

     

    3 - Una vez actualizado pip procedemos a instalar como súper usuario el virtualenv para ejecutar las aplicaciones Django de forma independiente al python del sistema.

     

    :~$ pip3 install virtualenv

     

    4 - Una vez instalado correctamente el virtualenv procedemos a crear el directorio donde se alojara la instancia virtual de python.

     

    :~$virtualenv ENV

     

    5 - A continuación procedemos a activar el ambiente virtual de python con el siguiente comando

     

    :~$source djangoprojects/bin/activate

     

    6 - Sabremos que el entorno virtual esta activado cuando veamos que antes del nombre de nuestra terminal aparece el nombre de nuestro ambiente virtual entre paréntesis, ejem: (djangoprojects) usuario@maquina:~$

    7 - Para salir del entorno virtual simplemente ejecutamos el comando:

     

    :~$ deactivate

     

    8 - Finalmente procedemos a instalar Django en nuestro entorno virtual.

     

    :~$ pip3 install Django

     

    9 - Una vez instalado Django procedemos a comprobar que en efecto la instalación fue exitosa, ejecutando el siguiente script desde el interprete de python.

    :~$python3

     

    >>> import django

    >>> print(django.get_version())

     

    Finalemente al ejecutarlo deberemos de obtener el numero de la versión de Django que acabamos de instalar.

     

    TerminalDjgo

     

     

  • Instalar y configurar una solución de virtualización en Ubuntu 18.04 basándonos en KVM, Libvirt y Virtual Machine Manager

    kvm

    KVM (Kernel-based Virtual Machine) es un modulo de virtualización para el núcleo de Linux, que le permite a este hacer las veces de un hipervisor, permitiendo así virtualizar sistemas operativos variados como Linux, BSD, Solaris, Windows, Haiku, MacOS, entre muchos otros.

    Inicialmente creado para correr sobre arquitectura x86, ha sido portado para correr sobre arquitecturas adicionales como ARM, AI-64, PowerPC, etc.

    En la actualidad se consolida como una de las opciones de virtualización más destacadas del mercado, compitiendo fuertemente con alternativas como Xen o VirtualBox. (KVM vs VirtualBox)

    A continuación describiremos una forma sencilla de instalar y configurar nuestra solución de virtualización en Ubuntu 18.04 basándonos en KVM, Libvirt y Virtual Machine Manager

    Instalando KVM

    Para dar inicio con el proceso, lo primero que debemos hacer es verificar que nuestro procesador soporta las instrucciones necesarias para virtualizar con KVM. Para hacer esto ejecutamos el siguiente comando:

    egrep -c '(svm|vmx)' /proc/cpuinfo

    Si al ejecutar el anterior comando obtenemos un resultado igual o superior a 1, quiere decir que nuestro CPU es capaz de soportar las instrucciones y tecnología necesaria para virtualizar.

    Dado lo anterior procedemos a instalar los paquetes necesarios por medio del siguiente comando:

    sudo apt-get install qemu-kvm libvirt-bin bridge-utils virt-manager

    Una vez instalados los paquetes podemos verificar que el proceso de instalación ha sido exitoso de la siguiente manera:

    sudo kvm-ok

    Si el proceso se ha efectuado de manera correcta, deberíamos obtener la siguiente salida:

    INFO: /dev/kvm exists
    KVM acceleration can be used

    En lo personal, recomiendo en este punto reiniciar el sistema para asegurar que todos los demonios y subsistemas esten corriendo adecuadamente.

    A continuación creamos un usuario con los permisos necesarios para poder instalar y manipular maquinas virtuales en nuestro sistema. Para lograrlo simplemente ejecutamos el siguiente comando:

    sudo adduser [nombre de usuario] libvirt

    Ahora estamos listos para verificar la instalación, para hacerlo simplemente ejecutamos lo siguiente:

    virsh -c qemu:///system list

    Si todo ha salido bien, deberíamos obtener la siguiente salida:

    salida

    Una vez ejecutados los ateriores pasos, ya estamos listos para empezar a crear nuestras maquinas virtuales con KVM.

    En el siguiente video se muestra de manera basica, como crear una maquina virtual en QEMU/KVM de CentOS 7 sobre un host Ubuntu 18.04. 

    Miralo también en LBRYhttps://beta.lbry.tv/CentOSon-KVM/9

    ¡Comparte tu conocimiento!

  • Linux para humanos

    En este taller hablaremos sobre Linux, su historia, funcionalidades y como aprender a sacar el máximo provecho del sistema operativo del pingüino desde la óptica de un usuario final

    Cuándo
    Sede
    Vivelab Bogotá Av el dorado Carrera 45 No 26-33
    Inscriociones: http://bit.ly/1X4lRUM
    Entrada libre previa inscripción.

     

    linuxH
  • Linux para humanos - Resultados

    photo 2016 05 27 15 15 52

    El pasado 18 de mayo se llevo a cabo en las instalaciones del Vivelab Bogotá la más reciente versión de nuestro taller "Linux para seres humanos" en donde los asistentes reconocieron los conceptos básicos que rodean la filosofia de uso y funcionamiento del sistema operativo del pingüino y finalmente se untaron las manos aprendiendo a configurar su sistema para uso casero con todas las herramientas disponibles para el usos cotidiano de su PC junto con varias alternativas libres a programas se uso frecuente pero de licencia privativa.

    Un agradecimiento muy especial a todo el equipo de Vivelab Bogotá por su colaboración.

  • Mejorando la calidad de la captura de sonido/micrófono con PulseAudio

    Microphone

     

    Hoy en día es muy común desarrollar actividades que implican la captura de sonido por medio de un micrófono. Conversar con nuestro amigos por medio de alguna aplicación vía internet, grabar audio para una presentación o probar nuestras cualidades artísticas cantando nuestra canción favorita. Todas estas son situaciones cotidianas, pero para algunos usuarios de Linux pueden llegar a ser frustrantes debido a la calidad del sonido obtenido.

    Es muy cierto que la calidad del micrófono es un factor decisivo a la hora de grabar un buen audio y más si se desea obtener un nivel de calidad tipo estudio, aun así a continuación explicaremos algunos trucos que podrán ayudar a mejorar la calidad de tus grabaciones incluso si tu micrófono no es el mejor.

    Nota: Los comandos a continuación descritos se basan en Ubuntu Linux 16,04 LTS aunque deberían funcionar sin grades diferencias en la mayoría de distros.

    Cancelación de eco y reducción automática de ruido.

    Para empezar debemos hacer unos pequeños cambios en el archivo de configuración del servidor Pulse. Para entrar a editar este archivo simplemente deberemos ejecutar el siguiente comando con permisos de administrador:

     

    • sudo nano /etc/pulse/default.pa

     

    Ingresamos la contraseña de administrador y procedemos añadiendo las siguientes lineas al final del archivo:

     

    • load-module module-echo-cancel source_name=noechosource sink_name=noechosink

    • set-default-source noechosource

    • set-default-sink noechosink

     

    Finalizamos oprimiendo la combinación de teclas CTRL+X donde se nos preguntará sí deseamos guardar los cambios a lo que responderemos “Si”.

    Estando nuevamente en la consola reiniciaremos el servidor Pulse con el siguiente comando:

    • pulseaudio -k

    Una vez realizado este proceso podemos ir al panel de control de sonido de nuestra distro en la que veremos una nueva opción que nos indica que la configuración se ha efectuado adecuadamente.

     Pulseaudio

     

    Portada: “Microphone” by Grantis licensed under CC BY 2.0

     

  • Pomodoro en Bash en menos de 100 líneas (newbies)

    Cuando se tienen muchas cosas que hacer, a veces no se sabe por donde empezar, se arma un interbloqueo y hasta aparece la procrastinación. Una técnica de trabajo que apoya esa situación es la del Pomodoro. Se fraccionan las tareas en ciclos de al menos 25 minutos (divide y vencerás), donde se ejecuta sólo una tarea, con toda la concentración del mundo (está demostrado que el multitasking en los seres humanos es puro cuento...bueno las mujeres pueden hacerlo, pero no es la norma 😜😇). Al finalizar el día si se hace responsablemente la labor, el nudo comenzará a simplificarse, desde luego conviene llevar un registro, lo que en sistemas de software sería un log.

    Hay una infinidad de aplicaciones para trabajar Pomodoro, sin embargo, por puro placer y como ejercicio práctico para el aprendizaje de Bash y conceptos básicos de programación, publicamos un Pomodoro en menos de 100 líneas de código en Bash. Quién aprenda a manejar realmente este sistema de scripting y una Terminal Linux, tendrá una ventaja competitiva en los sistema industriales de software actuales.

    ChontoRunning

    Todo arranca con un comando básico y sencillito:

    sleep 1

    El comando sleep es nativo de la consola de Linux que nos detiene la ejecución de un script, en este caso precisamente por un segundo. Si se puede hacer eso podemos organizar un loop (ciclo repetitivo) que nos cuente hasta un minuto:

    for (( SECSCount=1; SECSCount<=60; SECSCount++ ))
    do
      tput clear
      print_timer " $(($MINS-$MINSCount)) Minutes " "$((60-$SECSCount)) Seconds to rest... " "$(tput lines)" "$(tput cols)"
      sleep 1
    done

    Se tiene un ciclo para 60 segundos, en cada paso se limpia la pantalla, se imprimen los minutos, segundos, no hay que dejarse despistar por tput que es un comando que permite manejar los parámetros de comportamiento de la terminal:

    tput lines retorna el número de líneas disponiblesn en la terminal actual
    tput cols retorna el número de columnas disponibles en la terminal actual
    tput clear limpia la pantalla
    tput bold coloca los caracteres de la terminal en negrilla
    tput cut Y X posiciona el cursor de la pantalla en la coordenada X, Y (filas, columnas)
    tput setaf cambia color del fondo del texto
    tput rev invierte el coloreado de los caracteres (color en fondo y no en las letras)
    tput sgr0 reinicia los parámetros de la terminal (si no se usa al terminar la ejecución, la terminal queda con otros colores...)
    tput civis oculta el cursor de la terminal
    tput cnorm muestra de nuevo el cursor

    y print_timer es una función creada al inicio del script para imprimir el reloj (el letrero en pantalla con los minutos y segundos...después la miramos), esta función recibe como parámetros encerrados en comillas dobles, el contador de los minutos, el contador de los segundos, el tamaño en filas y en columnas de la terminal. El objetivo es que el reloj siempre se presente en el centro de la pantalla.

    Cómo estámos contando el tiempo en reversa (si tenemos 25 minutos para el pomodoro, vamos hacia atrás hasta llegar a cero...), a 60 le restamos los segundos del contador y a los minutos totales, le restamos los minutos del contador de minutos de nuestro script (...así se hace un ciclo repetitivo for en bash...¡vamos! quién sepa programar en Bash no estaría leyendo este contenido, por eso lo aclaramos).

    Bueno, pero un minuto tiene 60 segundos, luego el anterior ciclo debería estar en otro externo para contar minutos y segundos:

    for (( MINSCount=1; MINSCount<=$MINS; MINSCount++))
    do
      for (( SECSCount=1; SECSCount<=60; SECSCount++))
      do
       tput clear
       print_timer " $(($MINS-$MINSCount)) Minutes " "$((60-$SECSCount)) Seconds to rest... " "$(tput lines)" "$(tput cols)"
       sleep 1
      done
    done

    El ciclo externo cuenta los minutos, el interno los segundos. $MINS es una variable que guarda el primer parámetro recibido desde la consola de Linux por nuestro script. 

    Hay que aclarar que en la terminal del sistema, nuestro script se ejecuta asi:

    ./chontoBash.sh NumMinutesToWork "My Task to work in double quotes..."

    el ./ le indica al sistema Linux que ejecute el script chontoBash.sh del directorio actual, NumMinutesToWork...simplemente es un número de minutos a contar, "My Task to work in double quotes..." es la tarea que se registrará como ejecutada. Entonces se reciben dos parámetros, que dentro del script se validan asi: 

    if [[ $# != 2 ]]; then
     tput bold; echo Error in arguments...; tput sgr0;
      echo
      print_help
      exit 1
    fi

    if ! [[ $1 =~ ^[0-9]+$ ]]; then
      tput bold; echo...how many minutes do you like to work?; tput sgr0;
      echo
      print_help
      exit 1
    fi

    Tenemos dos comparaciones, el primer if valida que desde la terminal de linux nos entreguen (2) dos parámetros, el segundo if valida que el primer parámetro sea un número entero. Son validaciones básicas, obviamente se pueden mejorar. Si ocurre alguna de las dos exepciones el programa termina con exit 1 (programa o script aquí son sinónimos...ya ves tú, estás programando en Bash).

    Una función en Bash se crea así:

    print_help (){
      echo USAGE FROM TERMINAL:
      echo ./chontoBash.sh NumMinutesToWork \"My Task to work in double quotes...\"
      echo If not exist, chonto will create the log file log.chonto, csv file to make data analytics:
      echo "TimeStamp, TotalMinutes, Task worked..., status: completed (FULL) or incomplete task (BREAK)"
      echo "TimeStamp, TotalMinutes, Task worked..., status: completed (FULL) or incomplete task (BREAK)"
      echo "TimeStamp, TotalMinutes, Task worked..., status: completed (FULL) or incomplete task (BREAK)"
      echo .
      echo .
      echo .
    }

    La ventaja es que para imprimir en pantalla todas estas líneas con el comando echo, una vez creada la función, sólo tengo que llamarla: print_helpcuántas veces quiera (el nombre de la función tu te lo inventas), esto ahorra trabajo, y mejora la organización del script.

    Las otras funciones del script son:

    log_chonto_break (){

      end_time=$( date '+%s' )
      echo $(date +"%F %H:%M:%S"), $((($end_time - $1) / 60)) Mins, "$2", BREAK >> log.chonto
      mplayer glass.ogg > /dev/null 2>&1
      tput clear
      echo "Unfinished task logged :("
      tput cnorm
      exit 1
    }

    log_chonto (){
      end_time=$( date '+%s' )
      echo $(date +"%F %H:%M:%S"), $((($end_time - $1) / 60)) Mins, "$2", FULL >> log.chonto
      mplayer glass.ogg > /dev/null 2>&1
      tput clear
      echo "Task finished logged :)"
    }

    print_timer (){
      #center the timer text, centering the cursor in Y/2:X/2-((text length)/2)
      tput cup $(($3/2)) $((($4/2)-($(expr length "$1 $2")/2)))
      tput bold; tput setaf $((1 + RANDOM % 10)); tput rev; echo "$1$2"; tput sgr0;
    }

    print_timer se encarga de centrar el cursor calculando primero el tamaño del reloj (cuántas letras tiene nuestro reloj para que quede centrada, verticalmente y horizontalmente), el RANDOM con el módulo es para jugar los colores de impresión en pantalla, hace que cada segundo estos cambien.

    log_chonto detiene el reloj y registra en el archivo log.chonto la tarea terminada. La magia de los dos >> actúa como una redirección de los datos, permite que si el archivo log.chonto no existe se cree, y si existe agregue la linea de registro al final del mismo. Registrando en esa línea, la marca de tiempo, el tiempo ejecutado en minutos, el texto descriptivo de la tarea, la palabra FULL indica que la tarea se ejecutó en su totalidad...que no se oprimió CTRL + C.

    ¿Qué pasa con el CTRL+C? que hay que capturarlo y asociarle una función que se ejecutará cuando ocurra. Esa función es log_chonto_break, hace lo mismo que log_chonto, pero registra en log.chonto la palabra BREAK para indicar que NO se terminó la tarea, junto con el tiempo parcial ejecutado. El programa termina con el correspondiente aviso en terminal de carita triste: echo "Unfinished task logged :("...log_chonto por el contrario SI imprime carita feliz.

    La interrupción de CTRL+C se captura así:

    trap 'log_chonto_break "$start_time" "$2"' SIGINT

    ¡Ahhh bueno!...hay que tener mplayer instalado (búscalo en tu distribución de Linux preferida), para reproducir la campanita al terminar, para eso es el archivo de sonido glass.ogg

    trap (comando nativo de Bash) recibe como parámetro el nombre de la función a ejecutar (log_chonto_break), pero esta función a su vez recibe como parámetros el tiempo de inicio registrado y el nombre de la tarea que se le envío por consola a nuestro script...almacenado en la variable $2.

    Para anotar: si un script recibe tres parámetros estarían internamente guardados en $1 $2 $3. A su vez cuando una función como las que mostramos, recibe parámetros, para ella quedarían guardados en $1, $2, $3...etc. y sólo existirían en su espacio de función, por eso los corchetes. Es como una caja negra, un script, dentro de un script.

    Al ejecutar un script, estas funciones no se ejecutarían automáticamente, sólo lo harían cuando se llamen explícitamente, entonces, las primeras líneas reales de ejecución de nuestro programa (obviando los if de validación), serían:

    MINS=$1
    start_time=$( date '+%s' )

    En $MINS queda guardado nuestro primer parámetro recibido desde la terminal Linux, los minutos a ejecutar (hay que usar el símbolo $ cuando se quiera llamar su contenido), y start_time arranca nuestro reloj. Si todo sale bien, la última línea de ejecución es:

    log_chonto "$start_time" "$2"

    Es un llamado a la función de guardado en log.chonto, que recibe como parámetros el tiempo de inicio y el nombre de la tarea. El archivo log.chonto es un archivo separado por comas, que puede usarse en otros sistemas (hasta en el mismo office...bueno, mejor LibreOffice) para generar analíticas.

    El script completo sería el siguiente:

    #!/bin/bash

    print_help (){
       echo USAGE FROM TERMINAL:
       echo ./chontoBash.sh NumMinutesToWork \"My Task to work in double quotes...\"
       echo If not exist, chonto will create the log file log.chonto, csv file to make data analytics:
       echo "TimeStamp, TotalMinutes, Task worked..., status: completed (FULL) or incomplete task (BREAK)"
       echo "TimeStamp, TotalMinutes, Task worked..., status: completed (FULL) or incomplete task (BREAK)" 
       echo "TimeStamp, TotalMinutes, Task worked..., status: completed (FULL) or incomplete task (BREAK)"
       echo .
       echo .
       echo .
    }

    log_chonto_break (){
         end_time=$( date '+%s' )
      echo $(date +"%F %H:%M:%S"), $((($end_time - $1) / 60)) Mins, "$2", BREAK >> log.chonto
      mplayer glass.ogg > /dev/null 2>&1
      tput clear
      echo "Unfinished task logged :("
      tput cnorm
      exit 1
    }

    log_chonto (){
      end_time=$( date '+%s' )
      echo $(date +"%F %H:%M:%S"), $((($end_time - $1) / 60)) Mins, "$2", FULL >> log.chonto
      mplayer glass.ogg > /dev/null 2>&1
      tput clear
      echo "Task finished logged :)"
      tput cnorm
    }

    print_timer (){
      #center the timer text, centering the cursor in Y/2:X/2-((text length)/2)
      tput cup $(($3/2)) $((($4/2)-($(expr length "$1 $2")/2)))
      tput bold; tput setaf $((1 + RANDOM % 10)); tput rev; echo "$1$2"; tput sgr0;
    }

    if [[ $# != 2 ]]; then
      tput bold; echo Error in arguments...; tput sgr0;
      echo
      print_help
      exit 1
    fi

    if ! [[ $1 =~ ^[0-9]+$ ]]; then
      tput bold; echo...how many minutes do you like to work?; tput sgr0;
      echo
      print_help
      exit 1
    fi

    MINS=$1
    start_time=$( date '+%s' )

    tput civis

    trap 'log_chonto_break "$start_time" "$2"' SIGINT

    for (( MINSCount=1; MINSCount<=$MINS; MINSCount++))
     do
     for (( SECSCount=1; SECSCount<=60; SECSCount++))
      do
       tput clear
       print_timer " $(($MINS-$MINSCount)) Minutes " "$((60-$SECSCount)) Seconds to rest... " "$(tput lines)" "$(tput cols)"
       sleep 1
      done
    done

    log_chonto "$start_time" "$2"

    Todo el script se encuentra en https://github.com/Open-SAI/ChonToPom obviamente es libre, más que libre esta bajo una licencia MIT.

    El nombre de Chonto...ya se imaginarán por qué es. Pomodoro en italiano es tomate, en estas tierras hay tomate...chonto, el software libre da la libertad de crear tecnología y cuando se hace, uno le pone el nombre que quiera, así también se exporta cultura.

  • Resultados - Taller "Cloud + Open Source + Azure"

    Render on cloud

    El pasado miércoles 25 de mayo una vez más en las instalaciones del Vivelab Bogotá llevamos a cabo el taller “Cloud + OpenSource + Azure” en el cual se dio a conocer a los asistentes las múltiples ventajas que tiene en la actualidad trabajar en la nube, y como Microsoft en los últimos años nos brinda una variada gama de herramientas Open Source listas para usar y que nos permite en unos cuantos pasos tener soluciones completas listas para trabajar.

    Gracias a nuestros amigos de la ventanita, los asistentes al taller recibieron USD $100 para usar la plataforma Azure y durante el ejercicio reconocieron todas las funcionalidades que brinda esta para la creación de soluciones en la nube. Aprendimos a configurar y desplegar una maquina virtual Linux teniendo en cuenta los pequeños detalles de configuración tanto en Azure como en el mismo servidor Linux (Canonical - Ubuntu 16,04 LTS), aprendimos a actualizar nuestro sistema junto con algunos comandos básicos de administración e instalación de programas.

    En seguida vimos como la nube no solo nos permite alojar sitios web, sino que también puede ser una fuente muy importante de poder de computo (procesamiento), para demostrarlo instalamos en el servidor la ultima versión del programa de modelado y animación Blender 3D, junto con una escena de prueba. Realizamos un render remoto que nos sirvió para reconocer los monitores de procesamiento y memoria con los que cuenta la plataforma Azure a la par que nos permitió poner a prueba su máxima capacidad de procesamiento con unos resultados bastante interesantes.

    Para terminar decidimos desplegar un CMS donde los asistentes escogieron a Joomla el cual gracias a la gran variedad de proveedores dentro del marketplace se logro desplegar en tan solo unos cuantos pasos dejando nuestro sitio al aire y listo para trabaja sobre el.

    Como siempre agradecemos al Vivelab Bogotá por toda su colaboración y a todos los asistentes al taller por acompañarnos.

    Los esperamos en una próxima versión.

  • Unir distintos archivos pdf en linux (terminal)

    Merge PDF Files

     

    Problema

    • Necesito unir varios archivos en formato PDF, no quiero usar la suite ofimática, quiero hacerlo de manera rápida, ojalá en modo consola

    Solución Utilizada

    • el paquete poppler-utils disponible en las principales distribuiciones de linux tiene varias utilidades para proceso por lotes de archivos tipo PDF
    • una vez instalado, el paquete mencionado incluye la herramienta pdfunite que necesitamos
    • abrimos la terminal de comandos, nos situamos en la carpeta que contiene nuestros archivos y ejecutamos:
      • pdfunite archivo1.pdf archivo2.pdf archivoN.pdf archivoDESTINO.pdf
    • el archivoDESTINO.pdf generado es la unión de los archivos anteriores archivo1.pdf+archivo2.pdf+archivoN.pdf
    • el proceso es rápido, susceptible de automatizar vía bash, por defecto no realiza ajustes de resolución de los archivos, con confianza se puede usar sin dañar la calidad de los mismos.

    Imagen Original (CC Atribución): https://flic.kr/p/e1wE5A