sábado, 23 de enero de 2016

Solucion al método de exportación en PhpMyAdmin 4.2.12deb2


En el ciclo de Sistemas Microinformáticos y Redes del IES Gonzalo Nazareno (centro donde actualmente curso el ciclo de ASIR), los compañeros están realizando despliegues en hosting (prácticas de entornos de prueba-producción) de aplicaciones web desarrolladas en PHP.

Una de las compañeras del ciclo, estaba realizando la migración de la Base de Datos MySQL de Drupal 8.0.2 con PhpMyAdmin 4.2.12deb2, y al intentar realizar la importación de la base de datos en el servidor en “producción” se encontró con el siguiente error.


 

El error se debe a que no se encuentra la columna “name” en la declaración de la tabla, y por lo tanto, cuando establece la clave primaria con dicha columna MySQL devuelve el error anterior.

Como alternativa, le sugerí a la compañera que utilizara “mysqldump” para realizar la exportación e importación de la Base de Datos MySQL. Esta herramienta ofrece un método de exportación más fiable que PhpMyAdmin y no encontraron el error anterior al usarla.

mysqldump -u user -p dbdrupal > dbdrupal-bckp.sql

Pero a mí me quedó la duda de por qué PhpMyAdmin se comportaba de esa manera, así que me puse a investigar sobre las diferencias entre los métodos de exportación de Mysqldump y PhpMyAdmin. Lo primero que hice fue comprobar el fichero “.sql” que genera PhpMyAdmin tras la exportación y encontré lo siguiente.

CREATE TABLE key_value (
collection varchar(128) CHARACTER SET ascii NOT NULL DEFAULT '' COMMENT 'A named collection of key and value pairs.'
`value` longblob NOT NULL COMMENT 'The value.',
PRIMARY KEY (collection,`name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='Generic key-value storage table. See the state system for…';


ALTER TABLE key_value
ADD `name` varchar(128) CHARACTER SET ascii NOT NULL DEFAULT '' COMMENT 'The key of the key-value pair. As KEY is a SQL reserved keyword, name was chosen instead.';

El error se daba porque PhpMyAdmind intenta crear la estructura de la tabla completa y posteriormente realizar una modificación en ella para añadir el la columna “name”. Como comprenderéis el método de exportación de esta tabla no tiene mucho sentido.

Para que no suceda esto, hay que editar el script PHP /usr/share/phpmyadmin/libraries/plugins/export/ExportSql.class.php que se encarga de la exportación en PhpMyAdmin y modificar la siguiente línea.

if (preg_match('@CONSTRAINT|KEY@', $create_query)) {

por esta otra para que cree la columna que aparece en la restricción ante de declararla,

if (false && preg_match('@CONSTRAINT|KEY@', $create_query)) {

y comprobaremos que la exportación se realiza correctamente.

CREATE TABLE IF NOT EXISTS `key_value` (
`collection` varchar(128) CHARACTER SET ascii NOT NULL DEFAULT '' COMMENT 'A named collection of key and value pairs.',
`name` varchar(128) CHARACTER SET ascii NOT NULL DEFAULT '' COMMENT 'The key of the key-value pair. As KEY is a SQL reserved keyword, name was chosen instead.',
`value` longblob NOT NULL COMMENT 'The value.',
PRIMARY KEY (`collection`,`name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='Generic key-value storage table. See the state system for…';

 
Aunque esta modificación sirva para aquellos que quieran realizar las exportaciones e importaciones con PhpMyAdmin, yo recomiendo el uso de Mysqldump y la automatización de todas estas tareas mediante scripts.

domingo, 20 de septiembre de 2015

Problema con el soporte de dispositivos Realtek en Debian Jessie


Tras hacer una instalación de Debian Jessie con el kérnel Linux 3.16 y verificar que son soportados todos los dispositivos (lector de tarjetas, puertos USB, tarjetas de sonido, tarjeta gŕafica, atajos en el teclado...), he comprobado que la tarjeta de red inalámbrica de mi portátil Lenovo G50-70 no está soportada por los módulos del kérnel.

Para comprobar que dispositivo han sufrido fallos al arrancar el kérnel podemos utilizar el comando journalctl. Con la opción -k filtramos los mensajes del kérnel.

# journalctl -k|grep error
Imagen 1: Comprobando fallos en el kérnel.
 
Para ambos dispositivos de red, se necesita instalar el paquete firmware-realtek (0.43) non-free que contiene los módulos necesarios a incluir en el kérnel.

Modificamos el fichero /etc/apt/sources.list para descargar la lista de paquetes non-free (privativos), añadiendo la siguiente línea:
# nano /etc/apt/sources.list
deb http://ftp.es.debian.org/debian/ jessie main non-free
Actualizamos la lista de paquetes.
# apt-get update
Instalamos el firmware necesario.
# aptitude install firmware-realtek

Reiniciamos el equipo y comprobamos los mensajes de error proporcionados por el kérnel.

Imagen 2: Comprobando fallos en el kérnel.

Ahora, comprobamos el soporte de los dispositivos cuyos módulos se han cargado en el kérnel al arrancar el sistema.

Imagen 3: Adaptador de red inalámbrico en funcionamiento.



Después de varias horas de uso, he detectado cortes y demasiadas pérdidas de paquetes en la conexión inalámbrica. Teniendo en cuenta que utilizo la versión del kérnel Linux 3.16.7, he decidido instalar los módulos de la tarjeta de red inalámbrica del repositorio en Github https://github.com/lwfinger/rtlwifi_new que mantienen versiones más recientes de estos módulos.

Para instalar este módulo debemos seguir los siguientes pasos:

  1. Instalación de las build-essential (herramienta necesaria para la compilación del código fuente de los módulos) y del paquete git.
# aptitude install build-essential git
  1. Intalación de las Linux headers (se utilizará para recompilar el kérnel con los nuevos módulos):
# aptitude install linux-headers-`uname -r`
  1. Clonamos el repositorio con el código fuente de los módulos.
$ git clone https://github.com/lwfinger/rtlwifi_new
  1. Compilamos el c´odigo fuente de los módulos.
$ cd rtlwifi_new
$ make
  1. Instalamos los nuevos módulos.
$ su
# make install
  1. Eliminamos el módulo antiguo y cargamos el nuevo.
# rmmod rtl8723be
# modprobe rtl8723be

He estado probando los nuevos módulos durante varios días y de momento no he detectado problemas con ellos.

Fuente: http://enavas.blogspot.com.es/2015/05/problemas-con-la-wifi-con-chipset.html

domingo, 19 de octubre de 2014

Instalación de DBDesigner 4 en Debian Wheezy sin utilizar Wine

  1. Descargamos DBDESIGNER4:
$ wget http://downloads.mysql.com/DBDesigner4/DBDesigner4.0.5.4.tar.gz
  1. Descomprimimos el fichero descargado:
$ tar -xvf DBDesigner4.0.5.4.tar.gz
  1. Accedemos al directorio descomprimido:
$ cd DBDesigner4/
  1. En este paso es donde pueden surgir las complicaciones. Según la página web oficial, con ejecutar el fichero “startdbd” debería ejecutarse “DBDesigner4” sin problemas, pero al intentarlo nos puede pasar lo siguiente:
$ ./startdbd
Symbolic links exist
Starting DBDesigner4 …
$
  • Nos dice que se está arrancando “DBDesigner4” pero no es así. Si abrimos el fichero ejecutable “startdbd” con el editor de texto “nano” y comprobamos el código, en las últimas líneas de este fichero podemos leer lo siguiente:
$ nano startdbd
# now run the application, passing any parameters that where specified.
echo Starting DBDesigner4 ...
$app_path/DBDesigner4 $* 2> ~/.DBDesigner4/DBD4.log
  • Si nos fijamos un poco en el código, veremos que guarda un fichero de registro con posibles errores en la ejecución de DBDesigner4. Ahora comprobaremos el contenido de ese fichero:
$ cd ..
$ cat .DBDesigner4/DBD4.log
libXft.so.1: no se puede abrir el fichero del objeto compartido: No existe el fichero o el directorio
  1. Para instalar las librerías necesarias ejecutamos los siguientes comandos:
$ su
# aptitude install libstdc++5 libstdc++6 libstdc++6-4.7-dev
(cambia la librería “libstdc++6-4.7-dev” por la más actual, busca con “aptitude search libstdc++6*”)

  1. Ahora instalaremos la biblioteca Kylix:
$ wget http://downloads.sourceforge.net/project/kylixlibs/kylixlibs3/Generic%20linux/kylixlibs3-borqt-3.0-2.tar.gz
$ tar -xvf kylixlibs3-borqt-3.0-2.tar.gz
$ rm kylixlibs3-borqt-3.0-2.tar.gz
$ su
# chown -R root:root kylixlibs3-borqt/
# cd kylixlibs3-borqt
# ./install.sh
# cd ../
# cp -d /usr/lib/kylix3/* /usr/lib/
# aptitude install libjpeg62
  1. Ejecutamos DBDesigner4:
# ./DBDesigner4/startdbd
# exit

$ ./DBDesigner4/DBDesigner4

viernes, 10 de mayo de 2013

Servicio de implementación de Windows (WDS)

  • Para instalar el servicio de implementación de Windows hacemos clic en “Inicio → Herramientas administrativas → Administrador del servidor”.
  • Posteriormente hacemos clic  derecho en “Funciones → Agregar funciones”.
  • Marcamos el servicio de implementación de Windows (WDS) y hacemos clic en “Siguiente”.

  • Leemos la introducción a los servicios de implementación y hacemos clic en “Siguiente”.

  • Dejamos los servicios de función marcados por defecto para instalarlos posteriormente. Hacemos clic en “Siguiente”.

  • Confirmamos los servicios y funciones que se instalarán, para ello hacemos clic en “Instalar”.

  • Hacemos clic en “Cerrar” una vez finalizada la instalación.

  • Para ejecutar el servicio de implementación de Windows hacemos clic en “Inicio → Herramientas administrativas → Servicios de Implementación de Windows”.
  • Para configurar el servidor hacemos clic en “Servidores” y clic derecho en “Nodo_del_Servidor (en mi caso: servidor.servidor.com) → Configurar servidor”.


  • En la primera ventana muestra los servicios necesarios para la instalación y el uso correcto del servicio de implementación de Windows. Hacemos clic en “Siguiente”.


  • El siguiente paso será elegir la carpeta que contendrá las imágenes de instalación remota. Elegiremos una carpeta creada en una partición diferente a donde tenemos instalado el sistema. Una vez elegida la carpeta hacemos clic en “Siguiente”.


  • El siguiente paso es marcar las dos opciones indicadas, para que la conexión del cliente con el servidor DHCP se lleve a cabo sin problemas al arrancar el equipo por la red.


  • En la siguiente ventana hacemos clic en la opción “Responder sólo a los equipos cliente conocido”, de esta manera solo puede arrancar la instalación los usuarios creados desde el Active Directory de nuestro dominio. Hacemos clic en “Finalizar” y comenzará la instalación.


  • Se configurará el servidor de implementación.


  • El siguiente paso será añadir la imagen del sistema operativo a instalar y hacemos clic en “Finalizar”.


  • Indicamos la ruta al CD o directorio donde tengamos almacenado el sistema operativo y hacemos clic en “Siguiente”.


  • Creamos un nuevo grupo de imágenes y escribimos un nombre para ese grupo. Posteriormente hacemos clic en “Siguiente”.


  • Revisamos las opciones de configuración previamente indicadas y hacemos clic en “Siguiente”.


  • Ahora el servicio de implementación agregará las imágenes de arranque y de instalación del sistema operativo que vamos a instalar en red. Una vez haya terminado el servicio de agregar las imágenes, hacemos clic en “Finalizar”.


  • Podemos ver que se han agregado las imágenes en el servicio de implementación.


  • El siguiente paso es configurar nuestro equipo para que arranque en red y configurar correctamente el servidor DHCP y DNS para que el equipo del cliente pueda tener acceso a las imágenes del servidor de implementación sin que haya ningún tipo de error en el proceso.
    • DHCP:



    • DNS:


    • Cliente:


  • Por último, arrancamos el sistema en red y presionamos la tecla F12 para comenzar la instalación.