Categorías
Access GNU/Linux Microsoft

Leer archivos Access desde Linux con mdbtools

El formato .mdb de Microsoft Access es propietario y su uso se restringe a los entornos de trabajo Windows, lo cual implica no solo tener el sistema operativo de Microsoft sino además haber comprado una licencia de Office. Al no poder trabajar de forma directa con ellos en Linux, ya existen aplicaciones que nos permiten leerlas, como son por ejemplo DBeaver o Kexi. Sin embargo, puede que no necesitemos un programa tan completo, sino que solo nos interese extraer la información contenida en el Access para luego procesarla por otros medios. Para este cometido lo más sencillo es utilizar la herramienta mdbtools. Aunque podemos bajarnos el código y compilarlo, es más fácil utilizar los gestores de paquetes de cada distribución Linux, por ejemplo en Fedora o cualquier distribución basada en Red Hat la forma de hacerlo sería:

sudo dnf install mdbtools

Una vez instalada, tenemos a nuestra disposición varios comandos, uno de los cuales es mdb-export, que nos permite exportar una de las tablas contenidas dentro del archivo Access a un fichero de texto plano con formato csv de esta forma:

mdb-export nombre_Access nombre_tabla > nombre_fichero.csv 

Donde nombre_Access es el nombre del ficho Access; nombre_tabla es el nombre de la tabla dentro del Access de la que queremos obtener los datos; y nombre_fichero.csv es el nombre del fichero de texto en el que queremos guardar la información. Existen más opciones para la exportación de datos que pueden consultarse simplemente tecleando “mdbtools” en la consola:

En caso de que no conozcamos a priori los nombres de las tablas incluidas en el Access, podemos obtenerlos con el comando:

mdb-tables nombre_Access

Existen más comandos que podemos usar, y podemos obtener una lista de ellos si tecleamos “mdb-” en la consola y pulsamos el tabulador. El que puede sernos bastante útil es mdb-schema, que nos devuelve no solo las tablas que tenemos en el Access sino también los campos que tiene cada una y su formato.

Otra de las buenas características de mdbtools es que puede usarse también desde un script de R, si previamente instalamos el paquete Hmisc en R con:

install.packages("Hmisc")

Con él instalado podemos usar el comando:

mdb.get(RutaAlFicheroAccess, "nombre_tabla") 

Esta opción de carga de datos desde R me parece más interesante que la utilización de los paquetes basados en Rodbc, porque dichos paquetes necesitan que la arquitectura del sistema (32 o 64 bits) sea la misma que la del Access, lo cual puede ser un problema.

Categorías
Fedora GNU/Linux

Fedora 33: buenas impresiones

Aunque hace ya tiempo que se liberó la versión 33 de Fedora, no me había decidido a probarla hasta hace unos días. Me relación con Fedora comenzó hace bastantes años, creo que la primera versión que probé fue Fedora 5, y por una u otra razón (no reconocer el hardware, principalmente) no terminaba de convencerme para su utilización diaria en mi equipo de trabajo, en el que casi siempre tenía Debian o una distribución basada en Debian.

Esa sensación ha cambiado totalmente con la versión 33, la cual he instalado en lo que es mi actual equipo de trabajo: un Dell Latitude E6320 con procesador i5-2520, 4Gb de RAM y disco HDD de 250 Gb, un portátil robusto pero que tiene ya más de seis años. Ha reconocido perfectamente el hardware a la primera y el equipo se nota ágil y efectivo. Tengo que resaltar que este equipo resultaba extremadamente lento y prácticamente inutilizable con Windows 7, el sistema operativo que traía de fábrica, y cuyo anterior propietario lo tenía destinado al punto limpio, si no hubiera pasado antes por mis manos y por la magia del ecosistema GNU/Linux.

En estos momentos me permite conectarme perfectamente en remoto a mi equipo con Windows 10 del trabajo mediante una VPN y el escritorio remoto Remmina; maneja una pantalla externa auxiliar sin problemas de resolución y ha reconocido perfectamente el adaptador wifi y el teclado inalámbrico por bluetooth. La conexión con Skype empresarial se puede hacer mediante el equipo remoto, direccionando en Remmina los dispositivos de audio al equipo local, y además se puede configurar la calidad de la conexión remota, y así en caso de que no tengamos mucho ancho de banda disponible podemos bajarla para que la respuesta sea mejor. De esta forma, el teletrabajo es perfectamente posible independientemente del sistema operativo que necesitemos usar, con un equipo muy modesto gracias a su nueva vida con Fedora 33.

Categorías
gnome GNU/Linux

Añadir un lanzador de aplicación en Gnome

Cuando instalamos una aplicación en linux usando el escritorio Gnome, es posible que no nos aparezca el icono correspondiente al pulsar en “Actividades”.  Para añadirlo, solo tenemos que crear un fichero “miAplicacion.desktop” en el directorio “/usr/share/applications/” con el siguiente contenido (hay que sustituir las partes entre < > por lo que corresponda):

[Desktop Entry]
Type=Application
Encoding=UTF-8
Name=<miAplicacion>
Comment=<Mi aplicación es ...>
Exec=<ruta al ejecutable o script>
Icon=<ruta a la imagen que usaremos como icono>
Terminal=false

Nada más guardar este fichero, ya nos aparecerá el icono lanzador de esta nueva aplicación al pulsar en “Actividades”.

Para más información sobre la creación de lanzadores en el escritorio, se puede consultar esta página de Gnome Developer.

Categorías
ElementaryOS GNU/Linux

Error: Bluetooth no se pudo conectar

Este mensaje me ha aparecido usando Elementary OS Linux en la versión 5.1 Hera cuando he intentado conectar un teclado bluetooth de la marca SUBBLIM que ya tenía previamente emparejado y con el que ya había estado trabajando antes sin problemas. No he encontrado el origen del error, pero como ya se había conectado sin problemas antes, pensé que eliminando el dispositivo de la lista de emparejados y volviendo a empezar podría solucionarse.

Dado que la interfaz de configuración de bluetooth en ElementaryOS no permite hacer mucho, esto solo puede hacerse mediante la consola. Para ello tienen que estar instalados los paquetes bluez y bluez-tools. Una vez instalados ejecutamos el comando bluetoothctl, el cual abre un diálogo en consola que nos muestra una lista con los dispositivos emparejados, su MAC y un nombre descriptivo, si lo tiene.

Como el dispositivo que da el problema es el teclado, lo eliminamos de la lista con el comando remove 12:34:56:78:90:12 (reemplazando el valor de la MAC con el que nos aparece en el listado). Para salir del diálogo tecleamos exit.

A continuación, en la interfaz de configuración de bluetooth ya se puede volver a emparejar y conectar de nuevo el dispositivo.

Categorías
GNU/Linux KDE Ubuntu

Jitsi se bloquea en NimbuzzAvatars: cómo arreglarlo

Al instalar Jitsi en un ordenador con Linux KDE Neon 5.18 utilizando las instrucciones de la página de descargas de jitsi.org para Ubuntu/Debian estable, la aplicación no arrancaba, se quedaba la pantalla de inicio bloqueada en el paso NimbuzzAvatars. Para solucionarlo basta con instalar la versión Jitsi del repositorio “inestable”. Para ello modificamos a mano el archivo /etc/apt/sources.list.d/jitsi-stable.list cambiando la palabra stable por unstable y luego renombramos el archivo a /etc/apt/sources.list.d/jitsi-unstable.list para que quede constancia del cambio. También podemos hacerlo con varios comandos:

Borramos el archivo previo:

sudo rm /etc/apt/sources.list.d/jitsi-stable.list

Creamos el nuevo:

sudo sh -c "echo 'deb https://download.jitsi.org unstable/' > /etc/apt/sources.list.d/jitsi-unstable.list"

Desinstalamos el paquete, actualizamos las fuentes e instalamos el paquete de nuevo, que ahora usará la fuente inestable:

sudo apt-get remove jitsi

sudo apt-get -y update

sudo apt-get -y install jitsi

Y con esto ya arranca la aplicación correctamente. Esto debería de funcionar también con cualquier otra distribución basada en Ubuntu 18.04.

Categorías
Access GNU/Linux

Cómo leer una base de datos Microsoft Access desde Linux con DBeaver

La base de datos Microsoft Access no está disponible para Linux, por lo que para acceder a ella o bien se usa un equipo con sistema operativo Windows o bien un programa que permita acceder a su contenido desde Linux. Un programa para hacer lo segundo, que a mí me ha parecido fácil de usar y bastante completo, es DBeaver.

Aunque es un programa de pago, tiene una versión Community gratuita que permite hacer muchas cosas, entre ellas acceder a una gran variedad de bases de datos, entre las que se encuentra Access. Tiene versión para Linux en formato deb, rpm, snap… En mi caso, Debian 10, la instalación sería como sigue:

Como es un programa escrito en Java, se necesita previamente instalar dicho entorno de ejecución ejecutando en un terminal:

sudo apt install default-jre default-jdk

Y comprobando que se ha instalado correctamente con:

java -version

javac -version

A continuación descargamos el fichero .deb y situándonos en la carpeta en la que se encuentra el fichero descargado, ejecutamos:

sudo dpkg -i dbeaver dbeaver-ce_7.0.1_amd64.deb

Una vez hecho esto, antes de lanzar el programa es conveniente ampliar la memoria RAM que va a utilizar porque la que viene por defecto puede ser escasa si la base de datos contiene muchas tablas. Para ello editamos el fichero /usr/share/dbeaver/dbeaver.ini (se puede consultar una explicación de cómo está organizado este fichero) modificando las líneas:

-Xms64m

-Xmx1024m

De forma que especifiquemos en ellas la cantidad inicial de memoria que usará el programa (-Xms ) y la máxima (-Xmx) que permitiremos que utilice. Hay que establecer unos valores que sean admisibles por el ordenador en que se esté trabajando. Para saber de cuánta memoria libre disponemos podemos ejecutar el comando free, y ajustar los valores en consecuencia. En mi caso he indicado -Xms1024m y -Xmx4096m.

A continuación iniciamos DBeaver y pulsando en el icono “Nueva conexión” (el enchufe):

Nos aparecen todas las bases de datos disponibles, bajamos hasta encontrar Access, la seleccionamos y pulsamos Siguiente:

A continuación especificamos dónde se encuentra el fichero .mdb que queremos abrir y lo seleccionamos. Es posible que se nos pida instalar un complemento java si no lo tenemos ya instalado, basta con pulsar en “Download” y tras finalizar, ya tendremos la base de datos Access disponible para su consulta en el navegador de bases de datos de la aplicación.

Como DBeaver tiene un asistente de exportación, podremos también extraer la información de la tabla que deseemos a un archivo .csv o .sql para su posterior carga en otra base de datos que no sea exclusiva de Windows.

Categorías
Debian GNU/Linux

Instalar el cliente de Spotify en Debian 10

Las instrucciones para instalar en Linux el cliente de Spotify las tenemos en la página web de dicha empresa. En el caso de Debian/Ubuntu podemos instalarlo mediante un paquete deb, pero tanto antes como después de instalarlo hay que hacer un par de cosillas tontas que son:

Instalar curl y net-tools. Abrimos un terminal y tecleamos:

sudo apt-get install curl net-tools

A continuación ya podemos instalar el cliente de Spotify mediante los comandos que indican en su página web:

curl -sS https://download.spotify.com/debian/pubkey.gpg | sudo apt-key add

echo "deb http://repository.spotify.com stable non-free" | sudo tee /etc/apt/sources.list.d/spotify.list

Ahora ya tenemos el cliente instalado, pero es posible que no nos funcione porque es necesario abrir los puertos que utiliza en el router. Para ello obtenemos nuestra IP de red local (que será algo así como 192.168.1.n siendo n normalmente un número entre 2 y 50) lanzando el comando ifconfig en un terminal (para eso instalamos las net-tools) y entramos en nuestro router con un navegador, normalmente en la dirección 192.168.1.1. Allí tendremos que abrir para nuestra IP el puerto 4070.

Cuando hayamos guardado la nueva configuración en el router, reiniciamos y ya debería de funcionar el cliente de Spotify.

Categorías
GNU/Linux Microsoft OneDrive

Acceder a documentos almacenados en OneDrive desde Linux con Rclone

Para poder acceder a los documentos de OneDrive desde Linux puede usarse el programa Rclone, que mediante rsync nos permite montar un sistema de ficheros en local que refleje nuestros documentos en la nube de Microsoft. Se puede usar tanto en modo terminal como utilizando una interfaz más amigable.

Usando la terminal

En esta página hay unas instrucciones detalladas para instalarlo. La mayor pega que le encuentro es que es software propietario, aunque gratuito. Lo he probado en Debian 10 y ha funcionado correctamente. Permite subir, borrar y renombrar archivos o directorios. El borrado de documentos, sin embargo, no permite almacenamiento en la papelera, por lo que solo pueden eliminarse.

Una vez instalado el programa y configurado con nuestra cuenta de OneDrive, para poder acceder hay que lanzar un comando que monta en nuestro directorio local la unidad remota. Cuando paramos el comando, la unidad desaparece, por lo que si queremos que se mantenga continuamente montado y accesible tenemos que incluir el montaje en las aplicaciones al inicio.

Interfaz gráfica

Podemos usar la interfaz RcloneBrowser en caso de que queramos una forma más amigable de acceder a OneDrive desde Linux. La forma de instalarlo sería la siguiente (este ejemplo es para Fedora 33 que es donde lo he probado, pero sería similar para otras distribuciones Linux):

sdo dnf install rclone rclone-browser

Una vez instalado, la primera vez que lo ejecutamos nos aparece una ventana con tres pestañas. En la pestaña “Remotes” pulsando en el botón inferior que pone “Config…” se nos abre un diálogo similar al que obtenemos cuando configuramos el Rclone por terminal. Respondemos a las preguntas que nos va haciendo dejando las opciones por defecto (salvo los datos correspondientes a nuestra cuenta en la nube, claro) y al terminar nos aparecerá en la ventana un icono con forma de nube que al pulsarlo nos muestra un navegador de archivos que nos permite renombrar, mover, borrar, descargar, subir, etc. archivos a nuestro almacenamiento en la nube.

Categorías
GNU/Linux

Error PXE-E53 No boot filename received

Este error me aparecía al arrancar el ordenador tras instalar Fedora 28 en un ordenador Acer en el que he tenido que activar la opción Legacy en la BIOS porque se resistía a arrancar en modo UEFI. Esto es debido a que al activar este comportamiento del firmware está habilitada por defecto la opción de arranque en red. Para que el error desaparezca y el arranque sea más rápido, pues no se queda esperando contestación por DHCP por un tiempo, basta con deshabilitar dicha opción. Para hacerlo tenemos que entrar en el menú del firmware o BIOS, en mi caso pulsando F2 al arrancar. Después, buscaremos en la configuración algún sitio donde aparezca la opción de “Network Boot” (dependerá de cada ordenador dónde aparezca dicha opción) y la marcaremos como “Disabled”. Salimos guardando los cambios y ya está. El ordenador arrancará mucho más rápido y sin mostrar dicho mensaje.

(Imagen de  cabecera tomada de: www.itsupportguides.com)

Categorías
GNU/Linux

Migrar una web con Drupal 8 a un virtual host local de apache

Migrar una instalación ya funcionando de Drupal 8 desde la web a un servidor local en nuestro equipo es ligeramente más complicado que con otras versiones de Drupal, la forma de hacerlo que a mí me ha funcionado es la siguiente:

Partimos de un equipo en el que tenemos instalado linux Mint 18.1, pero estas instrucciones podrían valer también para cualquier distribución linux, cambiando convenientemente las rutas de los ficheros.

Instalamos el servidor web:

sudo apt-get install apache2

Para comprobar que funciona, accedemos con un navegador a la dirección http://localhost  y deberíamos ver la página raíz del servidor apache

Instalamos PHP, que en esta versión de Linux Mint (18.1) es el PHP 7.0, y algunos módulos de php que nos serán necesarios:

sudo apt-get install php7.0 php7.0-mysql libapache2-mod-php7.0 php7.0-cli php7.0-cgi php7.0-gd php7.0-curl php7.0-gd php7.0-intl php7.0-imap php7.0-mcrypt php7.0-pspell php7.0-recode php7.0-snmp php7.0-sqlite3 php7.0-tidy php7.0-xmlrpc php7.0-xsl php-pear php-imagick php-apcu

Comprobamos que PHP funciona creando como root el fichero /var/www/html/info.php con una única línea que ponga

<?php phpinfo(); ?>

Reiniciamos el servidor web

sudo service apache2 restart

Accedemos a la dirección http://localhost/info.php y deberíamos de ver la página de información de PHP

Habilitamos el  módulo rewrite

sudo a2enmod rewrite

Instalamos MySQL

sudo apt-get install mysql-client mysql-server

Aseguramos la instalación de MySQL con el script

sudo mysql_secure_installation

Instalamos y configuramos SSL, para ello creamos una carpeta

sudo mkdir /etc/apache2/ssl

Nos situamos en ella y y ejecutamos el comando de creación de un certificado autofirmado (en este comando y en las instrucciones siguientes habrá que cambiar “misitio” por el nombre de nuestra web)

cd /etc/apache2/ssl
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/apache2/ssl/misitiossl.key -out /etc/apache2/ssl/misitiossl.crt

Se nos hará una serie de preguntas, acerca de nuestra identidad etc. Cuando termine el comando, cambiamos los permisos de los ficheros creados en el directorio

sudo chmod 600 *

Ahora configuramos el host virtual en Apache, para ello creamos el directorio al que copiaremos los ficheros de nuestra web, y luego creamos el fichero de configuración del host virtual

sudo mkdir -p /var/www/misitio
sudo vim /etc/apache2/sites-available/misitio.conf

En este fichero tenemos que tener el siguiente contenido:

<VirtualHost *:80>
 ServerName www.misitio.local
 DocumentRoot /var/www/misitio

RedirectMatch 301 (.*) https://www.misitio.local$1
</VirtualHost>

<VirtualHost _default_:443>

ServerName www.misitio.local
 ServerAlias misitio.local
 ServerAdmin webmaster@localhost

DocumentRoot /var/www/misitio

ErrorLog ${APACHE_LOG_DIR}/misitio-error.log
 CustomLog ${APACHE_LOG_DIR}/misitio-access.log combined

SSLEngine on
 
 SSLCertificateFile /etc/apache2/ssl/misitiossl.crt
 SSLCertificateKeyFile /etc/apache2/ssl/misitiossl.key

<Directory "/var/www/misitio">
 Options FollowSymLinks
 AllowOverride All
 Require all granted
 </Directory>

<FilesMatch "\.(cgi|shtml|phtml|php)$">
 SSLOptions +StdEnvVars
 </FilesMatch>

<Directory /usr/lib/cgi-bin>
 SSLOptions +StdEnvVars
 </Directory>

BrowserMatch "MSIE [2-6]" \
 nokeepalive ssl-unclean-shutdown \
 downgrade-1.0 force-response-1.0
 BrowserMatch "MSIE [17-9]" ssl-unclean-shutdown

</VirtualHost>

Modificamos el fichero /etc/hosts añadiendo una línea en la que apuntamos a nuestro host virtual. Para ello incluimos en este fichero una línea al principio que ponga:

127.0.0.1      www.misitio.local

Copiamos los ficheros de la web que queremos migrar a la carpeta /var/www/misitio, creamos en nuestro MySQL local una base de datos ideńtica a la que tenemos en la base de datos de la web, y creamos el usuario con el que se accede a ella desde el sitio web. Para ello podemos usar adminer, phpmyadmin, etc. Si en vez de migrar una web estamos creando una web desde cero, pues entonces usamos el método habitual de instalación de una web Drupal, usando la dirección de nuestro host virtual como inicio del proceso.

Solamente si estamos haciendo una migración, una vez que tenemos los ficheros transferidos y la base de datos configurada, accedemos al fichero:

sudo vim /var/www/misitio/sites/default/settings.php

y modificamos la parte correspondiente a los host de confianza, incluyendo la dirección de nuestro host virtual. Buscamos trusted_host_patterns y el fichero debería de quedar tal que así:

$settings['trusted_host_patterns'] = array(
 '^www\.misitio\.com$', 
 '^www\.misitio\.local$'
);

Y ya debería funcionar todo, accediendo a la página https://www.misitio.local deberíamos de ver la página principal de nuestra nueva web en local. La primera vez que accedamos a ella nos saltará una advertencia de seguridad en el navegador porque estamos usando un certificado autofirmado, por lo que deberemos de añadir una excepción de seguridad para poder acceder las siguientes veces sin que salte este aviso.

Este post está basado en gran parte en lo que se explica en: https://kreationnext.com/support/how-to-install-drupal-8-with-apache-mysql-and-ssl-on-ubuntu-15-10/