martes, 10 de noviembre de 2020

GlobalProtect se queda conectando en macOS

GlobalProtect se queda conectando en macOS 


Hola.

En esta ocasión voy a escribir sobre un error que tengo al utilizar GlobalProtect para conectarme a una VPN.

Anteriormente estaba usando Cisco AnyConnect para conectarme a la VPN por lo que es la primera vez que instalo y uso GlobalProtect.

Después de realizar los pasos de instalación, ejecuto el programa y hago click en Connect

El problema es que la pantalla se queda en estatus de connecting pero no pasa de ahí como se ve en la imagen siguiente.

GlobalProtect connecting

Buscando acerca de este error me encontré que se tiene que activar una extension en MacOS para poder  ejecutar GlobalProtect correctamente. 

Al parecer me había brincado un paso en la configuración de GlobalProtect.... My bad. 

Solución.

1.- Ir a System Preferences de MacOS

2.- Seleccionar Security & Privacy

3.- En el tab General hacer click en el candadito para hacer cambios e introducir las credenciales correspondientes.

4.- Click en el botón de Allow al lado del mensaje "System software from developer "Palo Alto Networks" was blocked from loading"

También puede ser que se abra una ventana en dónde tienen que elegir el programa que están habilitando.   

GlobalProtect Allow

Una vez hecho esto, intenten nuevamente y ya deben poder conectarse exitosamente.

Espero les sirva.

Saludos.



 



viernes, 4 de septiembre de 2020

Cómo crear un .bash_profile en Mac

 Cómo crear un .bash_profile en Mac


Qué onda.

En esta ocasión voy a describir cómo crear un archivo .bash_profile en Mac. En ocasiones anteriores lo he hecho pero no había tenido la oportunidad de postearlo.

Como ya saben y seguramente es la razón por la que están aquí, el crear un .bash_profile de este tipo es muy útil cuando necesitamos persistir variables de ambiente en la Mac.

La razón por la que estoy creando uno es porque estoy realizando varias instalaciones que tienen dependencias. No puedo continuar con una instalación si la anterior no está lista con sus variables de ambiente establecidas y disponibles.

Solución.

1.- Iniciar una Terminal

2.- Moverte a tu home folder: 

cd ~/ 

3.- Si no existe, crear el archivo con: 

touch .bash_profile

3.- Abrir el archivo para editar con:

open -e .bash_profile

En este archivo ponen sus lineas de EXPORT para setear las variables que necesiten.

4.- Tienen que recargar el archivo en la terminal actual para ver los cambios que acaban de hacer:

source .bash_profile

Esto lo tienen que hacer en cada terminal que tengan abierta y requieran los valores que acaban de setear, por default una nueva terminal tendrá las valores disponibles.

Eso es todo. Espero les sirva

jueves, 3 de septiembre de 2020

cordova requirements failed en Mac

cordova requirements failed en Mac


Hola.

Me salió el error de abajo al intentar instalar cordova

La version de cordova es 10.0.0

La versión de Android Studio es 4.0.1

Estoy atorado en la sección de pre requisitos de Android  por el siguiente error.


MBP13:hello jhernand$ cordova requirements


Requirements check results for android:

Java JDK: installed 1.7.0

Android SDK: installed true

Android target: not installed 

Command failed with exit code 1: avdmanager list target

Exception in thread "main" java.lang.UnsupportedClassVersionError: com/android/sdklib/tool/AvdManagerCli : Unsupported major.minor version 52.0

at java.lang.ClassLoader.defineClass1(Native Method)

at java.lang.ClassLoader.defineClass(ClassLoader.java:800)

at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)

at java.net.URLClassLoader.defineClass(URLClassLoader.java:449)

at java.net.URLClassLoader.access$100(URLClassLoader.java:71)

at java.net.URLClassLoader$1.run(URLClassLoader.java:361)

at java.net.URLClassLoader$1.run(URLClassLoader.java:355)

at java.security.AccessController.doPrivileged(Native Method)

at java.net.URLClassLoader.findClass(URLClassLoader.java:354)

at java.lang.ClassLoader.loadClass(ClassLoader.java:425)

at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)

at java.lang.ClassLoader.loadClass(ClassLoader.java:358)

at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:482)

Gradle: installed /usr/local/Cellar/gradle/4.2.1/bin/gradle


Solución.

El error se debe a que la versión de JDK debe ser 1.8 y que la variable de ambiente JAVA_HOME debe apuntar allí.

Yo tenía la versión 1.7 y al parecer la versión de Gradle que instalé como parte de los pre requisitos requiere JDK 1.8

Después de instalar el JDK 1.8, ahora veo dos versiones disponibles del JDK y actualizo la variable JAVA_HOME en el archivo .bash_profile con un comando export como muestro abajo.

export JAVA_HOME=`/usr/libexec/java_home -v 1.8`

MBP13:~ jhernand$ /usr/libexec/java_home -V

Matching Java Virtual Machines (2):

    1.8.0_261, x86_64: "Java SE 8" /Library/Java/JavaVirtualMachines/jdk1.8.0_261.jdk/Contents/Home

    1.7.0_79, x86_64: "Java SE 7" /Library/Java/JavaVirtualMachines/jdk1.7.0_79.jdk/Contents/Home


/Library/Java/JavaVirtualMachines/jdk1.8.0_261.jdk/Contents/Home

jangel-MBP13:~ jhernand$ open -e .bash_profile

jangel-MBP13:~ jhernand$ source .bash_profile

jangel-MBP13:~ jhernand$ echo $JAVA_HOME

/Library/Java/JavaVirtualMachines/jdk1.8.0_261.jdk/Contents/Home


Una vez hecho esto, ejecutar nuevamente el comando cordova requirements y ya deben tener un resultado similar al de abajo.

MBP13:hello jhernand$ cordova requirements


Requirements check results for android:

Java JDK: installed 1.8.0

Android SDK: installed true

Android target: installed android-30,android-29

Gradle: installed /usr/local/Cellar/gradle/4.2.1/bin/gradle


Espero les sirva.





domingo, 19 de julio de 2020

Failed to mount /sysroot - Error al iniciar VM en VirtualBox

Failed to mount /sysroot - Error al iniciar VM en VirtualBox


Hola.

Me encontré con este error en VirtualBox al iniciar mi máquina virtual de Oracle Linux. 

Es importante mencionar que este error me ocurrió después de que mi computadora host se trabó con la VM corriendo y tuve que reiniciarla con el clásico botonazo. Es decir que no la apagué correctamente y al intentar prenderla obtengo el siguiente error:

[    10.658694] BTRFS: failed to read tree root on sda3
[    10.665086] BTRFS: open_ctree failed
[FAILED] Failed to mount /sysroot.
See 'systemctl status sysroot.mount' for details.
[DEPEND] Dependency failed for Initrd Root File System.
[DEPEND] Dependency failed for Reload Configuration from the Real Root.
[     OK     ] Stopped dracut pre-udev hook.
[     OK     ] Stopped dracut cmdline hook.
[     OK     ] Stopped dracut initqueue hook.
[     OK     ] Reached target Initrd File Systems.
[     OK     ] Stopped target Basic System.
[     OK     ] Stopped target System Initialization.
[     OK     ] Started Emergency Shell.
[     OK     ] Reached target Emergency Mode.
Generating "/run/initramfs/rdsosreport.txt"
Entering emergency mode. Exit the shell continue.
Type "journalctl" to view system logs.
You might want to save "/run/initramfs/rdsosreport.txt" to a USB stick or /boot after mounting them and attach it to a bug report.
:/#
Como lo describe el error existe un error en la partición sda3. De acuerdo a cómo sucedió el error se puede inferir que es una corrupción de archivos en esa partición que impide el inicio del sistema.

Al intentar verificar el estado de esa partición con la instrucción btrfs check /dev/sda3 obtengo lo siguiente:

parent transid verify failed on 165429248 wanted 13999 found 13453
parent transid verify failed on 165429248 wanted 13999 found 13453
parent transid verify failed on 165429248 wanted 13999 found 13453
parent transid verify failed on 165429248 wanted 13999 found 13453
Ignoring transid failure
Couldn't setup extent tree
ERROR: cannot open file system

Como sugiere la primera descripción del error intento el comando systemctl status sysroot.mount. Esto me da toda la información del error que necesito para continuar.


systemctl status sysroot.mount



Ojo: Es muy importante tomar en cuenta que se puede perder información al ejecutar este comando por lo que sugiero mucho que hagan una copia de respaldo antes de intentar esto. Lo que yo hice fue clonar mi máquina virtual antes de esto en caso de no poder recuperarla.

El comando es: mount -t btrfs -o recovery,nospace_cache,clear_cache DEVICE MOUNTPOINT donde DEVICE es /dev/sda3 y MOUNTPOINT es /sysroot en mi caso.
:/# mount -t btrfs -o recovery,nospace_cache,clear_cache /dev/sda3 /sysroot
Una vez ejecutada el comando obtengo esta salida:

mount -t btrfs -o recovery,nospace_cache,clear_cache /dev/sda3 /sysroot


Después de esto apago la máquina con init 0 y la vuelvo a iniciar. 
Con esto ya puedo acceder nuevamente a mi maquina virtual. 


VirtualBox Oracle Linux Desktop


Les dejo link del video del procedimiento: https://youtu.be/UrEPbQikLPY 
 
Espero les sirva.

miércoles, 8 de julio de 2020

Cómo ver u ocultar contraseña con Javascript y jQuery

Cómo ver u ocultar contraseña con Javascript o jQuery


Hola.

En este post voy a compartir el código que pueden usar para ver u ocultar una contraseña con Javascript puro y con jQuery.

Se ha vuelto muy común en los formularios de login o de registro el ofrecer la posibilidad de ver y ocultar un campo de seguridad. El campo de seguridad más común es el de contraseña (input type=password)

ver-ocultar-contrasena-con-javascript-jQuery


En este caso estoy usado un objeto de tipo button y sus eventos de onmousedown y onmouseup

Los eventos dependerán del objeto que estén usando pero en general son los mismo eventos para cualquier tipo de objeto HTML. La funcionalidad y la manera de aplicarlo dependerá de sus requerimientos.

Les dejo abajo dos maneras jugando con los eventos y en Javascript puro además de jQuery.

Hay algo mágico al usar Javascript puro, es como volver el tiempo y usar el pelo largo 😂😄 y sobre todo sin librerías extras. Para el código con jQuery bueno ya saben que deben tener la librería incluida en su archivo.

1. Click al botón cambia de password a text y viceversa.

Javascript
<button type="button"  onmousedown="var p=document.getElementById('Password');p.type=='password'?p.type='text':p.type='password';">Click Me!</button>
jQuery
<button type="button"  onmousedown="$('#Password').attr('type')=='password'?$('#Password').attr('type','text'):$('#Password').attr('type','password');">Click Me!</button>

2. Presionado el botón cambia a texto y liberando el botón cambia a password.

Javascript
<button type="button"  onmousedown="var p=document.getElementById('Password');p.type='text'" onmouseup="var p=document.getElementById('Password');p.type='password';" >Click Me!</button>
jQuery
<button type="button"  onmousedown="$('#Password').attr('type','text');" onmouseup="$('#Password').attr('type','password');" >Click Me!</button>


Espero les sirva.

miércoles, 17 de junio de 2020

Cómo compartir folder en VirtualBox

Cómo compartir folder en VirtualBox


Hola.

En este post voy a escribir acerca de cómo compartir un folder en VirtualBox

Esto es algo muy común en el uso de maquinas virtuales porque siempre es necesario compartir archivos entre la máquina host y la máquina virtual. Para esto se requiere crear una folder compartido que sirva de puente entre ambas maquinas.

La primera idea que se me vino a la mente fue mandar las cosas por correo electrónico (😅) pero esto depende de que ambas tengan conexión a internet y que el archivo no sea pesado. Así que esta opción es poco práctica y no digna de alguien que se dedique a los sistemas. 

La mejor solución es seleccionar un folder en la máquina host y compartirlo en VirtualBox con la máquina virtual. Les dejo aquí abajo los pasos para realizar esto.

Solución.


Apagar la máquina virtual si la tienen prendida.

1.- Seleccionar la máquina desde VirtualBox. Click derecho y seleccionar Settings > Shared Folder

VirtualBox Settings Shared Folders

2.- Seleccionar el botón Add de la derecha para agregar un nuevo Shared Folder. Esto abrirá una ventana para seleccionar la ubicación del folder a compartir. 


VirtualBox Add Shared Folder

Es muy importante seleccionar la opción Auto-mount para que se monte como unidad externa al prender la máquina virtual. Click en OK para guardar los cambios.

3.- Prender la máquina virtual y el folder compartido ya debe aparecer como una unidad externa dentro de su navegador de archivos.

VirtualBox Carpeta Compartida


Espero les sirva.
Saludos.




martes, 16 de junio de 2020

Cómo exportar una máquina virtual con VirtualBox

Cómo exportar una máquina virtual con VirtualBox


Hola.

En este post voy a dejar los sencillos pasos para exportar una máquina virtual con VirtualBox

El archivo final exportado es un archivo con extensión ova. Este formato de archivo también conocido como Open Virtual Application es usado por aplicaciones de virtualización como VMware y VirtualBox

El archivo ova es es archivo con formato ovf (Open Virtualization Format), la diferencia es que ova es un un formato estándar usado para empaquetar y distribuir maquinas virtuales. 
 
Los pasos para exportar la VM son los siguientes:

1.- Seleccionar la máquina virtual y hacer click derecho. Seleccionar Export to OCI...

Export to OCI

2.- Seleccionar versión de formato, nombre del archivo destino, etc. Sugiero dejar las opciones default ante cualquier duda. Click en Continue.

Appliance Settings

3.- Seleccionar las opciones de sistema que queremos exportar. Click en Export.

System Appliance Settings

4.- El estatus del proceso de exportación aparece en pantalla,

Exporting to disk image


Al finalizar este proceso ya tienen disponible su archivo .ova listo para ser distribuido o compartido.


Espero les sirva.
Saludos.




lunes, 15 de junio de 2020

Cómo extender VDI con GParted en VirtualBox

Cómo extender VDI con GParted en VirtualBox


Hola.

Este post es una continuación del post anterior sobre cómo agregar espacio a una VDI.  En este post voy a explicar cómo extender una partición VDI con GParted en VirtualBox.

Una vez que la VDI ya tiene más espacio disponible, hay que entrar a la VM con GParted y ahí vamos a poder extender la unidad de disco. El espacio  disponible a extender es el que hemos aumentado anteriormente. En mi caso 10GB.

Solución.


La máquina virtual debe estar apagada para poder realizar el procedimiento.

1.- Descargar GParted del sitio oficial. La versión que yo usé es i686.


2.- Abrir VirtualBox y seleccionar la máquina virtual. Ir a Settings > Storage. 

VirtualBox-Settings-Storage

3.- Seleccionar Controller : IDE Controller > Empty. Esta es la unidad de CD.

Controller-IDE-Controller-Empty

4.- Del lado derecho en la opción Optical Drive, seleccionar el ícono del disco y la opción Choose/Create a Virtual Optical Disk... En esta nueva ventana seleccionar la opción Add 

Choose-Create-a-Virtual-Optical-Disk


5.- Seleccionar el archivo gparted-live-1.1.0-1-i686.iso recién descargado del sitio de GParted

gparted-live-1-1-0-1-i686-iso

6.- Hay que asegurarse que la unidad de disco sea la primera en el orden de inicio de la VM. Click en OK para guardar todo.

VirtualBox-Settings-System-Boot-Order

7.- Iniciar la máquina virtual. Aceptar las opciones default de GParted. (Keymap, language y mode)  hasta llegar a la ventana inicial del siguiente paso.

GParted-Live-Default-Settings


8.- Seleccionar la partición con el disco extendido. Click derecho y seleccionar Resize/Move. En esta ventana van a poder extender la unidad al espacio disponible. Pueden arrastrar o ingresar la cantidad en MB. Click en la flecha verde Apply All para guardar sus cambios.

GParted-Resize-Move

9.- Después de esto apagar e iniciar la máquina virtual. Seleccionar Exit > Shutdown. Click en OK.

GParted-Exit-Shutdown


10.- Iniciar la máquina normalmente y el espacio ya estará disponible. Verificar con el comando df -h
[oracle@localhost ~]$ df -h
Filesystem         Size  Used Avail Use% Mounted on
devtmpfs 1.8G 0 1.8G 0% /dev
tmpfs 1.9G 172K 1.9G 1% /dev/shm
tmpfs 1.9G 9.5M 1.8G 1% /run
tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup
/dev/sda3 35G 24G 11G 70% /
/dev/sdb1 30G 15G 15G 51% /u01
/dev/sda1 499M 168M 332M 34% /boot
VirtualBox_Shared 466G 227G 240G 49% /media/sf_VirtualBox_Shared
tmpfs 370M 32K 370M 1% /run/user/1000
tmpfs 370M 4.0K 370M 1% /run/user/42
[oracle@localhost ~]$

Tal vez tengan que mover el Boot Order de nuevo para que no vuelva a tomar el iso de GParted otra vez.


Espero les sirva.
Saludos.


miércoles, 10 de junio de 2020

Cómo agregar espacio a una VDI de VirtualBox en Mac OS

Cómo agregar espacio a una VDI de VirtualBox en Mac OS


Hola.

Recientemente me encontré con la necesidad de aumentar el espacio en disco duro de mi máquina virtual Linux en VirtualBox. Esto debido a que estuve realizando muchas instalaciones de complementos del sistema y terminé acabándome el espacio que tenia reservado.

Hace tiempo escribí un post sobre cómo agregar espacio a vmdk de VirtualBox en Mac OS. En esta ocasión el formato de la VM ya es vdi por lo que se evita cambiar el formato de disco de vmdk a vdi y viceversa.

La maquina virtual corriendo en VirtualBox es una Oracle Linux 7.6 y la estoy ejecutando sobre Mac OS.

Mi máquina virtual mostraba el mensaje de que debía liberar espacio. Esto estaba provocando que se apagara constantemente y sin previo aviso. Al no poder liberar espacio tuve que buscar la forma de aumentar el tamaño de la vdi.

Solución.


Para hacer esto se tiene que usar la utilidad modifyhd de VirtualBox con la opción de resize. Les dejo aquí los pasos que me funcionaron para aumentar el espacio en disco de la VM:

1.- Apagar la máquina virtual y cerrar VirtualBox.

2.- Abrir una terminal e ir a la ubicación de instalación de VirtualBox. En mi caso es la siguiente:

jhernand-MBP13:MacOS jhernand$ pwd /Applications/VirtualBox.app/Contents/Resources/VirtualBoxVM.app/Contents/MacOS

3.- Mostrar la información del disco duro virtual con la utilidad showhdinfo. Necesitarán la ruta física de la vdi. Cuidado con los espacios en blanco, estos se pueden escapar con diagonal inversa como muestro abajo:

jhernand-MBP13:MacOS jhernand$ VboxManage showhdinfo /Users/jhernand/Documents/VirtualMachines/OracleLinux7_BWCE/OracleLinux7_BWCE/Oracle\ DB\ Developer\ VM-disk001.vdi
UUID:           c7e10c18-3929-4916-be89-71e3c6a818e1
Parent UUID:    base
State:          created
Type:           normal (base)
Location:       /Users/jhernand/Documents/VirtualMachines/OracleLinux7_BWCE/OracleLinux7_BWCE/Oracle DB Developer VM-disk001.vdi
Storage format: vdi
Format variant: dynamic default
Capacity:       30000 MBytes
Size on disk:   29634 MBytes
Encryption:     disabled
Property:       AllocationBlockSize=1048576
In use by VMs:  OracleLinux7_BWCE (UUID: 325db862-244c-45f5-81c2-5427bf5a2a0f)

En este caso tengo 30 GB y voy a aumentar 10 GB más, es decir que la medida final será de 40GB. Las medidas se muestran en MBytes.

4.- Ejecutar la instrucción modifyhd con la opción de resize.

jhernand-MBP13:MacOS jhernand$ VboxManage modifyhd --resize 40000 /Users/jhernand/Documents/VirtualMachines/OracleLinux7_BWCE/OracleLinux7_BWCE/Oracle\ DB\ Developer\ VM-disk001.vdi
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%

5.- Para validar que el tamaño de la vdi ha cambiado, volver a ejecutar el comando showhdinfo.

jhernand-MBP13:MacOS jhernand$ VboxManage showhdinfo /Users/jhernand/Documents/VirtualMachines/OracleLinux7_BWCE/OracleLinux7_BWCE/Oracle\ DB\ Developer\ VM-disk001.vdi
UUID:           c7e10c18-3929-4916-be89-71e3c6a818e1
Parent UUID:    base
State:          created
Type:           normal (base)
Location:       /Users/jhernand/Documents/VirtualMachines/OracleLinux7_BWCE/OracleLinux7_BWCE/Oracle DB Developer VM-disk001.vdi
Storage format: vdi
Format variant: dynamic default
Capacity:       40000 MBytes
Size on disk:   29634 MBytes
Encryption:     disabled
Property:       AllocationBlockSize=1048576
In use by VMs:  OracleLinux7_BWCE (UUID: 325db862-244c-45f5-81c2-5427bf5a2a0f)


5.- Hasta aquí el espacio ya esta disponible pero se tiene que extender la partición del disco. Esto se puede hacer con GParted y lo voy a describir en el siguiente post.


Espero les sirva.
Saludos.

miércoles, 13 de mayo de 2020

Docker build error Unable to connect Failed to fetch

Docker build error Unable to connect Failed to fetch


Hola.

En este post voy a escribir acerca de un error que sale al intentar crear una imagen para Docker en la que hay instrucciones que requieren una descarga de archivos de  internet.

Es importante mencionar que estoy usando una máquina virtual Oracle Linux corriendo en VirtualBox.

Mi archivo Dockerfile se ve así:

FROM debian:jessie-slim
ADD . /
RUN chmod 755 /scripts/*.sh && apt-get update && apt-get --no-install-recommends -y install unzip ssh net-tools && apt-get clean && rm -rf /var/lib/apt/lists/*
ENTRYPOINT ["/scripts/start.sh"]

Al intentar ejecutar docker build obtengo error:

[oracle@localhost docker]$ sudo docker build -t dev/app .

En este caso la instrucción que provoca el error es app-get update la cual intenta descargar librerías de internet. Esta instrucción en particular es la que me estaba ocasionando los siguientes errores:

Step 4/5 : RUN chmod 755 /scripts/*.sh && apt-get update && apt-get --no-install-recommends -y install unzip ssh net-tools && apt-get clean && rm -rf /var/lib/apt/lists/*
 ---> Running in 4f1b0ff0f6dc
Err http://security.debian.org jessie/updates InRelease
  
Err http://security.debian.org jessie/updates Release.gpg
  Unable to connect to security.debian.org:http: [IP: 151.101.64.204 80]
.
. 
Err http://deb.debian.org jessie Release.gpg
  Unable to connect to deb.debian.org:http:
Err http://deb.debian.org jessie-updates Release.gpg
  Unable to connect to deb.debian.org:http:
Reading package lists...
W: Failed to fetch http://deb.debian.org/debian/dists/jessie/InRelease  

W: Failed to fetch http://security.debian.org/debian-security/dists/jessie/updates/InRelease  

W: Failed to fetch http://deb.debian.org/debian/dists/jessie-updates/InRelease  
.
.
W: Some index files failed to download. They have been ignored, or old ones used instead.
Reading package lists...
Building dependency tree...
Reading state information...
E: Unable to locate package unzip
E: Unable to locate package ssh
E: Unable to locate package net-tools
The command '/bin/sh -c chmod 755 /scripts/*.sh && apt-get update && apt-get --no-install-recommends -y install unzip ssh net-tools && apt-get clean && rm -rf /var/lib/apt/lists/*' returned a non-zero code: 100


Como ven el error es de comunicación, aunque la verdad es que me tomó mucho tiempo darme cuenta de esto. Inicialmente creí que las rutas estaban desactualizadas y que por eso fallaba al intentar descargarlas.

Intenté accediendo las rutas directamente con un navegador de internet y me confundía porque algunas sí existían y algunas no.

Después de investigar en internet, la razón puede ser que la conexión de red que utiliza Docker no está conectada y provoca este tipo de errores.

Para checar si la conexión de internet está funcionando pueden intentar el siguiente comando:

[oracle@localhost docker]$ sudo docker run busybox nslookup google.com
;; connection timed out; no servers could be reached

Solución

La solución que me funcionó fue agregar el parámetro --network=host en la instrucción de docker build. Esto indica que se utilice la configuración de red del host desde donde se está ejecutando el comando.

[oracle@localhost docker]$ sudo docker build --network=host -t dev:app .


Con este parámetro pude finalmente lograr la descarga y actualización de paquetes correspondientes.

Espero les sirva.


miércoles, 6 de mayo de 2020

Instalar Docker en Oracle Linux 7

Cómo instalar Docker en Oracle Linux 7


Hola.

En este post voy a poner los pasos necesarios para instalar Docker en Oracle Linux 7.6.

Hace poco hice la instalación y me encontré con algunas particularidades que tuve que investigar e ir resolviendo.

Aquí les dejo todos los pasos con comandos explicados y los problemas que me encontré en el camino.

1.- Colocarse en la carpeta del repositorio yum.

[oracle@localhost ~]$ cd /etc/yum.repos.d/

1.- Descargar el último public-yum-ol7.repo del repositorio yum de Oracle.

[oracle@localhost yum.repos.d]$ wget http://yum.oracle.com/public-yum-ol7.repo

2.- Actualizar el archivo recién descargado haciendo las siguientes modificaciones. Básicamente es poner enabled=1 en las secciones mencionadas abajo.

[ol7_latest]
name=Oracle Linux $releasever Latest ($basearch)
baseurl=https://yum.oracle.com/repo/OracleLinux/OL7/latest/$basearch/
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-oracle
gpgcheck=1
enabled=1

[ol7_UEKR4]
name=Latest Unbreakable Enterprise Kernel Release 4 for Oracle Linux $releasever ($basearch)
baseurl=https://yum.oracle.com/repo/OracleLinux/OL7/UEKR4/$basearch/
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-oracle
gpgcheck=1
enabled=1

[ol7_optional_latest]
name=Oracle Linux $releasever Optional Latest ($basearch)
baseurl=https://yum.oracle.com/repo/OracleLinux/OL7/optional/latest/$basearch/
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-oracle
gpgcheck=1
enabled=1

[ol7_addons]
name=Oracle Linux $releasever Add ons ($basearch)
baseurl=https://yum.oracle.com/repo/OracleLinux/OL7/addons/$basearch/
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-oracle
gpgcheck=1
enabled=1

3.- Ahora intentamos instalar Docker 

[oracle@localhost yum.repos.d]$ yum install docker-engine

Aquí me salió el error: No package docker-engine available.

La causa es que el repositorio de addons no está activado. Hay que verificar que se encuentre con el siguiente comando:

[oracle@localhost yum.repos.d]$ yum repolist

Si no se encuentra ol7_addons en el listado, ejecutar el siguiente comando:

[oracle@localhost yum.repos.d]$ yum-config-manager --enable *addons

Volver a ejecutar el comando yum repolist para verificar que addons aparece en la lista.

Volver a intentar el comando para instalar Docker el cual ya deben poder ejecutar sin problemas.

4.- Activar Docker

[oracle@localhost yum.repos.d]$ systemctl enable docker

5.- Iniciar Docker

[oracle@localhost yum.repos.d]$ systemctl start docker

6.- Algunos comandos para checar que está instalado correctamente.

Checar el estatus.

[oracle@localhost yum.repos.d]$ systemctl status docker.service
● docker.service - Docker Application Container Engine
   Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled; vendor preset: disabled)
   Active: active (running) since Fri 2020-05-01 18:16:04 EDT; 20s ago
     Docs: https://docs.docker.com
 Main PID: 15250 (dockerd)
   Memory: 37.9M
   CGroup: /system.slice/docker.service
           └─15250 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock

Checar la versión de Docker.

[oracle@localhost yum.repos.d]$ docker version
Client: Docker Engine - Community
 Version:           19.03.1-ol
 API version:       1.40
 Go version:        go1.12.5
 Git commit:        ead9442
 Built:             Wed Sep 11 06:40:28 2019
 OS/Arch:           linux/amd64
 Experimental:      false


Con los pasos anteriores ya deben tener disponible Docker en Oracle Linux.
Ojo con el uso de sudo en las instrucciones dependiendo con qué usuario lo estén realizando.
Espero les sirva.

martes, 5 de mayo de 2020

Cómo checar la versión del sistema operativo Linux

Cómo checar la versión del sistema operativo Linux


Hola.

Para todos los que hayan trabajado con alguna versión del sistema operativo Linux, en alguna ocasión habrán requerido conocer la información exacta de su sistema.

Esto es particularmente útil cuando vas a realizar la instalación o actualización de algún software. También durante la configuración del sistema o para conocer las particularidades de cada versión.

Pues bien, para checar el nombre y la versión del sistema operativo Linux existen un par de comandos que pueden intentar:

1.- cat /etc/os-release
Alternativamente a la opción uno pueden usar: cat /etc/*-release
2.- hostnamectl

Aquí les dejo los comandos con sus respectivas salidas. Con esta información podrán tomar la decision correcta respecto a sus configuraciones.

hostnamectl

[oracle@localhost oracle]$ hostnamectl
   Static hostname: localhost.localdomain
         Icon name: computer-vm
           Chassis: vm
        Machine ID: 9e6407e94b0d4e1f8d899a0cb2b64149
           Boot ID: 825602e5c20944ea8998cb4bf0f0cc00
    Virtualization: kvm
  Operating System: Oracle Linux Server 7.6
       CPE OS Name: cpe:/o:oracle:linux:7:6:server
            Kernel: Linux 4.1.12-124.27.1.el7uek.x86_64
      Architecture: x86-64
[oracle@localhost oracle]$ 

cat /etc/os-release

[oracle@localhost oracle]$ cat /etc/os-release
NAME="Oracle Linux Server"
VERSION="7.6"
ID="ol"
VARIANT="Server"
VARIANT_ID="server"
VERSION_ID="7.6"
PRETTY_NAME="Oracle Linux Server 7.6"
ANSI_COLOR="0;31"
CPE_NAME="cpe:/o:oracle:linux:7:6:server"
HOME_URL="https://linux.oracle.com/"
BUG_REPORT_URL="https://bugzilla.oracle.com/"

ORACLE_BUGZILLA_PRODUCT="Oracle Linux 7"
ORACLE_BUGZILLA_PRODUCT_VERSION=7.6
ORACLE_SUPPORT_PRODUCT="Oracle Linux"
ORACLE_SUPPORT_PRODUCT_VERSION=7.6
[oracle@localhost oracle]$ 

Estos comandos funcionan con prácticamente todas las versiones de sistemas operativos Linux.

Espero les sirva.



lunes, 4 de mayo de 2020

ls -l Mostrar fecha completa con año y hora en Linux

ls -l Cómo mostrar fecha completa con año y hora en Linux


Hola.

Estoy trabajando en un sistema operativo Linux sin interfaz gráfica por lo que todo es a través de comandos.

Necesito saber la fecha de última modificación de un archivo para saber si está obsoleto y puede ser borrado del servidor.

Al moverme entre los directorios y llegar a la ruta del archivo intento listar los archivos con ls -lrt y lo que obtengo es una mezcla de información donde algunos archivos muestran fecha sin hora o la fecha sin año.

Algo como lo siguiente:

[oracle@localhost oracle]$ ls -lrt
-rwxr-xr-x.  1 oracle root         1103  May 31  2019 setsizewrap.sh
-rwxr-xr-x.  1 oracle oinstall     4066 May 31  2019 runTimeEnforceMinScreenSize.sh.redoicon
-rwxr-xr-x.  1 oracle oinstall     3544 May 31  2019 runTimeEnforceMinScreenSize.sh
drwxr-xr-x.  5 oracle oinstall       66   May  4 11:42 workspace
drwxr-xr-x.  6 oracle oinstall     4096 May  4 12:56 Downloads
drwxr-xr-x.  7 oracle oinstall     4096 May  4 19:31 Miarchivo

En mi caso requiero saber el año de modificación de Miarchivo por lo que busqué la instrucción que me de esta información.

Solución.


Tienen que agregar el parámetro --full-time al comando ls para ver la fecha completa.

La instrucción quedaria así:

[oracle@localhost oracle]$ ls -lrt --full-time
-rwxr-xr-x.  1 oracle root         1103 2019-05-31 16:34:01.878522219 -0400 setsizewrap.sh
-rwxr-xr-x.  1 oracle oinstall     4066 2019-05-31 16:41:05.343755364 -0400 runTimeEnforceMinScreenSize.sh.redoicon
-rwxr-xr-x.  1 oracle oinstall     3544 2019-05-31 16:41:05.430757687 -0400 runTimeEnforceMinScreenSize.sh
drwxr-xr-x.  5 oracle oinstall       66 2020-05-04 11:42:36.120857676 -0400 workspace
drwxr-xr-x.  6 oracle oinstall     4096 2020-05-04 12:56:02.410131117 -0400 Downloads
drwxr-xr-x.  7 oracle oinstall     4096 2020-05-04 19:31:26.705341312 -0400 Miarchivo

Como ven la fecha ahora se muestra completa con milésima de segundo y hasta time zone 

Espero les sirva.



lunes, 20 de abril de 2020

ORA-01849: hour must be between 1 and 12

ORA-01849: hour must be between 1 and 12


Hola.

Tengo un query de INSERT que está fallando con el error mencionado en el título.

El error se debe a que la fecha de entrada viene en formato de 24 horas y el query no especifica formato. Por este motivo la fecha se espera en formato de 12 horas por defecto.

INSERT INTO TABLA (ENTRY_DATE) VALUES (TO_DATE('2012-12-01 20:10:10','YYYY-MM-DD HH:MI:SS'))

Como ven en el ejemplo de arriba, la hora de entrada viene en formato de 24 horas, es decir 20 horas.

Solución.

En este caso la solución es especificar en el query de insert el formato de 24 horas para que la fecha sea leída correctamente.

Aquí les dejo la solución.

INSERT INTO TABLA (ENTRY_DATE) VALUES (TO_DATE('2012-12-01 20:10:10','YYYY-MM-DD HH24:MI:SS'))

Espero les sirva.

Saludos.