Mostrando las entradas para la consulta sudo ordenadas por fecha. Ordenar por relevancia Mostrar todas las entradas
Mostrando las entradas para la consulta sudo ordenadas por fecha. Ordenar por relevancia Mostrar todas las entradas

Cambio de idioma y caracteres a español terminal Linux

Es curioso que siendo el segundo idioma más hablado en el mundo, por defecto las instalaciones basada en Linux utilicen el juego de caracteres anglosajón.

Para comprobar que juego de caracteres que se encuentra instalada por defecto en nuestra instalación Linux y la configuración regional de cada categoría como:

  • nombre
  • moneda
  • dirección
  • configuración numérica
  • teléfono
  • fecha y hora

Utilizaremos desde el terminal el comando:

locale

locale

 Para cambiar la configuración regional a es_ES.UTF-8 lo hacemos de la siguiente manera:

export LANG=es_ES.UTF-8

export LANG=es_ES.UTF-8

Como podemos ver, ya lo tenemos cambiado, pero esto solo nos valdrá para esta sesión. Al cerrar la sesión, o reiniciar el sistema, volveremos a la configuración anterior.

Para guardar los cambios de manera definitiva, debemos de editar el fichero  /etc/default/locale y sustituir la siguiente línea LANG=en_US.UTF-8 por LANG=es_ES.UTF-8.

sudo nano  /etc/default/locale

sudo nano  /etc/default/locale

Estos cambios de configuración serian en general. Si por el contrario quisiéramos cambiar la configuración para un usuario en concreto. Accederemos al archivo de configuraciones del usuario al que queremos que afecte dicho cambio

sudo /home/usuario/.bash_profile


Juego de caracteres habilitados en una configuración en castellano:

locale -a

 

 C

C.UTF-8

en_AG

en_AG.utf8

en_AU.utf8

en_BW.utf8

en_CA.utf8

en_DK.utf8

en_GB.utf8

en_HK.utf8

en_IE.utf8

en_IL

en_IL.utf8

en_IN

en_IN.utf8

en_NG

en_NG.utf8

en_NZ.utf8

en_PH.utf8

en_SG.utf8

en_US.utf8

en_ZA.utf8

en_ZM

en_ZM.utf8

en_ZW.utf8

es_AR.utf8

es_BO.utf8

es_CL.utf8

es_CO.utf8

es_CR.utf8

es_CU

es_CU.utf8

es_DO.utf8

es_EC.utf8

es_ES.utf8

es_GT.utf8

es_HN.utf8

es_MX.utf8

es_NI.utf8

es_PA.utf8

es_PE.utf8

es_PR.utf8

es_PY.utf8

es_SV.utf8

es_US.utf8

es_UY.utf8

es_VE.utf8

eu_ES

eu_ES.iso88591

POSIX

Es posible que la distribución del teclado no sea la correcta, leer el artículo  Cómo cambiar el idioma del teclado en terminal Linux

Lynx navegador web para terminal

Lynx aparte de ser un lince es un navegador web y cliente de gopher en modo texto, que podremos utilizar en nuestro terminal.

Es muy común que para aliviar la carga de potencia sea necesario prescindir del entorno gráfico. Pero que a la vez tengamos que consultar manuales o artículos de ayuda accediendo a páginas web que se encuentran en internet. Para estos casos podremos utilizar Lynx, el entorno es muy simple y en modo texto, aunque si que podremos visualizar imágenes accediendo a los hiperenlaces.



Para poder instalar Lynx:

Ubuntu  

sudo apt install lynx

 

Debian

 sudo apt-get install lynx


 Arch Linux

 sudo pacman -S lince


 Fedora

sudo dnf instalar lynx


 OpenSUSE

 sudo zypper instalar lynx


MS-DOS

 http://ftp.gnu.org/pub/gnu/gzip/gzip-1.2.4.msdos.exe

Una vez instalado el funcionamiento es muy simple, solo tendremos que invocar al navegador y la dirección que deseamos visitar. En este caso si queremos acceder a enfaseterminal.com utilizariamos secuencia de comando:

lynx enfaseterminal.com


 Para navegar utilizaremos las teclas ⇑⇓ o la barra de espaciadora para ver la siguiente página

Para visitar el hipervínculo utilizar

Para volver hacia atrás 

Para poder salir de la navegación utilizar Q

Recuerda que es un navegador simple y no soporta los nuevos estándares multimedia

El navegador que está utilizando no es compatible con las últimas tecnologías web (HTML5 y CSS3) necesarias para el funcionamiento correcto de este sitio web. Para conseguir una plena compatibilidad le recomendamos estos otros navegadores: Chrome, Firefox, Safari e Internet Explorer (en sus dos últimas versiones y con la vista de compatibilidad desactivada).

 

En caso de necesitar ayuda utlizar el comando

lynx

 

gThumb con soporte de imagen HEIF / HEIC, AVIF y JXL

Si utilizas un Iphone como smartphone y sistema linux para tu ordenador, habrás comprobado que es como mezclar agua con aceite. Es más fácil integrar, por ejemplo, Ubuntu en un Windows con el nuevo sistema Windows Subsystem for Linux (WSL). Y puede ser desesperante manipular las fotos que obtienes con tu dispositivo móvil con las aplicaciones de edición alojadas en tu sistema operativo basado en Linux.

El archivo .heif no tiene programas conocidos asociados


La nueva versión de gThumb 3.12 incluye la capacidad de carga de archivos con la extensión .jxl .avif, .heif Incluido el formato creado por Apple .heic.

Pero, por el momento, no reconoce las Live Photos, antes descargar la foto deberemos desactivar la opción Live en nuestro Iphone.


gThumb es un potente visor, organizador, buscador y administrador de imágenes libre. Fue desarrollado para utilizarse en el entorno de escritorio GNOME. Originalmente estaba basado en el ahora abandonado GQView, y mantiene una interfaz limpia y sencilla. Wikipedia


gThumb con soporte de imagen HEIF / HEIC, AVIF y JXL

 

Nos permitirá organizar nuestro álbum de fotos y  realizar ediciones sencillas.

Si tu sistema está basado en Debian, esta aplicación se encuentra en los repositorios principales. Para instalarlo lo podremos hacer desde el terminal con el comando:

sudo apt install gthumb

Esta instalación nuestra distribución ya sea compatible con estos formatos de imágen y podrás editar tus fotos por ejemplo con el programa Gimp

Instalar servidor MiniDLNA

Vamos a instalar un servidor DLNA en, por ejemplo Raspberry, para utilizarla de servidor multimedia para poder ver nuestros archivos en nuestra SmartTV. La tecnología DLNA es admitida por la mayoría de dispositivos multimedia actuales, a diferencia de utilizar un servidor PLEX en la que tenemos que instalar la APP en nuestra SmartTV y registrándose en su plataforma.

Es un servidor muy sobrio y de un consumo de recursos muy reducido, el aspecto es el de un explorador de archivos, y su reproductor multimedia muy simple. Pero cumple su función de servidor de videos, música e imágenes en nuestra red local.

También podríamos instalar nuestro servidor DLNA en un viejo ordenador en el que hubiéramos instalado un Linux con alguna de las múltiples distribuciones basadas en Debian.

Accedemos a nuestra Raspberry o nuestro servidor casero a traves de SSH e instalamos con privilegios de root la aplicación MiniDLNA también conocida como ReadyMedia

sudo apt-get install minidlna

 Iniciaremos el servicio:

sudo service minidlna start

Y habilitaremos minidlna para que el servicio sea levantado cuando iniciemos nuestro servidor local 

sudo service minidlna enable

Deberemos acceder al archivo de configuración para indicarle, entre otras cosas, la ruta donde se encuentran los archivos que queremos mostrar en nuestra LAN. Estos se pueden encontrar en un disco duro externo que habremos conectado a través del puerto USB de nuestro servidor doméstico.

sudo nano /etc/minidlna.conf

Accederemos a un archivo de texto plano donde cambiaremos

  • Ubicación de los archivos de video
media_dir=V,/media/downloads/videos
  • Ubicación de los archivos de música: 
media_dir=A,/media/downloads/musica
  • Ubicación de los archivos de imagen
media_dir=P,/media/downloads/fotos

  • Ubicación de la base de datos que almacenará los archivos que se mostraran
db_dir=/var/cache/minidlna

  •  Si queréis almacenar logs de lo que pasa en el servidor tienen que descomentar esta línea. Los logs los podréis encontrar en la ubicación.
log_dir=/var/log

  •  Puerto en el que escuchara el pequeño servidor web, que nos mostrara una pequeña información de nuestro servidor. No podremos realizar ninguna acción, como por ejemplo la de configuración
port=8200


MiniDLNA status

  •  Nombre con el que se anunciara en nuestros clientes multimedia
friendly_name=Pi

  • Seleccionamos la opción yes. De este modo, cuando se borre o copie contenido del servidor se actualizará la información de la base de datos

inotify=yes

  •  Definimos los nombres que deben tener las caratulas de un audio o vídeo. Si queremos definir una caratula para una película podemos hacerlo guardando una imagen con el nombre cover.jpg o Cover.jpg en la carpeta que contiene la película. El tamaño recomendado es de 160×160 pixeles
album_art_names=cover.jpg/cover.jpg

  • En esta linea configuramos el intervalo de segundos que nuestro servidor anunciara su presencia en la red. Un buen intervalo serian cada 60 segundos
notify_interval=60

Una vez modificado el archivo a nuestro gusto, lo guardaremos y reiniciaremos el demonio para que la nueva configuración tenga efecto:

sudo service minidlna restart

MiniDLNA usa la propiedad del Kernel inotify para detectar las modificaciones en cada una de las carpetas que almacena contenido. Al detectarse una modificación se actualiza el contenido de la base de datos /var/cache/minidlna/files.db.


Para que inotify pueda monitorizar las modificaciones tendremos que cambiar sus límites. Para fijar un nuevo límite ejecutaremos el siguiente comando:

sudo echo 65538 > /proc/sys/fs/inotify/max_user_watches 

sudo service minidlna restart

Si por alguna razón deseamos reconstruir la base de datos:

sudo service minidlna force-reload

Y listo ya tendríamos un servidor multimedia en nuestra red local y podríamos ver nuestros videos en nuestro:

  • SmartTV
Botón Source, Entrada externa o Fuente

 


  • En otros dispositivos podemos utilizar el reproductor multimedia VLC 
Accederemos a Plug’n’Play Universal y esperamos a que VLC encuentre nuestro servidor miniDLNA y nos permita reproducir su contenido.

Como resolver dependencias rotas

Como resolver dependencias rotas de una instalación basada en Debian.

En una entrada anterior intentaba solucionar la instalación fallida de un paquete:

Resolver dependencias al instalar un paquete

Pero al desinstalar o purgar una aplicación, puede que por error se borró alguna librería de la que dependa otro programa o servicio. Una de las formas que nos recomienda el propio sistema es la ejecución del script:


sudo apt --fix-broken install


Dependencias rotas

 


Si no ha habido éxito, como fue mi caso ejecutaremos los siguientes comandos

Lo primero que haremos es intentar configurar paquetes que han sido desempaquetados, pero no configurados. Para ello ejecutaremos el siguiente comando en la terminal:


sudo dpkg --configure -a


Seguidamente limpiaremos la cache local de paquetes .deb 


sudo apt-get clean && sudo apt-get autoclean


Regeneramos la caché de los repositorios con el parámetro –fix-missing. De este modo intentaremos detectar y reparar problemas de dependencias en nuestro sistema operativo.


sudo apt-get update --fix-missing


Corregiremos las dependencias rotas. Para ello ejecutaremos el siguiente comando en la terminal: 


sudo apt-get install -f

 

En este punto mi problema se solucionó, restaurando el sistema y pudiendo ejecutar


sudo apt-get dist-upgrade


Para poder actualizar el sistema. 

Los siguientes paquetes se han retenido

Realizando tareas de mantenimiento del sistema, este me respondió con el mensaje:


sudo apt-get full-upgrade 

Leyendo lista de paquetes... Hecho

Creando árbol de dependencias       

Leyendo la información de estado... Hecho

Calculando la actualización... Hecho

Los siguientes paquetes se han retenido:

  rawtherapee

 

A partir de aquí ya no me permite actualizar el sistema

Una de las soluciones que encontré fue, curiosamente, actualizar el paquete que se encontraba retenido, utilizando el comando:

sudo apt-get upgrade <nombre paquete retenido>


sudo apt-get upgrade rawtherapee

Leyendo lista de paquetes... Hecho

Creando árbol de dependencias       

Leyendo la información de estado... Hecho

Calculando la actualización... Hecho

Los siguientes paquetes se ELIMINARÁN:

  rawtherapee-data

Los siguientes paquetes se han retenido:

  gparted

Se actualizarán los siguientes paquetes:

  rawtherapee

1 actualizados, 0 nuevos se instalarán, 1 para eliminar y 1 no actualizados.

Se necesita descargar 17,3 MB de archivos.

Se utilizarán 28,9 MB de espacio de disco adicional después de esta operación.

¿Desea continuar? [S/n] s

Des:1 http://ppa.launchpad.net/dhor/myway/ubuntu bionic/main amd64 rawtherapee amd64 5.8-1dhor~bionic [17,3 MB]

Descargados 17,3 MB en 1s (21,4 MB/s)  

dpkg: rawtherapee-data: problemas de dependencias, pero se desinstalará de todas formas

 tal y como se solicitó:

 rawtherapee depende de rawtherapee-data (= 5.3-1).

(Leyendo la base de datos ... 551670 ficheros o directorios instalados actualmente.)

Desinstalando rawtherapee-data (5.3-1) ...

(Leyendo la base de datos ... 550717 ficheros o directorios instalados actualmente.)

Preparando para desempaquetar .../rawtherapee_5.8-1dhor~bionic_amd64.deb ...

Desempaquetando rawtherapee (5.8-1dhor~bionic) sobre (5.3-1) ...

Configurando rawtherapee (5.8-1dhor~bionic) ...

Procesando disparadores para gnome-menus (3.13.3-11ubuntu1.1) ...

Procesando disparadores para hicolor-icon-theme (0.17-2) ...

Procesando disparadores para mime-support (3.60ubuntu1) ...

Procesando disparadores para desktop-file-utils (0.23+linuxmint8) ...

Procesando disparadores para man-db (2.8.3-2ubuntu0.1) ...


 

Actualizar Pi-Hole

En una entrada anterior ya recomendamos la utilización de Pi-Hole para realizar un bloqueo por denegación de DNS de direcciones maliciosas o la publicidad de las páginas que visitamos o de los equipos que queremos monitorizar.
Para actualizarlo, accederemos a través de SSH al terminal donde tendremos corriendo Pi-hole y ejecutaremos la instrucción:

pihole -up 1

Y ya está, ha sido sencillo. 

  [i] Checking for updates...

  [i] Pi-hole Core:     update available

  [i] Web Interface:    update available

  [i] FTL:              update available


  [i] Pi-hole core files out of date, updating local repo.

  [✓] Check for existing repository in /etc/.pihole

  [i] Update repo in /etc/.pihole...HEAD is now at cbc3fbd Merge pull request #3989 from pi-hole/release/v5.2.3

  [✓] Update repo in /etc/.pihole


  [i] If you had made any changes in '/etc/.pihole/', they have been stashed using 'git stash'


  [i] Pi-hole Web Admin files out of date, updating local repo.

  [✓] Check for existing repository in /var/www/html/admin

  [i] Update repo in /var/www/html/admin...HEAD is now at 3ff33a3 Merge pull request #1704 from pi-hole/release/v5.3

  [✓] Update repo in /var/www/html/admin


  [i] If you had made any changes in '/var/www/html/admin/', they have been stashed using 'git stash'


  [i] FTL out of date, it will be updated by the installer.


  [✓] Root user check


        .;;,.

        .ccccc:,.

         :cccclll:.      ..,,

          :ccccclll.   ;ooodc

           'ccll:;ll .oooodc

             .;cll.;;looo:.

                 .. ','.

                .',,,,,,'.

              .',,,,,,,,,,.

            .',,,,,,,,,,,,....

          ....''',,,,,,,'.......

        .........  ....  .........

        ..........      ..........

        ..........      ..........

        .........  ....  .........

          ........,,,,,,,'......

            ....',,,,,,,,,,,,.

               .',,,,,,,,,'.

                .',,,,,,'.

                  ..'''.


  [✓] Update local cache of available packages

  [i] Existing PHP installation detected : PHP version 7.4.3

  [i] Performing unattended setup, no whiptail dialogs will be displayed


  [✓] Checking apt-get for upgraded packages... 19 updates available

  [i] It is recommended to update your OS after installing the Pi-hole!


  [i] Installer Dependency checks...

  [✓] Checking for dhcpcd5

  [✓] Checking for git

  [✓] Checking for iproute2

  [✓] Checking for whiptail

  [✓] Checking for dnsutils


  [✓] Supported OS detected

  [i] SELinux not detected

  [i] Performing reconfiguration, skipping download of local repos

  [✓] Resetting repository within /etc/.pihole...

  [✓] Resetting repository within /var/www/html/admin...

  [i] Main Dependency checks...

  [✓] Checking for cron

  [✓] Checking for curl

  [✓] Checking for iputils-ping

  [✓] Checking for lsof

  [✓] Checking for netcat

  [✓] Checking for psmisc

  [✓] Checking for sudo

  [✓] Checking for unzip

  [✓] Checking for wget

  [✓] Checking for idn2

  [✓] Checking for sqlite3

  [✓] Checking for libcap2-bin

  [✓] Checking for dns-root-data

  [✓] Checking for libcap2

  [✓] Checking for lighttpd

  [✓] Checking for php7.4-common

  [✓] Checking for php7.4-cgi

  [✓] Checking for php7.4-sqlite3

  [✓] Checking for php7.4-xml

  [✓] Checking for php7.4-json

  [✓] Checking for php7.4-intl


  [✓] Enabling lighttpd service to start on reboot...

  [✓] Checking for user 'pihole'


  [i] FTL Checks...


  [✓] Detected x86_64 processor

  [i] Checking for existing FTL binary...

  [✓] Downloading and Installing FTL

  [✓] Installing scripts from /etc/.pihole


  [i] Installing configs from /etc/.pihole...

  [i] Existing dnsmasq.conf found... it is not a Pi-hole file, leaving alone!

  [✓] Copying 01-pihole.conf to /etc/dnsmasq.d/01-pihole.conf


  [i] Installing blocking page...

  [✓] Creating directory for blocking page, and copying files

  [i] Backing up index.lighttpd.html

      No default index.lighttpd.html file found... not backing up


  [✓] Installing sudoer file


  [✓] Installing latest Cron script


  [✓] Installing latest logrotate script

  [i] Backing up /etc/dnsmasq.conf to /etc/dnsmasq.conf.old

  [✓] man pages installed and database updated

  [i] Testing if systemd-resolved is enabled

  [i] Systemd-resolved does not need to be restarted

  [✓] Restarting lighttpd service...

  [✓] Enabling lighttpd service to start on reboot...

  [i] Restarting services...

  [✓] Enabling pihole-FTL service to start on reboot...

  [✓] Restarting pihole-FTL service...

  [✓] Deleting existing list cache

  [i] Neutrino emissions detected...

  [✓] Pulling blocklist source list into range


  [✓] Preparing new gravity database

  [i] Using libz compression


  [i] Target: https://raw.githubusercontent.com/StevenBlack/hosts/master/hosts

  [✓] Status: Retrieval successful

  [i] Received 58568 domains


  [i] Target: https://mirror1.malwaredomains.com/files/justdomains

  [✗] Status: Not found

  [✗] List download failed: no cached list available


  [i] Target: https://www.sunshine.it/blacklist.txt

  [✓] Status: Retrieval successful

  [i] Received 82108 domains


  [✓] Storing downloaded domains in new gravity database

  [✓] Building tree

  [✓] Swapping databases

  [i] Number of gravity domains: 140676 (131363 unique domains)

  [i] Number of exact blacklisted domains: 6

  [i] Number of regex blacklist filters: 0

  [i] Number of exact whitelisted domains: 16

  [i] Number of regex whitelist filters: 1

  [✓] Flushing DNS cache

  [✓] Cleaning up stray matter


  [✓] DNS service is listening

     [✓] UDP (IPv4)

     [✓] TCP (IPv4)

     [✓] UDP (IPv6)

     [✓] TCP (IPv6)


  [✓] Pi-hole blocking is enabled


  [i] The install log is located at: /etc/pihole/install.log

Update Complete! 


  Current Pi-hole version is v5.2.3.

  Current AdminLTE version is v5.3.

  Current FTL version is v5.4.

Reutilizar últimos comandos en Linux con history

Muchos de los comandos que utilizamos en Linux los solemos invocar varias veces. El propio sistema recuerda dichos comandos y podemos recorrer la lista utilizando las flechas arriba ▲ y abajo ▼ del teclado para recorrer uno por uno los que hemos utilizado últimamente.

Flechas teclado

Para obtener el historial de comandos que hemos utilizado últimamente, lo haremos con:

history

Nos mostrará un listado con un número y el comando asociado a ese número.

    1  sudo -V

    2  root@sololinux-demo:~$ sudo -V

    3  Sudo versión 1.8.21p2

    4  versión del complemento de políticas de sudoers 1.8.21p2

    5  versión de gramática del archivo Sudoers 46

    6  Sudoers I/O plugin version 1.8.21p2root@sololinux-demo:~$ sudo -V

    7  Sudo versión 1.8.21p2

    8  versión del complemento de políticas de sudoers 1.8.21p2

    9  versión de gramática del archivo Sudoers 46

   10  Sudoers I/O plugin version 1.8.21p2root@sololinux-demo:~$ sudo -V

   11  Sudo versión 1.8.21p2

   12  versión del complemento de políticas de sudoers 1.8.21p2

   13  versión de gramática del archivo Sudoers 46

   14  Sudoers I/O plugin version 1.8.21p2root@sololinux-demo:~$ sudo -V

   15  Sudo versión 1.8.21p2

   16  versión del complemento de políticas de sudoers 1.8.21p2

   17  versión de gramática del archivo Sudoers 46

   18  Sudoers I/O plugin version 1.8.21p2root@sololinux-demo:~$ sudo -V

   19  Sudo versión 1.8.21p2

   20  versión del complemento de políticas de sudoers 1.8.21p2

   21  versión de gramática del archivo Sudoers 46

   22  Sudoers I/O plugin version 1.8.21p2root@sololinux-demo:~$ sudo -V

   23  Sudo versión 1.8.21p2

   24  versión del complemento de políticas de sudoers 1.8.21p2

   25  versión de gramática del archivo Sudoers 46

   26  Sudoers I/O plugin version 1.8.21p2

   27  wget https://www.sudo.ws/sudo/dist/packages/1.9.4p2/sudo_1.9.4-3_ubu2004_amd64.deb

   28  ls

   29  sudo gdebi sudo_1.9.4-3_ubu2004_amd64.deb

   30  sudo apt install gdebi-core

   31  apt update

   32  sudo apt install gdebi-core

   33  sudo gdebi sudo_1.9.4-3_ubu2004_amd64.deb

   34  sudo -V

   35  apt update

   36  apt list --upgradable

   37  apt full-upgrade

   38  history

Si por ejemplo queremos ejecutar el comando: sudo apt install gdebi-core que corresponde a la fila 32, utilizaremos el símbolo de final de exclamación ! seguido del número de la fila.

!32

Si queremos ejecutar el último comando que tecleado utilizaremos dos finales de exclamación !!

!!

Sin embargo si queremos limitar la lista de búsqueda, utilizaremos history seguido de número de comandos que queremos visualizar

history 3

Si queremos buscar un script con una cadena de texto determinada utilizaremos history | grep seguido de aquello que queremos buscar, como por ejemplo

history | grep sudo

Si queremos borrar todo el historial de comandos utilizaremos:

 history -c

Si queremos borrar tanto el contenido de la memoria como el contenido del archivo ~/.bash_history tendremos que ejecutar el siguiente comando:

history -c && history -w 

E: Sub-process /usr/bin/dpkg returned an error code (1)

A la hora de hacer uso de apt-get bien para instalar, borrar, o actualizar el sistema. Al principio parece que toda va bien pero al final del proceso me indica que ha habido un error y me muestra:

E: Sub-process /usr/bin/dpkg returned an error code (1)

Al parecer al realizar las tareas cotidianas de actualización del sistema, algún paquete a quedado retenido y no permite continuar.

Uno de las formas que encontrado para poder liberar el proceso, que ha quedado atrapado. Es accediendo a la carpeta:

/var/lib/dpkg/info

En esta carpeta se recoge información sobre los paquetes instalados, o en proceso de instalación.

La solución es descubrir que paquete ha quedado retenido y borrar la información sobre el. Por ejemplo utilizando el comando

sudo apt-get update

Nos saldrá el paquete que está creando esta situación, seguido de E: Sub-process /usr/bin/dpkg returned an error code (1)

Accedemos al directorio:

cd /var/lib/dpkg/info

Y borramos los archivos relacionados con el paquete que ha quedado retenido. En mi caso eran varios y último era man-db

sudo rm man-db.*

Volvemos a actualizar las lista de paquetes:

sudo apt-get update

Y ya podemos actualizar nuestro sistema e instalar nuevos paquetes. 

Reproductor VLC

VLC media player

"VLC es un reproductor multimedia libre y de código abierto multiplataforma y un «framework» que reproduce la mayoría de archivos multimedia, así como DVD, Audio CD, VCD y diversos protocolos de transmisión."


El reproductor del cono de obra, es uno de los más versátiles que he utilizado. Es gratuito, distribuido bajo la licencia GPLv2.1+.2​, y multiplataforma, tanto para ordenadores como para dispositivos móviles: como tablet y smartphone, sin importar el sistema operativo. También nos permite reproducir gran variedad de códecs y formatos de audio y vídeo, y/o escuchar medios en línea y emitir en streaming para que se pueda ver en otro dispositivo. E incluye herramientas para la conversión de archivos cambiando el formato de compresión, para que por ejemplo sea compatible con nuestra SmartTV. Es prácticamente una navaja suiza para nuestros medios audio-visuales.


Formatos de video que soporta:

MPEG-1/2, DivX® (1/2/3/4/5/6), MPEG-4 ASP, XviD, 3ivX D4, H.261, H.263 / H.263i, H.264 / MPEG-4 AVC, Cinepak, Theora, Dirac / VC-2, MJPEG (A/B), WMV 1/2, WMV 3 / WMV-9 / VC-1, Sorenson 1/3, DV, On2 VP3/VP5/VP6, Indeo Video v3 (IV32), Real Video (1/2/3/4).

Formatos de audio que soporta

MPEG Layer 1/2, MP3 - MPEG Layer 3, AAC - MPEG-4 part3, Vorbis, AC3 - A/52, E-AC-3, MLP / TrueHD>3, DTS, WMA 1/2, WMA 3, FLAC, ALAC, Speex, Musepack / MPC, ATRAC 3, Wavpack, Mod, TrueAudio, APE, Real Audio, Alaw/µlaw, AMR (3GPP), MIDI, LPCM, ADPCM, QCELP, DV Audio, QDM2/QDMC, MACE.

Subtítulos que soporta:

DVD, Text files (MicroDVD, SubRIP, SubViewer, SSA1-5, SAMI, VPlayer), Closed captions, Vobsub, Universal Subtitle Format (USF), SVCD / CVD, DVB, OGM, CMML, Kate.
ID3 tags, APEv2, Vorbis comment.

Formatos soportados de entrada:

UDP/RTP Unicast, UDP/RTP Multicast, HTTP / FTP, MMS, TCP/RTP Unicast, DCCP/RTP Unicast, File, DVD Video, Video CD / VCD, SVCD, Audio CD (no DTS-CD), DVB (Satellite, Digital TV, Cable TV), MPEG encoder, Video acquisition.

Formato soportados de salida

MPEG (ES,PS,TS,PVA,MP3), AVI, ASF / WMV / WMA, MP4 / MOV / 3GP, OGG / OGM / Annodex, Matroska (MKV), Real, WAV (including DTS), Raw Audio: DTS, AAC, AC3/A52, Raw DV, FLAC, FLV (Flash), MXF, Nut, Standard MIDI / SMF, Creative™ Voice.




No te conformes con el reproductor predeterminado de tu sistema operativo y atrévete a probar VLC.
En sistemas basados en Debian, esta incluido en los repositorios oficiales, solo tendremos que entrar en nuestro terminal y teclear el comando:
sudo apt install vlc

 O también podemos instalarlo desde el repositorio de paquetes SNAP:

sudo snap install vlc

Navegador Brave. Te mereces un Internet mejor.

Brave es un navegador web, multiplataforma, de código abierto basado en Chromium, creado por la compañía Brave Software en el año 2016, fundada por el cofundador del Proyecto Mozilla y creador de JavaScript, Brendan Eich.2

Al estar basado en Chromium nos permite la instalación de extensiones creadas para Chrome al igual que nos ocurre con Vivaldi


Brave, el nuevo internet


Un navegador que nos ofrece privacidad real y más velocidad al bucear en la red de redes. Y lo consigue bloqueando todos los anuncios y rastreadores dañinos que aparecen mientras realizamos nuestras visitas a páginas web. También incorpora para nuestra privacidad y seguridad, el modo incógnito con navegación a través de la red TOR, de la hemos hablado en otro post.


Importación y configuración


Pero lo que hace diferente a Brave de otros navegadores que nos ofrecen lo mismo, es la posibilidad, si queremos, de que nos paguen por anuncios. Si os habéis frotado las manos, y pensais en cambiar vuestra residencia a Andorra, que sepáis que  no es tan simple como 10 anuncios un euro. 

Elegimos cuantos anuncios, no invasivos queremos que se nos muestre a la hora. Y dependiendo de cuantos anuncios visitemos obtendremos un número determinado de Tokens de Atención Básica (BAT) que suponen el 70% de los ingresos publicitarios con los que trabaja la compañia.


Brave Rewards

Brave Rewards


Brave Rewards

Acumula tokens mientras navegas

Activa Brave Rewards para acumular tokens mientras navegas por ver anuncios que respetan la privacidad. Puedes configurar el número de anuncios que ves por hora. Actualmente puedes apoyar a tus creadores web favoritos con tus tokens; pero pronto podrás utilizar tokens para acceder a contenido premium, tarjetas de regalo y mucho más. 

 

Estas ganancias las podremos transferir a nuestra carteras virtuales o donar una parte de ellas a los desarrolladores de las páginas, blogs, o servicios de redes sociales o videos que visites; siempre y cuando el desarrollador se encuentre registrado en Brave Rewards

Como he dicho es multiplataforma y actualmente se encuentra disponible para:


La instalación en sistemas Linux basados en Debian:

sudo apt install apt-transport-https curl

sudo curl -fsSLo /usr/share/keyrings/brave-browser-archive-keyring.gpg https://brave-browser-apt-release.s3.brave.com/brave-browser-archive-keyring.gpg

echo "deb [signed-by=/usr/share/keyrings/brave-browser-archive-keyring.gpg arch=amd64] https://brave-browser-apt-release.s3.brave.com/ stable main"|sudo tee /etc/apt/sources.list.d/brave-browser-release.list

sudo apt update

sudo apt install brave-browser

 

Para sistemas Fedora 28+, CentOS/RHEL 8+

sudo dnf install dnf-plugins-core

sudo dnf config-manager --add-repo https://brave-browser-rpm-release.s3.brave.com/x86_64/

sudo rpm --import https://brave-browser-rpm-release.s3.brave.com/brave-core.asc

sudo dnf install brave-browser

 

Y los comandos para la instalación en OpenSUSE 15+

sudo zypper install curl

sudo rpm --import https://brave-browser-rpm-release.s3.brave.com/brave-core.asc

sudo zypper addrepo https://brave-browser-rpm-release.s3.brave.com/x86_64/ brave-browser

sudo zypper install brave-browser

¿Una propina 😋🙏? 

Como cambiar el password a un usuario en Linux

 Hay distribuciones, como Raspberry, que ya en su instalación tienen un usuario y contraseña predeterminadas 🔐 y es recomendable cambiar. O es posible que queramos cambiar nuestro password por que ha habido una brecha de seguridad en el sistema.

Para cambiar la contraseña de un usuario desde terminal en Linux, utilizaremos el comando:

passwd <Nombre del usuario>

Nos pedirá que introcutacamos la "Nueva contraseña" y en una segunda instancia la volvamos a repetir para confirmar que la hemos escrito bien.

Recuerda que en la mayoría de los casos deberemos tener privilegios de administrador para poder cambiar la contraseña de nuestros usuarios. La sintaxis completa sería:

sudo passwd <Nombre del usuario>

Como instalar paquetes desde terminal

Para poder instalar el paquete alojado en nuestro disco duro utilizaremos el comando

dpkg Gestor de paquetes .deb para instalar aplicaciones Debian manualmente.

La sintaxis es muy sencilla:

sudo dpkg -i nombre_archivo.deb

  • sudo Ejecutara nuestro comando con privilegios de administrador
  • dpkg  Es una herramienta para instalar, compilar, eliminar y manipular los paquetes de Debian.
  • -i (install) Parámetro que indica que ha de realizar la acción de instalar
  • nombre_archivo.deb Nombre del paquete que hemos descargado previamente.

Como borrar y eliminar todos los archivos de una aplicación

 Si necesitas más espacio, o la aplicación que instalaste no ha cumplido tus expectativas. Tienes que desinstalar la aplicación, pero si lo utilizas con las herramientas gráficas puede ser que los archivos de configuración y de perfil del programa permanezcan en el disco duro.

En terminal vamos a desinstalar y purgar la aplicación, vamos a borrar con una sola línea todos los archivos y carpetas relacionados con el programa.

sudo apt-get --purge remove <Nombre del paquete a desistalar>

  • sudo: Nos permitirá ejecutar el comando con privilegios de administrador
  • apt-get: Comando que puede agregar o eliminar paquetes del sistema.
  • --purge: Le indicamos al comando que borre los archivos de configuración relacionados con la aplicación que queremos desinstalar.
  • remove: Borrar el paquete nombrado.


No tiene suficiente espacio libre en /var/cache/apt/archives/

 No tiene suficiente espacio libre en /var/cache/apt/archives/


sudo du -sh /var/cache/apt/archives

Quedarse sin espacio no es lo más habitual si utilizas grandes computadoras. Pero es problema muy común en ordenadores antiguos, o como es el caso en una Raspberry a la hora de actualizar el sistema operativo.

Primero vamos a averiguar que cantidad de memoria está ocupando los archivos en la caché. Utilizaremos el comando du (Uso de Disco) con el argumento -sh

  • -s, pantalla Resumir sólo un total para cada argumento.
  • -h, tamaños de impresión. Formato legible por el hombre (por ejemplo, 1K 234M 2G)

sudo du -sh /var/cache/apt/archives


sudo apt clean

En mi caso el espacio ocupado por la caché de los repositorios es de 85Mb. Y después de utilizar el comando apt clean reducimos al tamaño de una carpeta vacía.
sudo apt clean

sudo apt-get clean

 

 




Como enviar correo electronico con archivo adjunto en PHP

Como enviar un correo electrónico con archivos adjuntos con PHP 📨. 
Puede ser que necesitemos crear una función para enviar un correo electrónico con un archivo adjunto, como respuesta a un formulario o para realizar publicaciones en otros servidores.
Si utilizamos una plataforma que en al que podemos programar y ejecutar PHP debemos asegurarnos que se encuentre instalado sendmail
Si somos el administrador de nuestro propio servidor, podremos instalarlo desde el terminal:
sudo apt-get install sendmail
Si somos invitados en el servidor, lanzaremos un script para comprobar si podemos utilizar la función mail:

<?php
    ini_set( 'display_errors', 1 );
    error_reporting( E_ALL );    //Comprobaremos si ha sido enviado o no
    $from = "TU CORREO ELECTRONICO"; //La dirección de correo desde que la enviamos
    $to = "DESTINATARIO";    //Dirección de correo a la que enviamos el mail
    $subject = "Probando PHP mail";    //Encabezado del correo
    $message = "PHP mail funciona correctamente";    //El mensaje
    $headers = "From:" . $from;    //Cabecera que dejamos tal cual
    mail($to,$subject,$message, $headers);    //Enviamos el correo
    echo "The email message was sent.";    //Confirmamos que el correo ha sido enviado

?>

Si hemos recibido el correo, podremos continuar con la programación de nuestra función.


//Recipiente
$to = 'DESTINATARIO';     //A quien le enviamos nuestro correo

//remitente del correo
//Desde que correo le envamos y quien será el destinatario de la respuesta si lo hubiera
$from = 'NUESTRO CORREO ELECTRONICO';
$fromName = 'UN NOMBRE, O NICK DESCRIPTIVO';    //Quienes somos o nuestra organización

//Asunto del email
//Utilizamos la función utf8_decode() para que nos reconozca las tildes y la ñ, entre otros caracteres
$subject = utf8_decode('ASUNTO DEL CORREO'); 

//Ruta del archivo adjunto
$file = 'DIRECCIÓN GLOBAL DEL ARCHIVO QUE VAMOS A ENVIAR';

//Contenido del Email
//La función htmlentities() nos convertira las tildes ñ y caracteres especiales en etindades HTML
$htmlContent = htmlentities('CONTENIDO DEL CORREO CODIFICADO EN HTML'); 

//Encabezado para información del remitente
$headers = "De: $fromName"." <".$from.">";

//Limite Email
$semi_rand = md5(time()); 
$mime_boundary = "==Multipart_Boundary_x{$semi_rand}x"; 

//Encabezados para archivo adjunto 
$headers .= "\n MIME-Version: 1.0 \n" . "Content-Type: multipart/mixed;\n" . " boundary=\"{$mime_boundary}\""; 

//límite multiparte
$message = "--{$mime_boundary}\n" . "Content-Type: text/html; charset=\"UTF-8\"\n" .
"Content-Transfer-Encoding: 7bit\n\n" . $htmlContent . "\n\n"; 

//preparación de archivo
if(!empty($file) > 0){
    if(is_file($file)){
        $message .= "--{$mime_boundary}\n";
        $fp =    @fopen($file,"rb");
        $data =  @fread($fp,filesize($file));
        @fclose($fp);
        $data = chunk_split(base64_encode($data));
        $message .= "Content-Type: application/octet-stream; name=\"".basename($file)."\"\n" . 
        "Content-Description: ".basename($file)."\n" .
        "Content-Disposition: attachment;\n" . " filename=\"".basename($file)."\"; size=".filesize($file).";\n" . 
        "Content-Transfer-Encoding: base64\n\n" . $data . "\n\n";
    }
}
$message .= "--{$mime_boundary}--";
$returnpath = "-f" . $from;

//Enviar EMail
$mail = @mail($to, $subject, $message, $headers, $returnpath); 

Esta función requiere mucho tiempo de ejecución y no es recomendable para el envio masivo de correos electronicos.

Como borrar las claves almacenadas ssh de un equipo

Al iniciar la conexión ssh con un nuevo servidor, nos advierte que no es de confianza y si queremos almacenar las claves. Esta asociación es almacenada y nos permitirá encriptar las conexiones con el ordenador que queremos conectarnos.

sudo ssh 192.168.100.2 -l enfaseterminal
The authenticity of host '192.168.0.4 (192.168.100.2)' can't be established.
ECDSA key fingerprint is SHA256:EAM0qnIeDoo4cjNdWxkvbiRpc+5TREn4eaJ6+6WvT0U.
Are you sure you want to continue connecting (yes/no)?

En los siguientes inicios de sesion a traves de ssh no nos pedirá esta confirmación de seguridad, por que la asociación ya ha sido almacenada. 
Pero si en algún momento la confianza entre el servidor y el cliente se corrompe. La conexión no será posible.


@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@                                   WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!                                                              @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that a host key has just been changed.


Por una reinstalación del equipo o una actualización del sistema....., la clave maestra se modificara, y por lo tanto no coincidirá con la que nuestro cliente tiene almacenada, y por lo tanto la conexión ya no será segura, y no se permitirá. Esto requiere por nuestra parte una doble confirmación.
Tendremos que almacenar los datos almacenados de nuestro servidor.

Primero tendremos que borrar de la base de datos la dirección ip y la clave maestra a ella asociada.

sudo ssh-keygen -f "/root/.ssh/known_hosts" -R "192.168.100.2"

Y nos responderá, la dirección ip del servidor ha sido encontrada y borrada del almacén y archivo actulizado. Pero por si fuera necesario se ha guardado una copia del original.

 # Host 192.168.100.2 found: line 2
/root/.ssh/known_hosts updated.
Original contents retained as /root/.ssh/known_hosts.old

Y Segundo, al volver a conectar nos pedirá confirmación para almacenar el servidor SSH  y su clave SHA256.

sudo ssh 192.168.100.2 -l enfaseterminal
The authenticity of host '192.168.0.4 (192.168.100.2)' can't be established.
ECDSA key fingerprint is SHA256:EAM0qnIeDoo4cjNdWxkvbiRpc+5TREn4eaJ6+6WvT0U.
Are you sure you want to continue connecting (yes/no)?

Temas relacionados:


 

Unable to acquire the dpkg frontend lock (/var/lib/dpkg/lock-frontend), is another process using it?

E: No se pudo bloquear /var/lib/dpkg/lock-frontend - open (11: Recurso no disponible temporalmente)
E: Unable to acquire the dpkg frontend lock (/var/lib/dpkg/lock-frontend), is another process using it?

Alguna vez nos podemos encontrar con este mensaje al intentar instalar un paquete en nuestra distribución Linux. Esto es debido a que hemos realizado una instalación fallida, se ha apropiado de alguno de los archivos necesarios para ejecutar apt-get.
Vamos a averiguar que proceso ha secuestrado nuestros archivos utilizando el comando: lsof

lsof [PARÁMETROS] [ARCHIVO..]
En la invocación del comando lsof, se permite identificar que procesos están utilizando el o los archivos indicados.

Ejecutando este comando para averiguar quien nos tiene bloqueado el archivo que necesitamos para comenzar nuestro nuevo proceso de instalación.

sudo lsof /var/lib/dpkg/lock-frontend

Obtenemos dos informaciones un WARNING y el culpable:

lsof: WARNING: can't stat() fuse.gvfsd-fuse file system /run/user/1000/gvfs
      Output information may be incomplete.
COMMAND   PID USER   FD   TYPE DEVICE SIZE/OFF    NODE NAME
apt-get             15206 root    4uW  REG    8,2                     0 9962051 /var/lib/dpkg/lock-frontend


El usuario root intentó lanzar el comando apt-get y por alguna razón no termino con exito y bloqueo el archivo. De la información anterior nos quedamos con el PID, que es el identificador para matarlo

sudo kill -9 15206

Y con esto liberamos del secuestro los archivos necesarios que nos impedía continuar con nuestra tarea. En este caso la instalación de un nuevo paquete. 
 



 

Conectar a servidor base de datos MariaDB

Puede ser el caso que además de gestionar una base de datos SQL en local, necesitamos gestionarla en remoto. En la mayoría de los servidores de hospedaje web, no nos permiten conectarnos a la servidor de base de datos en remoto, tenemos que hacerlo en local. Una de las herramientas más utilizadas es PhpMyAdmin. Este caso en concreto he instalado un servidor de base de datos MariaDB Server en una Raspberry. Tengo muy oxidado el lenguaje SQL como para acceder al servidor a través de SSL y realizar todas las tareas de instalación de rablas y mantenimiento desde el cliente de MariaDB. Quiero gestionarla en un entorno más amigable, pero no quiero instalar a mayores un servidor Apache con PHP para poder utilizar PhpMyAdmin.

Logo MariaDBMariaDB  es un sistema de gestión de bases de datos derivado de MySQL con licencia GPL (General Public License). Es desarrollado por Michael (Monty) Widenius —fundador de MySQL—, la fundación MariaDB y la comunidad de desarrolladores de software libre.1​ Introduce dos motores de almacenamiento nuevos, uno llamado Aria —que reemplaza a MyISAM— y otro llamado XtraDB —en sustitución de InnoDB—. Tiene una alta compatibilidad con MySQL ya que posee las mismas órdenes, interfaces, API y bibliotecas, siendo su objetivo poder cambiar un servidor por otro directamente.
Aunque el tutorial es para MariaDB, este puede ser extensible si así fuera un servidor de MySQL.

De forma predeterminada y por seguridad no permiten el acceso remoto, solo se permite acceso atraves de localhost.

Una vez instalada el servidor y el cliente en nuestra distribución. Aseguramos la instalación lanzando el comando:

sudo mysql_secure_installation 

Enter current password for root (enter for none): Pulsa enter
 Introduzca la contraseña actual para root (ingrese para none): Pulse Enter
 Set root password? [Y/n]: Y
 ¿Establecer contraseña del root? [Y/n]: Y
 New password: Enter password
 Nueva contraseña: Introduzca contraseña
 Re-enter new password: Repeat password
 Reescribir nueva contraseña: Repetir contraseña
 Remove anonymous users? [Y/n]: Y
¿ Borrar usuarios anónimos? [Y/n]: Y
 Disallow root login remotely? [Y/n]: Y
¿No permitir el acceso al root desde remoto? [Y/n]: Y
 Remove test database and access to it? [Y/n]:  Y
 ¿Borrar Bases de datos Test y su acceso? [Y/n]: Y
 Reload privilege tables now? [Y/n]:  Y
 ¿Recargar privilegios a las tablas ahora? [Y/n]: Y

No vamos a permitir al root acceder desde remoto, no es considerado de una buena praxis de seguridad que el administrador se pueda conectar en remoto. Por el contrario vamos a crear un usuario nuevo y le vamos a dar privilegios de acceso desde remoto. En este caso indicaremos que el usuario se puede conectar desde cualquier equipo de nuestra LAN. Con 192.168.100 indicamos que subred se puede conectar usando el carácter % como comodín para indicarle que cualquier equipo de esta. También podríamos limitar aun más indicando la dirección ip del equipo desde el que únicamente puede acceder en remoto. Creando un entorno aun más seguro

CREATE USER 'nuevo usuario'@'192.168.100.%';
 
GRANT ALL PRIVILEGES ON *.* TO 'nuevo usuario'@'192.168.100.%' IDENTIFIED BY 'nueva contraseña' WITH GRANT OPTION;

Seguidamente configuraremos de forma manual, no solo el acceso en local, si no el acceso en remoto.
Deberemos localizar los archivos de configuración de MySQL o de MariaDB.
  • /etc/my.cnf                         
  • $MYSQL_HOME/my.cnf
  • /etc/mysql/my.cnf                      
  • SYSCONFDIR/my.cnf                     
  • DATADIR\my.ini                           Windows
Editando el archivo de configuración /etc/mysql/my.cnf

sudo nano /etc/mysql/my.cnf
 

# The MariaDB configuration file
#
# The MariaDB/MySQL tools read configuration files in the following order:
# 1. "/etc/mysql/mariadb.cnf" (this file) to set global defaults,
# 2. "/etc/mysql/conf.d/*.cnf" to set global options.
# 3. "/etc/mysql/mariadb.conf.d/*.cnf" to set MariaDB-only options.
# 4. "~/.my.cnf" to set user-specific options.
#
# If the same option is defined multiple times, the last one will apply.
#
# One can use all long options that the program supports.
# Run program with --help to get a list of available options and with
# --print-defaults to see which it would actually understand and use.

#
# This group is read both both by the client and the server
# use it for options that affect everything
#
[client-server]

# Import all .cnf files from configuration directory
!includedir /etc/mysql/conf.d/
!includedir /etc/mysql/mariadb.conf.d/

Nos indica los directorios donde se encuetra el archivo que estamos buscando para editarlo. 50-server.cnf

sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf

Buscaremos la sección [mysqld]  donde editaremos los valores que nos permitan conexiones externas. Este es un ejemplo real de configuración que me ha permitido conectarme al servidor desde otro equipo.

[mysqld]

#
# * Basic Settings
#
user                    = mysql
pid-file                = /run/mysqld/mysqld.pid
socket                  = /run/mysqld/mysqld.sock
port                    = 3306
basedir                 = /usr
datadir                 = /var/lib/mysql
tmpdir                  = /tmp
lc-messages-dir         = /usr/share/mysql
#skip-external-locking

# Instead of skip-networking the default is now to listen only on
# localhost which is more compatible and is not less secure.
#bind-address            = 127.0.0.1
bind-address            = 0.0.0.0

.......................................................

 # * Security Features
#
# Read the manual, too, if you want chroot!
#chroot = /var/lib/mysql/
#
# For generating SSL certificates you can use for example the GUI tool "tinyca".
#
#ssl-ca = /etc/mysql/cacert.pem
#ssl-cert = /etc/mysql/server-cert.pem
#ssl-key = /etc/mysql/server-key.pem
#
# Accept only connections using the latest and most secure TLS protocol version.
# ..when MariaDB is compiled with OpenSSL:
ssl-cipher = TLSv1.2
# ..when MariaDB is compiled with YaSSL (default in Debian):
#ssl = on

Te explico de forma más detallada las lineas a editar para un correcto funcionamiento. 

  •  port                    = 3306 Es el puerto por defecto, no es necesario cambiarlo, pero si fuera necesario podríamos especificar otro puerto de accesos.
  • #skip-external-locking Comentamos esta linea para permitir que el servidor sea accesible desde el exterior. Comentamos añadiendo el carácter #
  • #bind-address            = 127.0.0.1 Tambien aañadimso el caracter # para comentar esta linea.
  • bind-address            = 0.0.0.0 Añadiremos una linea con los parametros indicados.
  • ssl-cipher = TLSv1.2 Esta parte hay que tenerla en cuenta si tenemos problemas a la hora de concetar con los certificados. Al utilizar OpenSSL descomentamos esta linea
  • #ssl = on Y comentamos esta otra. Que era la que estaba activa de forma predeterminada pero, que en mi caso no me permitía conectarme.
Una vez modificado las lineas señalas. Guardamos y salimos del editor de textos. Y reiniciamos el servicio.

sudo systemctl restart mariadb.service

Tenemos que tener en cuenta, si en nuestro servidor, tenemos instalado y corriendo un cortafuegos, debemos permitir las conexiones a través del puerto 3306, si lo hemos dejado por defecto, o el puerto que asignemos al servicio. Para añadir el permiso abrir el mencionado puerto utlizando ufw seria:

sudo ufw allow 3306/tcp

Y si solo vamos a permitir el acceso en remoto a un equipo, con una dirección ip en concreto:

 sudo ufw allow from 192.168.100.2 to any port 3306

Instalar servidor base de datos MariaDB

Uno de los primeros gestores de bases de datos con licencia GNU GPL que utilice, en un proyecto anterior, fue MySQL. En aquel entonces cree una pagina web dinámica, programada en PHP que obtenía los datos, utilizando SQL. Aquella idea quedó aparcada por falta de tiempo, pero ahora quería retomar parte de aquel antiguo proyecto.
Años después me he encontrado que los creadores de MySQL abandonaron la compañía para crear una nueva, MariaDB. Un nuevo gestor que evolucionó y han mejoró con respecto al su predecesor.


MySql vs MariaDB
Para instalar el servidor MariaDB podemos descargarla de la página oficial. Pero también se encuentra en los repositorios oficiales:

sudo apt install mariadb-server mariadb-client
 
Con este script instalaremos el servidor y el cliente del gestor. Seguidamente arrancaremos el servicio

sudo systemctl start mariadb.service

Y lo habilitamos para que cuando lo haga el sistema.

sudo systemctl enable mariadb.service

 Una vez instalada el servidor y el cliente en nuestra distribución. Aseguramos la instalación lanzando el comando:

sudo mysql_secure_installation 

 Enter current password for root (enter for none): Pulsa enter Introduzca la contraseña actual para root (ingrese para none): Pulse Enter
 Set root password? [Y/n]: Y ¿Establecer contraseña del root? [Y/n]: Y
 New password: Enter password Nueva contraseña: Introduzca contraseña
 Re-enter new password: Repeat password Reescribir nueva contraseña: Repetir contraseña
 Remove anonymous users? [Y/n]: Y¿ Borrar usuarios anónimos? [Y/n]: Y
 Disallow root login remotely? [Y/n]: Y¿No permitir el acceso al root desde remoto? [Y/n]: Y
 Remove test database and access to it? [Y/n]:  Y ¿Borrar Bases de datos Test y su acceso? [Y/n]: Y
 Reload privilege tables now? [Y/n]:  Y ¿Recargar privilegios a las tablas ahora? [Y/n]: Y



En este caso solo le vamos a permitir el acceso al administrador solo en local. De forma predeterminada no esta permitida el acceso en remoto a ningún usuario. Si tenemos la necesidad de hacerlo en este post te explico como.


Comprobaremos que funciona accediendo con el mismo cliente que hemos instalado:

sudo mariadb
 

Accediendo al gestor MariaDB