¿Como solucionar el error “curl: (60) SSL certificate problem: unable to get local issuer certificate “?

Estamos ante un error poco común, si has instalado curl desde repositorio con yum o con apt probablemente nunca encontraras un error de este tipo.

Este error suele aparecer en distros antiguas y esta relacionada con el cambio de versión de curl, si te ha salido este error es porque seguramente hayas actualizado curl compilándolo y no hayas incluido el certificado de confianza.

Tambien puede aparecer al intentar hacer un wget con las nuevas versiones de openssl:

OpenSSL: error:1407742E:SSL routines:SSL23_GET_SERVER_HELLO:tlsv1 alert protocol version
 Unable to establish SSL connection

Estos errores son debidos a que en versiones antiguas de curl o openssl no se establecía relación de confianza y no se necesitaba ningún certificado, pero las versiones actuales si lo requieren y al no encontrarlo el sistema devuelve este error.

La solución es bastante sencilla, basta con descargarse el certificado en la página oficial de  curl https://curl.haxx.se/ca/cacert.pem y guardarlo en la ubicación de los certificados de la versión de Linux en la que estés trabajando.

"/etc/ssl/certs/ca-certificates.crt",                // Debian/Ubuntu/Gentoo etc.
"/etc/pki/tls/certs/ca-bundle.crt",                  // Fedora/RHEL 6
"/etc/ssl/ca-bundle.pem",                            // OpenSUSE
"/etc/pki/tls/cacert.pem",                           // OpenELEC
"/etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem", // CentOS/RHEL 7

En el caso de que necesites utilizar curl con php bastaría con añadirlo al fichero de configuración php.ini

curl.cainfo = "/etc/ssl/certs/cacert.pem"
openssl.cafile  = "/etc/ssl/certs/cacert.pem"

Con estos pasos el error queda resuelto y podrás utilizar curl perfectamente.

¿Como listar el tamaño de los directorios en windows?

En sistemas linux listar el tamaño de los directorios se realiza de una manera muy sencilla con el comando du, pero en sistemas windows se complica un poco la cosa.

Utilizando un poco los recursos que ofrece windows sobre powershell en este enlace https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/windows-powershell-1.0/ff730945(v=technet.10)?redirectedfrom=MSDN

Podremos obtener el listado de los directorios y su tamaño con este “corto” comando:

Get-ChildItem |
Where-Object { $_.PSIsContainer } |
ForEach-Object {
  $_.Name + ": " + (
    Get-ChildItem $_ -Recurse |
    Measure-Object Length -Sum -ErrorAction SilentlyContinue
  ).Sum
}

Obtiendo el tamaño en bytes de la carpeta c:\xammp\apache por ejemplo

PS C:\xampp\apache> Get-ChildItem |
>> Where-Object { $_.PSIsContainer } |
>> ForEach-Object {
>>   $_.Name + ": " + (
>>     Get-ChildItem $_ -Recurse |
>>     Measure-Object Length -Sum -ErrorAction SilentlyContinue
>>   ).Sum
>> }
bin: 43546245
conf: 296841
error: 223398
icons: 441289
include: 1674556
lib: 3924595
logs: 29455226
manual: 22458703
modules: 5769728
scripts: 407

Y si nos nos gusta en bytes podemos utilizar este comando para obtener el tamaño en megabytes.

Get-ChildItem | Where-Object { $_.PSIsContainer } | ForEach-Object { $_.Name + ": " + "{0:N2}" -f ((Get-ChildItem $_ -Recurse | Measure-Object Length -Sum -ErrorAction SilentlyContinue).Sum / 1MB) + " MB" }

Con estos “cortitos” comando podeis consultar el tamaña de los directorios de forma sencilla, cuando quieres saber por donde se escapa el tamaño del disco.

Como añadir la variable MySQL al $PATH para resolver el error: “mysql: command not found”

En sistemas Linux nunca tiramos de rutas absolutas u utilizamos las variables del sistema como en el caso del cliente mysql.

Sera costumbre de instalar todo con apt o yum, etc.

Pero bueno siempre hay casoso especiales, como tener que compilar mysql porque lo pide tu jefe o que en un caso de muñonismo hayas borrado la variable del path.

En cualquier caso si lanzas el comando mysql y te muestra el error “mysql: command not found” no hay que preocuparse porque hay fácil solución.

Basta con añadir la ruta del mysql a la variable del sistema con:

export PATH=${PATH}/usr/local/mysql/bin/

en este caso probamos el comando mysql y si nos funciona lo siguente es añadirlo permanente en el fichero . bash_profile del usuario que queremos que ejecute el comando

echo 'export PATH="/usr/local/mysql/bin:$PATH"' >> ~/.bash_profile

Nunca me acuerdo del barrabin barrabash #!/bin/bash

Bienvenidos a mi blog de autoayuda para administradores de sistemas, los más puristas no lo reconocerán pero a todo el mundo se le olvida el dichoso barrabin barrabash (#!/bin/bash) y que mejor que utilizar la primera entrada para la cabecera de los scripts en bash.

Dejo el código del archiconocido hola mundo:

#!/bin/bash

echo 'hola mundo';

Y ya sabeis no os olvides de dar permisos de ejecución al script (chmod +x)