Cómo instalar Oracle Java 8 en Ubuntu 16.04 / Linux Mint 17 (Método PPA)

Ubuntu tiene OpenJDK instalado de forma predeterminada, pero en algunos casos puede que tenga que instalar Oracle Java en su lugar. Es posible instalar Oracle Java manualmente, sin embargo, el proceso es un poco largo y requiere muchos pasos.

Oracle Java se puede descargar desde el sitio web oficial aquí –
https://www.oracle.com/downloads/

Sin embargo, en este post vamos a instalar Oracle Java utilizando un paquete ppa mantenido por el equipo WebUp8. El paquete descarga las últimas compilaciones java de oracle en segundo plano y luego las instala y configura.

https://launchpad.net/~webupd8team/+archive/ubuntu/java

First check your existing java installation with the java command:
$ java -version

java version "1.7.0_95" OpenJDK Runtime Environment (IcedTea 2.6.4) (7u95-2.6.4-0ubuntu0.15.10.1) OpenJDK 64-Bit Server VM (build 24.95-b01, mixed mode)

En el ejemplo anterior OpenJDK está ya instalado, y va a ser reemplazado con Oracle Java.

Los siguientes pasos deberían funcionar en Ubuntu 16.10 o Linux Mint 18 y otras distribuciones linux basadas en Ubuntu similares.

1. Configure el PPA

Lo primero que debes hacer es configurar el ppa de webupd8 en tu sistema. Ejecute el comando siguiente y continúe.
$ sudo apt-add-repository ppa:webupd8team/java
$ sudo apt-get update

Después de configurar el repositorio ppa, actualice también la caché de los paquetes.

2. Instale el instalador de Java 8

Ahora instale el paquete denominado “oracle-java8-installer”. Este instalador va a descargar el actual Oracle JDK desde el sitio web de Oracle. Debe terminar en un par de minutos dependiendo de su velocidad de Internet

$ sudo apt-get install oracle-java8-installer

Una vez finalizada la instalación, Oracle Java está configurado. Ejecute el comando java de nuevo para comprobar la versión y el proveedor.

$ java -version
java version "1.8.0_xx"
Java(TM) SE Runtime Environment (build 1.8.0_xx)
Java HotSpot(TM) 64-Bit Server VM (build xx, mixed mode)

Donde xx es la versión actual de java.

3. Configurar Oracle Java como predeterminado

El repositorio ppa contiene otro paquete, que establece Oracle Java como el runtime de java predeterminado. Instálelo con el siguiente comando:

$ sudo apt-get install oracle-java8-set-default

Nota

Puede que prefiera quitar el paquete OpenJDK existente antes de instalar Oracle Java. Para eliminar los paquetes OpenJDK, ejecute el siguiente comando:

$ sudo apt-get purge openjdk-*

Si desea instalar Oracle Java manualmente utilizando los paquetes del sitio web de Oracle, consulte este tutorial en stackoverflow aquí.

Si usted tiene otras preguntas en el antedicho, sienta por favor libre de dejar un comentario abajo.

11 razones para utilizar Linux en vez de Windows

Aquí hay 11 razones por las que dicen por qué hay que migrar de Windows a un escritorio Linux.

1) ¡Linux es GRATIS!

A diferencia del sistema operativo Windows y sus actualizaciones relacionadas, la instalación del sistema operativo Linux y la actualización son absolutamente grauitas. Mientras que para el sistema operativo Windows tiene que desembolsar a Microsoft, Linux se ofrece a usted con la mejor interfaz libre de costo.

2) ¡La seguridad de los datos es la máxima prioridad!

Linux se ha desarrollado teniendo la seguridad de los datos del usuario como primera prioridad. Usted siempre habrá escuchado o por su experiencia personal, el dolor de la instalación y actualización del antivirus en Windows. Además del costo adicional del antivirus usted siempre tiene el riesgo de perder datos si no actualiza el antivirus a tiempo.

Sin embargo este no es el caso con un Linux, ya que no se requiere un antivirus en absoluto aquí! Virus y Malware es ajeno a Linux. Por lo tanto, el cambio a Linux no sólo le ahorrará dinero, sino también cada bit de datos almacenados en su disco duro.

3) Usted no tiene que dudar en ir a un nivel más bajo en el hardware!

La mayoría de los paquetes del sistema operativo Windows requieren una buena cantidad de almacenamiento para aplicaciones incorporadas y por lo tanto, puede que tenga que estar equipado con al menos 4 GB de espacio RAM para Windows 10. Linux funciona bien incluso en un hardware bajo de recursos. Con 1GB de RAM con Linux se puede ejecturar perfectamente. Incluso hay distribuciones que requieren 512 MB.

4) ¡Fácil de usar!

Es un mito que la interfaz de Linux es sólo para frikis. No es como los primeros tiempos en los que uno necesitaba ser un ninja en la línea de comandos. Las herramientas GUI han salido de la caja y Linux es actualmente tan fácil de usar como la interfaz de Windows.

5) ¡Los controladores ya no son un problema!

En el escritorio de Windows tenemos que encontrar el controlador que se adapte a nuestro sistema e instalarlo. Sin embargo, este no es el caso con Linux. Todos los controladores están directamente soportados por el Kernel de Linux. Por lo tanto, es más que un Plug and Play con Linux a diferencia de Windows donde uno necesita luchar instalando los controladores.

6) Interfaz atractiva

Linux tiene una interfaz mucho más atractiva si se compara con el escritorio de Windows. Estar en Unity, Cinnamon, Gnome 3, KDE, Mate o entornos de escritorio de gama baja como Xfce o Lxde, todos estos se ven mucho más atractivo que el escritorio de Windows. Se le permite elegir el sabor de escritorio de acuerdo a su elección.

7) Como iOS tienes un App Store

Al igual que iOS, Linux le permite tener su propio repositorio de software o tienda de aplicaciones. Se le permite tener todas las aplicaciones que se requieren en un solo lugar. Es más conveniente para encontrar la aplicación adecuada que necesita. Las aplicaciones en el repositorio de software están bien actualizadas y consumen menos espacio, y no es necesario luchar con la falta de espacio y la llamada continua de problemas para actualizaciones, como en un escritorio de Windows 10.

8) Fácil proceso de actualización

Cada uno de nosotros habría experimentado el tedioso y lento proceso de actualización en un escritorio de Windows. Este no es el caso con Linux. Las actualizaciones de Linux son sólo cuestión de un clic y no es necesario reiniciar el sistema para cada actualización. Todas las actualizaciones están vinculadas a la seguridad y las actualizaciones de aplicaciones, lo que hace que sea un proceso de una sola vez.

9) ¡Los juegos en Linux ya están aquí!

Linux le permite tener acceso a los juegos de Windows sólo a través de PlayOnLinux. También proporciona acceso a GOG.com y Steam donde una serie de juegos nativos de Linux se actualizan regularmente.

10) Soporte de la Comunidad Linux

Otra mejor característica de Linux es el Soporte de la Comunidad Linux. Linux dispone de varios foros y blogs que le proporcionan toda la información necesaria que necesita para utilizar un escritorio Linux.

11) Qué se ejecuta en su escritorio

Con la introducción de Windows 10, nunca se sabe lo que está funcionando en su escritorio y no puede obtener detalles más específicos en él. También con Windows 10, Microsoft puede empujar las actualizaciones a su computadora a voluntad (le sorprenderá ver una actualización al azar funcionar repentinamente). Pero con un Linux, está claro si solo mira la lista de paquetes, lo que se está ejecutando en tu computadora. Y nunca se le obliga a instalar una actualización ni se instala en su computadora automáticamente.

Estas son las 11 razones que hacen que usted debería considerar para utilizar Linux.

Deje de usar la tail -f (la mayoría de las veces)

Veo a mucha gente usando tail -f para monitorear archivos que están cambiando, en su mayoría archivos de registro. Si eres uno de ellos, déjame mostrarte una mejor alternativa: less +F

La documentación explica bien de qué se trata esto de +F : Desplazarse hacia adelante y sigue intentando leer cuando se llega al final del archivo. Normalmente este comando se usaría cuando ya esté al final del archivo. Es una forma de supervisar la cola de un archivo que está creciendo mientras se está viendo. (El comportamiento es similar al comando “tail -f“).

Así que dice que es similar a la tailf -f, pero ¿por qué creo que es mejor?

En pocas palabras, le permite cambiar entre navegación y modo de observación. Todos hemos estado allí: Estás viendo un archivo con la tailf -f, y entonces necesitas buscar algo en este archivo, o simplemente navegar hacia arriba y hacia abajo. Ahora necesitas salir de la cola (o abrir una nueva shell) o abrirlo con vim para encontrar lo que estás buscando. Después de eso, ejecuta la cola de nuevo para seguir viendo el archivo. No hay necesidad de hacer eso cuando se utiliza less.

Digamos que desea ver el archivo apache.log:

$ less +F apache.log
...
La información
importante
del archivo
log
aquí
...
Waiting for data... (interrupt to abort)

Aquí tienes prácticamente el mismo comportamiento que obtendrías con tail.

Ahora podemos hacer algo interesante, se desea buscar todas las apariciones de “foo”. Sólo puedes pulsar Ctrl-c para ir al modo “normal” de less (como si hubieras abierto el archivo sin el distintivo + F), y luego tendrás todas las funciones normales de less que esperas, incluida la búsqueda con /foo . Puede ir a la siguiente o anterior ocurrencia con n o N, subir y bajar con j y k, crear marcas con m y hacer todo tipo de cosas que less (1) diga que puede hacer.

Una vez que haya terminado, simplemente pulse F para volver al modo de observación nuevamente. Es fácil.

Cuando no usar menos

Cuando necesite ver varios archivos al mismo tiempo, tail -f puede darle una mejor salida.

 

Iptables: ejemplo para proteger un servidor web. Como Firewall

Uno de los Ataques al que será objeto un servidor web son aquellos como los de direcciones IP Enmascaradas o inválidas que intentan engañar al servidor para que entienda que los paquetes que recibe llegan desde la red interna o de una red confiable. Otro de los eventos al que es expuesto es al escaneo de puertos de comunicación que tiene como objetivo ver que puertos de comunicación tiene abierto el equipo y así determinar los servicios que está corriendo y utilizar esa información como base a un posible ataque.

El script de abajo, lo he estado provando mis servidores web y las reglas han mostrado ser efectivas. El script consiste en reglas de iptables para detener los paquetes inválidos y que llegan desde direcciones enmascaradas, intenta además detener el escaneo de puertos bloqueando por un tiempo determinado la dirección ip desde donde se origina. Otra de las mejores prácticas que se siguen aquí es la de descartar las conexiones a todos los puertos de comunicación y solo crear reglas con los puertos que realmente vamos a necesitar.

En este script permito las conexiones a los puertos HTTP (80), SSH (22), HTTPS (443), SMTP (25) y descarto cualquier otro. Se puede modificar según las necesidades. Por Ejemplo, el script permite solo los puertos 80 ya que es un servidor web sin certificado Digital y el 22 para las tareas de administración.

El Script para Firewall

# firewall.sh
#Limpiar Reglas Existentes
iptables -F

# INPUT
# Aceptar loopback input
iptables -A INPUT -i lo -p all -j ACCEPT

#Permitir Handshake de tres vias<
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

#Detener Ataques Enmascarados<
iptables -A INPUT -p icmp -m icmp --icmp-type address-mask-request -j DROP
iptables -A INPUT -p icmp -m icmp --icmp-type timestamp-request -j DROP
iptables -A INPUT -p icmp -m icmp -m limit --limit 1/second -j ACCEPT

#Descartar Paquetes Inválidos
iptables -A INPUT -m state --state INVALID -j DROP
iptables -A FORWARD -m state --state INVALID -j DROP
iptables -A OUTPUT -m state --state INVALID -j DROP

#Descartar paquetes RST Excesivos para Evitar Ataques Enmascarados
iptables -A INPUT -p tcp -m tcp --tcp-flags RST RST -m limit --limit 2/second --limit-burst 2 -j ACCEPT

#Cualquier IP que intente un Escaneo de Puertos sera Bloqueada por 24 Horas.
iptables -A INPUT -m recent --name portscan --rcheck --seconds 86400 -j DROP
iptables -A FORWARD -m recent --name portscan --rcheck --seconds 86400 -j DROP

#Pasadas las 24 Horas, remover la IP Bloqueada por Escaneo de Puertos
iptables -A INPUT -m recent --name portscan --remove
iptables -A FORWARD -m recent --name portscan --remove

#Esta Regla agrega el Escaner de Puertos a la Lista de PortScan y Registra el Evento.
iptables -A INPUT -p tcp -m tcp --dport 139 -m recent --name portscan --set -j LOG --log-prefix "Portscan:"
iptables -A INPUT -p tcp -m tcp --dport 139 -m recent --name portscan --set -j DROP

iptables -A FORWARD -p tcp -m tcp --dport 139 -m recent --name portscan --set -j LOG --log-prefix "Portscan:"
iptables -A FORWARD -p tcp -m tcp --dport 139 -m recent --name portscan --set -j DROP

#Permitir estos puertos desde Fuera
# smtp
iptables -A INPUT -p tcp -m tcp --dport 25 -j ACCEPT
# http
iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
# https
iptables -A INPUT -p tcp -m tcp --dport 443 -j ACCEPT
# ssh & sftp
iptables -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT

#Descartar cualquier otra Entrada
iptables -A INPUT -j REJECT

#Permitir el Ping
iptables -A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT

#OUTPUT
iptables -A OUTPUT -o lo -j ACCEPT
iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

#Permitir estos puertos desde Fuera
# smtp
iptables -A OUTPUT -p tcp -m tcp --dport 25 -j ACCEPT
# http
iptables -A OUTPUT -p tcp -m tcp --dport 80 -j ACCEPT
# https
iptables -A OUTPUT -p tcp -m tcp --dport 443 -j ACCEPT
# ssh & sftp
iptables -A OUTPUT -p tcp -m tcp --dport 22 -j ACCEPT

#Permitir Pings
iptables -A OUTPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT

#Descartar cualquier otra Salida
iptables -A OUTPUT -j REJECT

#No Permitir Forward
iptables -A FORWARD -j REJECT

Como obtener información sobre el sistema de hardware en linux

Muchos de nosotros conocemos comandos como lsusb, lspci, lscpu o simplemente lshw, comandos que nos sirven para obtener vasta información de nuestro sistema. Hoy les traigo otro comando que a mi parecer nos brinda mucha más información: dmidecode.

Los comandos

Los siguientes comandos tienen que ser ejecutados como root o con sudo!:

Por ejemplo, vamos a obtener información básica de nuestro sistema:
sudo dmidecode -t System

Esta es la información básica del Sistema, también se puede mostrar la información del Bios:
sudo dmidecode -t BIOS
Así como algo que encontrarán más interesante:
sudo dmidecode -t Processor
Las opciones son varias, pueden usar el nombre de lo que desean conocer (System, BIOS, etc) o el número que lo identifique.

Si desean tener aún más opciones para dmidecode lean el manual de la aplicación, lo pueden ver escribiendo en una terminal: man dmidecode

Conocer el estado de los disco duros en linux

Todos los servidores que corren Linux facilitan enormemente la tarea de detectar fallos en discos duros, proceder a su parada y sustituirlos por otros nuevos, integrándolos transparentemente en el RAID que solemos implementar en nuestros servidores.

¿Cómo se detecta que un disco es defectuoso? La primera pista nos la va a dar un cambio drástico en el servidor: bajada de rendimiento, problemas de acceso a ficheros, servicios caídos, etc. Es en ese momento cuando debemos pasar a comprobar la salud de los discos duros del sistema y descubrir cuál (o cuales) es el que tiene problemas.
La forma más directa y sencilla de comprobar si un disco duro está teniendo problemas es consultar el registro de los mensajes del núcleo con el comando dmesg. Ahí buscaremos referencias a errores de acceso a disco, problemas en las operaciones de lectura/escritura, menciones a relocalización de sectores, etc.

dmesg | less
...
 ata2.00: failed command: READ FPDMA QUEUED
 ata2.00: cmd 60/08:00:d8:5b:89/00:00:89:00:00/40 tag 0 ncq 4096 in
 res 41/40:08:d8:5b:89/00:00:89:00:00/00 Emask 0x409 (media error)
 ata2.00: status: { DRDY ERR }
 ata2.00: error: { UNC }
 sd 1:0:0:0: [sdb] Unhandled sense code
 sd 1:0:0:0: [sdb] Result: hostbyte=DID_OK driverbyte=DRIVER_SENSE
 sd 1:0:0:0: [sdb] Sense Key : Medium Error [current] [descriptor]
 sd 1:0:0:0: [sdb] Add. Sense: Unrecovered read error - auto reallocate failed
 sd 1:0:0:0: [sdb] CDB: Read(10): 28 00 89 89 5b d8 00 00 08 00
 end_request: I/O error, dev sdb, sector 2307480536
 ...

En el ejemplo vemos que el disco problemático es sdb. Igualmente sencillo es comprobar si se ha caído algún disco del RAID del servidor:

cat /proc/mdstat
Personalities : [raid1]
 md3 : active raid1 sda4[2] sdb4
 1839220031 blocks super 1.2 [2/1] [U_]

De nuevo comprobamos que sdb es el culpable. Sin embargo, al tratarse de servidores, la forma más adecuada de detectar fallos en los discos es mediante la prevención a través de un sistema de monitorización al que incorporemos los controles necesarios, normalmente basados en la tecnología S.M.A.R.T. que se encuentra presente en los discos duros desde hace ya muchos años.

El soporte S.M.A.R.T. en Linux se consigue a través del paquete smartmontools, que permite controlar y monitorizar sistemas de almacenamiento utilizando dicha tecnología. De hecho, se incluye un demonio que nos avisa inmediatamente si se producen errores en alguno de los discos monitorizados.

Una vez identificado el disco defectuoso procedemos a comprobar su salud mediante smartctl, una herramienta de línea de comandos incluida en smartmontools. Con esta utilidad podremos no sólo obtener detallada información sobre el disco, sino además llevar a cabo completos tests que nos mostrarán si es defectuoso y cuál es el defecto concreto. Veamos unos ejemplos.

Para obtener información sobre un disco tenemos a nuestra disposición varios parámetros. Si queremos información sobre el hardware:

smartctl -i /dev/sdb

=== START OF INFORMATION SECTION ===
Device Model: ST…
Serial Number: W…
Firmware Version: C…
User Capacity: 3,000,592,982,016 bytes
Device is: Not in smartctl database [for details use: -P showall]
ATA Version is: 8
ATA Standard is: ATA-8-ACS revision 4
Local Time is: Fri Nov 22 12:33:54 2013 CET
SMART support is: Available – device has SMART capability.
SMART support is: Enabled

Podemos ampliar estos datos con la información SMART del disco duro con el parámetro -a. Si en cambio usamos -x, la salida del comando incluirá la información que no proviene de SMART.

smartctl -a /dev/sdb

=== START OF INFORMATION SECTION ===
 ...
=== START OF READ SMART DATA SECTION ===
 SMART overall-health self-assessment test result: PASSED

General SMART Values:
 Offline data collection status: (0x00) Offline data collection activity
 was never started.
 Auto Offline Data Collection: Disabled.
 Self-test execution status: ( 121) The previous self-test completed having
 the read element of the test failed.
 ...
 SMART Attributes Data Structure revision number: 10
 Vendor Specific SMART Attributes with Thresholds:
 ID# ATTRIBUTE_NAME FLAG VALUE WORST THRESH TYPE UPDATED WHEN_FAILED RAW_VALUE
 1 Raw_Read_Error_Rate 0x000f 107 098 006 Pre-fail Always - 186855524
 3 Spin_Up_Time 0x0003 093 093 000 Pre-fail Always - 0
 4 Start_Stop_Count 0x0032 100 100 020 Old_age Always - 8
 5 Reallocated_Sector_Ct 0x0033 092 092 036 Pre-fail Always - 10640
 7 Seek_Error_Rate 0x000f 083 060 030 Pre-fail Always - 219208774
 ...

Si alguno de los anteriores comandos falla, podemos añadir el parámetro -T permissive (e incluso -T verypermissive) para intentar que smartctl ignore los errores que pueda y obtenga toda la información posible del disco.

Pasemos a lo realmente interesante: la realización de tests en los discos duros. La primera y más sencilla opción que tenemos a nuestra disposición es el parámetro -H, que nos informa de la salud SMART del disco.

smartctl -H /dev/sdb
=== START OF READ SMART DATA SECTION ===
 SMART overall-health self-assessment test result: PASSED

Esta opción sólo indica que la salud es mala cuando el disco ya ha fallado o va a fallar en las próximas 24 horas. Podemos ver en el ejemplo que, a pesar de que sdb es defectuoso, se nos informa de que la salud SMART del disco es buena.

Para detectar el problema del disco en detalle contamos con el parámetro -t, que a su vez admite un argumento que indica el tipo de test a realizar: offline, short, long yconveyance. Todas estas pruebas se pueden realizar con el sistema en producción, a menos que usemos el parámetro -C, que las ejecuta en modo cautivo (no tiene efecto en tests de tipo offline). Este modo sirve para realizar las pruebas más rápidamente y tiene especial utilidad cuando la máxima prioridad es comprobar la salud del disco. La explicación en detalle de cada uno de estos tests se encuentra en el manual electrónico de smartctl.

Excepto en el mencionado modo cautivo, los tests se realizan en segundo plano, por lo que no obtenemos ninguna información por pantalla a menos que la pidamos explícitamente con el parámetro -l selftest. Dado que esto sólo nos muestra un instante del progreso del test, es interesante combinarlo con el comando watch, que por defecto realiza la tarea que le asignemos cada dos segundos. Veamos un ejemplo:

smartctl -t short /dev/sdb
=== START OF OFFLINE IMMEDIATE AND SELF-TEST SECTION ===
 Sending command: "Execute SMART Short self-test routine immediately in off-line mode".
 Drive command "Execute SMART Short self-test routine immediately in off-line mode" successful.
 Testing has begun.
 Please wait 1 minutes for test to complete.
 Test will complete after ...

Use smartctl -X to abort test.

watch smartctl -l selftest /dev/sdb
Every 2,0s: smartctl -l selftest /dev/sdb

=== START OF READ SMART DATA SECTION ===
 SMART Self-test log structure revision number 1
 Num Test_Description Status Remaining LifeTime(hours) LBA_of_first_error

1 Short offline Completed: read failure 90% 15073 2307480536

¡Eureka, hemos encontrado el defecto del disco sospechoso! Se trata de un error de lectura en al menos un sector del disco, siendo el primero detectado el especificado en la salida de smartctl. Ahora sólo queda cambiarlo por uno nuevo y llevar el defectuoso al fabricante a que nos lo cambie (si está en garantía, claro). Por cierto, en el ejemplo vemos cómo se nos informa de que podemos abortar cualquier test con smartctl -X.

Como curiosidad, si necesitamos conocer el modelo y número de serie del disco para el trámite con el fabricante, podemos obtenerlos con este sencillo comando (además de con smartctl -i):

hdparm -i /dev/sdb | grep SerialNo
Model=ST..., FwRev=C..., SerialNo=W...