distro

Bootear USB con imagen .iso GNU/Linux

Licencia Creative CommonsDiego Javier Mena Amado

PRIMER CAFÉ

Como miembro del GLUD, he visto recientemente a muchos visitantes pasando por el laboratorio de tecnologías libres de la Universidad Distrital, teniendo la intensión de probar diferentes distribuciones de GNU/Linux, pero tienen limitaciones – este post nace por la necesidad de muchas personas que comentan sus problemas cargando la iso a sus memorias usb usando Unetbootin o MultiSystem LiveUSB Multiboot.

Resolveremos esto usando cualquier terminal, me parece perfecto que prueben diferentes distro y que se enamoren de alguna – La que sea es mejor que Win2- pero pilos no se vuelvan distrohopper – Un distrohopper es alguien que sigue cambiando de una distribución de Linux a otra, no con la intención de probar sólo una distribución de Linux, pero si con la ilusión de encontrar la distribución Linux perfecta que se adapte a todas sus necesidades, para instalarlo en su raíz principal como sistema operativo.

Les recomiendo usar Korora – Se ha instalado en la maquina mas vieja del laboratorio y corre perfecto, enciende en 12seg y apaga en 4seg, pueden descargarle directamente desde aquí.

Seleccione el entorno de escritorio que mas llame su atención:

  • XFCE
  • GNOME
  • Cinnamon
  • KDE
  • MATE

Mientras descarga, podrías jugar Frets On Fire (GuitarHero hecho con Python)

Salve la información y formatea la USB que va a usar para probar la distribución (Usando la aplicación Discos es Anti-Cortazar), ahora solucionemos el problema: abre una terminal 😉

Con el siguiente comando se muestra la ubicación de la USB a la que quiere cargarle el .iso

 $ lsblk

A continuación desmonto la unidad y le cargo el fichero de la siguiente manera:

$ umount /dev/sdb1
$ sudo dd if=/home/asus/korora-live-xfce-25-x86_64.iso bs=4M of=/dev/sdb

La sintaxis basica del anterior comando dd seria: $ sudo dd if=origen bs=tasa of=destino

Se recomienda usar una tasa de 4 megabyte’s, esto indica tanto la lectura como la escritura se harán en bloques de 4 megabyte’s (menos tasa, seria mas lento pero mas seguro, y con mas tasa nos arriesgamos a perder datos por el camino).

Tarda un poco cargar la iso, no desesperen, dejen que la ejecución del comando se realice y listo, a probar su distro. Si desean instalarle previo a explorar sus bondades, recomiendo hacer la instalación usando particionado manual, pero como lo hago? Suponga que tiene 100GiB disponibles para la instalación, le recomendaría darle 70 GiB al home, 4 GiB a la partición swap y el resto a la raíz.

Si le pareció útil este post, compártalo a sus amigos, comenten que acá no mordemos xD

gnulinux

El poder de la Historia GNU-LINUX

Licencia Creative Commons
Diego Javier Mena Amado – Fragmentos del artículo “DESPIERTA DE LA MATRIX Y LIBERA TU CÓDIGO FUENTE – LIBERA TÚ MENTE” de la revista del Grupo GNU Linux de la Universidad Distrital FJC se distribuye bajo una Licencia Creative Commons Atribución 4.0 Internacional.

PRIMER CAFÉ

Te doy la bienvenida querido lector, hacker, ingeniero, desarrollador de software, desarrollador de hardware, investigadores innatos, estos cinco minutos leyendo sentaran las bases para toda una vida de reflexión.

Permitiéndome traer a colación la frase de George Santayana, damos inicio a un recorrido breve sobre la historia del software libre: “Aquellos que no recuerdan el pasado están condenados a repetirlo”.

El código es la tecnología que hace que los ordenadores funcionen, esté escrito en el software o grabado en el hardware, es el conjunto de instrucciones, primero escritas como palabras, que dirigen la funcionalidad de las máquinas. Estas máquinas nos dirigen. El código dirige estas máquinas.

Tras la desaparición de la comunidad Hacker del AI Lab, seguida de la desaparición del ordenador PDP-10 por modernos ordenadores de la época (1892-1894) como el VAX ó el 68020 que contaban con su propio sistema operativo privativo, titulares del software propietario establecían la siguiente norma sin escrúpulos: “Si compartes con tu vecino, te conviertes en un pirata. Si quieres hacer algún cambio, tendrás que rogárnoslo” esto hacía pensar a un gran visionario en preguntas como: ¿Qué control deberíamos tener sobre el código? ¿Qué comprensión? ¿Qué libertad debería haber para neutralizar el control que permite? ¿Qué poder?

Una suposición es que las empresas de software tienen el derecho natural e incuestionable a poseer software, y por ende a usurpar todo el poder sobre sus usuarios. (Si de verdad se trata de un derecho natural, nosotros no objetaríamos nada, independientemente del perjuicio que esto ocasionará al público). Pero lo interesante es que la constitución de los EEUU y el derecho tradicional rechazan este punto de vista.

Esta gran contienda histórica librada en su origen por Richard Stallman comenzó en los laboratorios del MIT (Massachusetts Institute of Technology), experimentado lo que se siente al firmar un acuerdo de confidencialidad cuando una persona se negó a entregarle a él y al laboratorio de inteligencia artificial, el código fuente del programa de control de una impresora con la ausencia de ciertas funciones convirtiendo el trabajo de Stallman en una experiencia muy frustrante.

El copyright no es una ley natural, sino un monopolio artificial impuesto por el Estado que limita el derecho natural de los usuarios a copiar.

Es así, como para enero de 1984, abandona su empleo en el MIT y da inicio a la construcción del software GNU con un objetivo claro: combatir contra el sistema que impedía compartir y modificar software, un sistema antisocial, poco ético, sencillamente equivocado en perspectiva a un mundo donde la libertad y el conocimiento sobrevivieran al compilador, un mundo con principios, un mundo con una sociedad libre.

La respuesta de Richard Stallman a las anteriores preguntas fue desarrollar un sistema operativo, software crucial para empezar a utilizar un ordenador sin verse obligado previamente a conspirar para privar de esto a sus amigos, optando por crear un sistema compatible con Unix (Sistema operativo portable, multitarea y multiusuario; desarrollado en 1969, por un grupo de empleados de los laboratorios Bell de AT&T, entre los que figuran Ken Thompson, Dennis Ritchie y Douglas McIlroy), su intención: dotarle así de portabilidad y facilitar el cambio a los usuarios de Unix al software libre. El nombre del proyecto GNU fue elegido según una tradición de los hackers, como un acrónimo recursivo de GNU’s Not Unix.

gnulinux-powered

En los años 70 cualquier sistema operativo decente incluía sus propios procesadores de comandos, ensambladores, compiladores, intérpretes, depuradores, editores de texto, gestores de correos y algunos videojuegos. Su primer labor fue crear desde cero un compilador de plataformas múltiples de desarrollo conocido como GCC (GNU Compiler Collection), debido a que el compilador Pastel inicialmente usado para la fecha requería muchos Megabytes de espacio y el sistema Unix 68000 de entonces sólo disponga 64 Kilobytes.

En septiembre de 1984 inició a trabajar en EMACS y para inicios de 1985 ya podía utilizarse, lo que permitió comenzar a usar el sistema Unix para labores de edición. (EMACS al igual que Vi ó Ed es un editor de texto personalizable, autodocumentado y de tiempo real)

En aquel momento había gente interesada en utilizar GNU Emacs lo que planteó el problema de la distribución, cuya solución viene dada por el copyleft, método empleado que utiliza la ley de copyright, pero dándole la vuelta para servir a un propósito opuesto al habitual: en lugar de privatizar el software, ayuda a preservarlo como software libre.

La idea fundamental del copyleft es que se autoriza la ejecución del programa, su copia, codificación y distribución de versiones modificadas, siempre que no se añada ninguna clase de restricción a posteriori. De este modo las libertades cruciales que definen al software libre quedan garantizadas para cualquiera que posea su copia; estas libertades se convierten en derechos inalienables. Una forma específica de copyleft para la mayor parte del software GNU es la licencia pública general GNU (GNU GPL).

Ya en 1985 se crea la FSF (Free Software Foundation) una organización sin ánimo de lucro dedicada al desarrollo del software libre. Para 1990, el sistema GNU, estaba casi terminado. Faltaba crear un solo componente central, el Kernel (Pieza de software capaz de gestionar recursos de alto nivel). El Kernel GNU Hurd no estaba listo para producción, afortunadamente otro kernel compatible con Unix llamado Linux y desarrollado por Linus Torvals estaba a disposición.

Para quienes no lo sepan: Un sistema operativo no significa sólo un Kernel, esta pieza de software apenas permite ejecutar otros programas, por ello, en adelante, incluirás las iniciales GNU cuando hables sobre el sistema operativo GNU/Linux.

A la fecha según Richard Stallman el interés en el software crece a un ritmo superior que la conciencia de la filosofía en que se fundamenta, y esto plantea ciertas dificultades, como lo son las patentes de software que restringen algoritmos y funciones al menos durante 20 años; las bibliotecas no libres que dan lugar a un sistema con más posibilidades y menos libertad; el hardware secreto dificultando escribir drivers libres y compatibles realizandose por ingeniería inversa y la documentación libre vista en la ausencia de buenos manuales para nuestros sistemas y sus derivaciones.

La tarea de enseñar a los nuevos usuarios el valor de la libertad se complicó en gran medida para 1998, con la aparición del Open Source ó software de código abierto. La comunidad partidaria de este término trataba de evitar la confusión entre libre y gratuito, un objetivo muy legítimo, pero parte de esta comunidad intentaban dejar de lado los principios que habían impulsado la creación del software libre y el proyecto GNU, procurando así atraer a ejecutivos y a los usuarios de empresas, quienes comparten mayoritariamente una ideología que antepone las ganancias económicas a la libertad, a la sociedad, a los principios, de modo que la retórica del “Código Abierto” se concentra en la posibilidad de crear un software de alta calidad y capacidad, pero rehuye las nociones de libertad, comunidad y principios. El proyecto GNU sigue empleando el término “Software Libre” para expresar la idea de que la libertad, y no solo la tecnología, es importante.

Pero querido lector no podemos pensar que el futuro de la libertad está asegurado. ¡No te deje engañar! Si quieres conservar tu libertad, tienes que estar preparado para defenderla…

Bibliografía

Libro “Software libre para una sociedad libre” por Richard M. Stallman

developer

Lecciones para desarrolladores excepcionales

Licencia Creative Commons

Diego Javier Mena Amado – Fragmentos del artículo “DESPIERTA DE LA MATRIX Y LIBERA TU CÓDIGO FUENTE – LIBERA TÚ MENTE” de la revista del Grupo GNU Linux de la Universidad Distrital FJC se distribuye bajo una Licencia Creative Commons Atribución 4.0 Internacional.

El desarrollador que usa solamente su cerebro sobre un proyecto cerrado está quedando detrás del que sabe como crear y desarrollar en un contexto abierto y evolutivo.

Estas son algunas lecciones que vienen de la experiencia propia de Eric S.Raymond en el desarrollo y evolución de PopMail a FetchMail (Software libre para la administración de correos electrónicos):

  1. Todo buen trabajo de software comienza a partir de las necesidades personales del programador. (Todo buen trabajo empieza cuando uno mismo tiene que rascarse su propia comezón)
  2. Los buenos programadores saben que escribir, los mejores, que reescribir y reutilizar.
  3. En cuanto a fragmentos de código fuente: contemple desecharlo; de todos modos tendrá que hacerlo.
  4. Si tienes la actitud adecuada, encontrarás problemas interesantes.
  5. Cuando se pierde el interés en un programa, el último deber es heredarlo a un sucesor competente.
  6. Tratar a los usuarios como colaboradores es la forma más apropiada de mejorar el código, y más efectiva de depurarlo.
  7. Libere rápido y a menudo, escuche a sus clientes.
  8. Dada una base suficiente de desarrolladores asistentes y beta-testers, casi cualquier problema puede ser caracterizado rápidamente, y su solución ser obvia al menos para alguien.
  9. Las estructuras de datos inteligentes y el código burdo funcionan mucho mejor que en el caso inverso.
  10. Si usted trata a sus analistas (beta-testers) como si fueran su recurso más valioso, ellos le responderán convirtiéndose en su recurso más valioso.
  11. Lo más grande, después de tener buenas ideas, es recoger las buenas ideas de sus usuarios. Esto último es a veces lo mejor.
  12. Frecuentemente, las soluciones más innovadoras y espectaculares provienen de comprender que la concepción del problema era errónea.
  13. La perfección en el diseño se alcanza no cuando ya no hay nada que agregar, sino cuando ya no hay nada que quitar.
  14. Toda herramienta es útil empleándose de la forma prevista, pero una gran herramienta es la que se presenta a ser utilizada de la manera menos esperada.
  15. Cuando se escribe software para una puerta de enlace de cualquier tipo, hay que tomar la precaución de alterar el flujo de datos lo menos posible y nunca eliminar información a menos que los receptores obliguen a hacerlo.
  16. Un sistema de seguridad es tan seguro como secreto. Cuídese de los secretos a medias.
  17. Para resolver un problema interesante, comience por encontrar un problema que resulte interesante.
  18. Si el coordinador de desarrollo tiene un medio al menos tan bueno como lo es Internet, y sabe dirigir sin coerción, muchas cabezas serán inevitablemente mejor que una.

De la comunidad, para la comunidad y como lo dijo Richard Stallman en su visita por Colombia: “Con el software solo hay dos posibilidades o los usuarios tienen el control del programa o el programa tiene el control de los usuarios.”

¿Tú qué eliges?

Bibliografía

Libro “La Catedral y el Bazar” por Eric S.Raymond

vagrant1

Interfaz eth1 de vagrant no auto inicia

En el sistema operativo Centos 7 al iniciar con vagrant hay que forzar a iniciar la interfaz con ifup eth1, esto resulta repetitivo de hacer en cada vagran up.

La configuracion usada para la máquina en el Vagrantfile fue:

config.vm.network "private_network", ip: "192.168.69.69"

Para solucionarlo se puede poner una línea de más en el Vagrantfile.

config.vm.provision "shell", inline: "service network restart", run: "always"

Gracias a @andresvia se pudo encontrar una mejor solución:

# 1.9.1 workaround para centos/7
  if Vagrant::VERSION == "1.9.1" && config.vm.box == "centos/7"
    config.vm.provision "shell", inline: "service network restart", run: "always"
  end

El problema es conocido https://seven.centos.org/2016/12/updated-centos-vagrant-images-available-v1611-01/

Esperamos que les ayude.

Grupo GNU/Linux UD

argo_uml

ArgoUML, Solved: ERROR: unable to get localhost information.

Al intentar ejecutar ArgoUML obtuve el siguiente error:

> ./argouml2.sh
> java -jar argouml.jar
log4j:WARN No such property [follow] in org.apache.log4j.ConsoleAppender.
ERROR: unable to get localhost information.
java.net.UnknownHostException: ulises: ulises: unknown error
    at java.net.InetAddress.getLocalHost(InetAddress.java:1505)
    at org.argouml.application.Main.checkHostsFile(Main.java:639)
    at org.argouml.application.Main.initPreinitialize(Main.java:289)
    at org.argouml.application.Main.main(Main.java:165)
Caused by: java.net.UnknownHostException: ulises: unknown error
    at java.net.Inet6AddressImpl.lookupAllHostAddr(Native Method)
    at java.net.InetAddress$2.lookupAllHostAddr(InetAddress.java:928)
    at java.net.InetAddress.getAddressesFromNameService(InetAddress.java:1323)
    at java.net.InetAddress.getLocalHost(InetAddress.java:1500)
    ... 3 more
On Unix systems this usually indicates thatyour /etc/hosts file is incorrectly setup.
Stopping execution of ArgoUML.

Leyendo en foros la solución es realizar un apuntador del nombre de la máquina a la IP de loopback. https://forums.gentoo.org/viewtopic-t-620624-start-0.html

Cuando ejecuto el comando de hostname se obtiene el siguiente resultado:

$ hostname
ulises

De esta manera se configura la línea de loopback en el archivo /etc/host

En un principio estaba:

127.0.0.1    localhost

Luego, es solo agregar el hostname de esta manera:

127.0.0.1    localhost ulises

Espero que a otras personas le sirva. Buena suerte!

Grupo GNU/Linux Universidad Distrital.

arduino

Tutorial básico de Arduino con ATOM

 

Es posible que, si has trabajado con Arduino en algún momento, te hayas dado cuenta de que su entorno integrado de desarrollo IDE no es precisamente la mejor parte de Arduino. Desde hace varios meses, me encuentro usando una sencilla alternativa que le permite verficar su código fuente y programar el microcontrolador mediante una herramienta igualmente gratuita que desde mi punto de vista es mucho mejor.

Algunos desarrolladores de hardware consideran el IDE de Arduino  poco funcional y es por ello que comparto con ustedes este tutorial.

En este tutorial se expone el uso del editor de texto ‘hackeable’ del siglo XXI (ATOM) y temas relevantes para trabajar con alguno de los microcontroladores que ofrece la Tienda de Arduino

arduino

Lo primero que vamos a hacer es descargar ATOM directamente desde su sitio oficial.

Para usuarios Ubuntu, prodecemos a lanzar en terminal los siguientes comandos:

sudo add-apt-repository ppa:webupd8team/atom
sudo apt-get update
sudo apt-get install atom

Si te descargas Atom, te darás cuenta que por defecto no vamos a poder compilar ni subir código y, aunque técnicamente si podemos escribir código, no disponemos de ninguna ayuda que lo diferencie de abrir el editor de texto que viene con tu sistema operativo y empezar a “trabajar con hardware”.

Procedemos entonces a instalar un paquete llamado platform-io el cual le permitirá no solo programar microcontroladores de la familia de Arduino, sino también, placas de desarrollo de Adafruit, Arduboy, Armstrap, BBC, BQ, BitWizard, Digilent, DigiStump, Doit, ESPert,  Embedded Artist, Freescale, Intel, SeeedStudio, Silicon Labs, SparkFun, Raspberry’s, entre otros no muy conocidos.

Nos dirigimos al menu –> Edit/Preferences/Install y en el campo de busqueda colocamos en busqueda el paquete platform-io, como se muestra en la imagen.

ardu

Cierras y abres el editor para empezar a sentir la magia…

Desarrollo rápido
C / C ++ inteligente (finalización de código y código inteligente Linter) para el desarrollo rápido profesional. Multi-proyectos de flujo de trabajo con paneles múltiples. Temas de Apoyo con colores oscuros y claros.
Desarrollo Integrado
Sistema de construcción de plataforma cruzada sin dependencias externas al software del sistema operativo: mas de 300 tableros, más de 15 plataformas de desarrollo, mas de 10 marcos de trabajo. Arduino y ARM mbed compatibles.
Terminal incorporado
Terminal incorporado con la herramienta PlatformIO CLI y el apoyo de un poderoso monitor del puerto serial. Todos los instrumentos avanzados sin salir de su entorno de desarrollo preferido.

ardu1

Dejare que exploren por su cuenta la creación de un nuevo proyecto, solo para que por su cuenta valide lo que le estoy mencionando arriba y te asombres de la cantidad de placas de hardware que no conocías hehehehe

Ahora bien, ¿Que es lo mínimo que debo saber para trabajar con un microcontrolador?

MANEJO DE PINES

ardu2

Entradas y salidas digitales: Están situadas en la parte derecha de la placa, van del 0 hasta el 13, este ultimo pin lleva una resistencia interna incluida. La señal digital puede estar o encendida o apagada (LOW o HIGH). Por ejemplo, se utilizan para hacer parpadear un LED ó como entrada para interpretar un pulsador. Los pines cero y uno se emplean para cargar el programa en la placa. Los pines 2 y 3 sirven para realizar manejo de interrupciones.

Salidas analógicas PWM: Son los pines 11, 10, 9, 6, 5 y 3, si se fijan tienen una raya curva al lado, se denominan salidas PWM (Pulse Width Modulation) que realmente son salidas digitales que imiten salidas analógicas, modificando la separación entre los diferentes pulsos de la señal. La señal PWM puede dar diversos valores de 0-255, se utilizan, por ejemplo para variar la intensidad de un LED o hacer funcionar un servo. Hay que decir que estos pines funcionan como salidas o entradas digitales ó tambien como salidas analógicas.

Entradas analógicas: Son los pines A0, A1, A2, A3, A4 y A5 (analog in). Se utilizan para tomar lectura de una señal por lo general para sensores analógicos, por ejemplo un sensor de temperatura, un LDR ó hasta un potenciómetro que permitan un valor variable de 0-VCC.

Pines de alimentación  
GND: Son los pines a tierra de la placa, el negativo.
5v: Por este pin suministra 5v
3,3v: Por este pin suministra 3,3v
Vin: Voltaje de entrada, por este pin también se puede alimentar la placa, útil para emplear baterias como alimentación de la placa.
RESET: Por este pin se puede reiniciar la placa.
IOREF: Sirve para que la placa reconozca el tipo de alimentación que requieren los shields
También podemos encontrar el pin AREF, arriba de todo a la izquierda de los pines digitales, este pin sirve para suministrar un voltaje diferente a 5v por los pines digitales.

También podemos reconocer el conector USB, necesario para cargar el programa, escribir o leer datos por monitor serial y también para alimentar la placa de desarrollo.

Ahora bien, manos a la obra… Hagamos algo divertido; un detector de luz para un posible parabrisas ó alguna otra aplicación donde crea sea útil sensar la luz de un entorno. El esquema es diagramado gracias al software Fritzing – Free Software – Sitio Oficial

Materiales: 2 Resistencias de 1KΩ, 2 LDR ó fotoresistencias, un led y una resistencia para limitarle corriente de 220Ω

ardu3

Crea un nuevo proyecto con ATOM a traves de platform-io (Parabrisas), asigna la placa de desarrollo con la que trabajarás (En nuestro caso, Arduino uno) y carga el siguiente código fuente, dentro del fichero src como se muestra en la figura

ardu4

Código fuente para jugarlo:

/*
 ***********************************************************************
 *              LIBRERIAS y CONSTANTES
 ***********************************************************************
 */
int pinLed = 5;
// Pin analogico de entrada para el LDR
int pinLDR1 = A3;
int pinLDR2 = A1;

// Variable donde se almacena el valor del LDR inicializada en cero
int voltajeLDR = 0;
int voltajeLDR2 = 0;

/*
 ***********************************************************************
 *              SETUP CONFIGURACIÓN INICIAL
 ***********************************************************************
 */
void setup() {
  Serial.begin(9600); //  Configuramos el puerto serial a 9600 baudios
  // Configuramos como salida el pin donde se conecta el led
  pinMode(pinLed, OUTPUT);
}

/*
 ***********************************************************************
 *              LOOP BUCLE PRINCIPAL
 ***********************************************************************
 */

void loop() {
  // Apagar todos los leds siempre que se inicia el ciclo
  digitalWrite(pinLed, LOW);

  // Guardamos el valor leido del ADC en una variable
  // El valor leido por el ADC (voltaje) aumenta de manera directamente 
  // proporcional
  // con respecto a la luz percibida por el LDR
  voltajeLDR= analogRead(pinLDR1);
  Serial.println("voltajeLDR1: ");
  Serial.println(voltajeLDR);

  voltajeLDR2= analogRead(pinLDR2);
  Serial.println("voltajeLDR2: ");
  Serial.println(voltajeLDR2);

  // Encender led por encima de un valor del ADC
  if(voltajeLDR < 600){
    digitalWrite(pinLed, LOW);
  }
  if(voltajeLDR > 768){
    digitalWrite(pinLed, HIGH);
  }
  // Esperar 200 milisegundos antes de actualizar
  delay(200);
}

Deberías observar como se enciende o apaga el led al bloquear la luz que llega a una de las foto-resistencias; puedes abrir el monitor serial para comprobar los cambios de tensión que ven tus sensores de luz desde el menú de la parte inferior izq – Aparece como un enchufe para que te conectes a otro mundo hehehe

No limites tus retos, reta tus límites 😉

 

cordova-ng-ionic

Configurar variables de entorno para Ionic en OpenSuse Tumbleweed 20160831

Explorando la herramienta me encuentro con el siguiente error:

$ ionic emulate android

add to body class: platform-android

Error: Failed to find 'ANDROID_HOME' environment variable. Try setting setting it manually.
Failed to find 'android' command in your 'PATH'. Try update your 'PATH' to include path to valid SDK directory.

Se establece la variable ANDROID_HOME en este caso a mi directorio de instalación del sdk de android para linux:

$ export ANDROID_HOME="$HOME/bin/android-sdk-linux"

Al configurar esto aparece otro error:

$  

You have been opted out of telemetry. To change this, run: cordova telemetry on.

Running command: /home/jorge2/workspace/visor-rutas-ionic/hooks/after_prepare/010_add_platform_class.js /home/jorge2/workspace/visor-rutas-ionic


add to body class: platform-android

Error: Failed to run "javac -version", make sure that you have a JDK installed.
You can get it from: http://www.oracle.com/technetwork/java/javase/downloads.
Your JAVA_HOME is invalid: /usr/lib64/jvm/java

Al hacer un ls a la ruta /usr/lib64/jvm/java se encuentra que no existe, y el comando javac tampoco, así que se procede a generar un enlace simbólico a la versión 1.8 de Java:

$ sudo ln -s /usr/lib64/jvm/java-1.8.0-openjdk-1.8.0/ /usr/lib64/jvm/java

$ sudo ln -s /usr/bin/java /usr/bin/javac

Esta vez avanza más la ejecución del comando, sin embargo no encuentra las herramientas adecuadas:

FAILURE: Build failed with an exception.

* What went wrong:
A problem occurred configuring root project 'android'.
> failed to find target with hash string 'android-23' in: /home/jorge2/bin/android-sdk-linux

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.


BUILD FAILED

Total time: 3 mins 0.485 secs

Error: /home/jorge2/workspace/visor-rutas-ionic/platforms/android/gradlew: Command failed with exit code 1 Error output:
FAILURE: Build failed with an exception.

* What went wrong:
A problem occurred configuring root project 'android'.
> failed to find target with hash string 'android-23' in: /home/jorge2/bin/android-sdk-linux

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.
Please install Android target: "android-23".

Hint: Open the SDK manager by running: /home/jorge2/bin/android-sdk-linux/tools/android
You will require:
1. "SDK Platform" for android-23
2. "Android SDK Platform-tools (latest)
3. "Android SDK Build-tools" (latest)

Esto se soluciona con:

$ export PATH=$PATH:$JAVA_HOME/bin:$ANDROID_HOME/tools:$ANDROID_HOME/platform-tools

Sin embargo sale un error que no encuentra tool.jar, así que se instala la versión devel que provee esta biblioteca:

$ zypper in java-1_8_0-openjdk-devel

Luego nos pide una máquina con lo cual:

Selecciona la versión de android a usar e instala

$ android sdk

Crea una máquina virtual

$ android avd

Las entradas  que fueron de utilidad:

http://geheimerschatz.altervista.org/Wordpress/programmazione/generale/problems-with-phonegap-or-cortana/

http://stackoverflow.com/questions/19722058/where-to-get-the-tools-jar-to-use-with-the-java-8-jdk-early-release

Grupo GNU/Linux Universidad Distrital