miércoles, 19 de marzo de 2014

Error en VMware al compilar el kernel "Failed to build vmnet"

Es común actualizar los programas dentro de nuestro GNU/Linux, así evitamos tropezar con algunos errores o bugs, mejoramos la estabilidad de nuestro sistema e incluso disfrutamos novedades de las nuevas versiones.

Al actualizar los paquetes de Fedora 19, tuve un pequeño inconveniente con VMware Workstation. El kernel había pasado de la versión 3.12 a la versión 3.13 y en esta versión existe un problema al compilar el módulo vmnet de VMware. Este problema también se presenta en Fedora 20 y es muy probablemente en todas las distribuciones GNU/Linux con kernel 3.13, tal es el caso de Arch Linux.

Problema


Tras terminar de instalar VMware Workstation o al actualizar Fedora podemos tropezar con los siguientes mensajes en secuencia:
Before you can run VMware, several modules must be compiled and loaded into the running kernel
"Before you can run VMware, several modules must be compiled and loaded into the running kernel"
Stopping VMware Services. Virtual Network Device, Running depmod. Starting VMware Services
Unable to start services. See log file /tmp/vmware-root/vmware-modconfig-wxyz.log for details
"Unable to start services. See log file /tmp/vmware-root/vmware-modconfig-wxyz.log for details"

Al visualizar el archivo mencionado en el mensaje observaremos al final:

# cat /tmp/vmware-root/vmware-modconfig-wxyz.log

Extracting the vmnet source from "/usr/lib/vmware/modules/source/vmnet.tar".
Successfully extracted the vmnet source.
Building module with command "/usr/bin/make -j8 -C /tmp/modconfig-xPv9iG/vmnet-only auto-build HEADER_DIR=/lib/modules/3.13.5-103.fc19.x86_64/build/include CC=/usr/bin/gcc IS_GCC_3=no"
Failed to build vmnet.  Failed to execute the build command.

¡ Qué problema !

Solución simple


Para saltar el problema en nuestro VMWare Workstation 10, simplemente reiniciamos nuestro sistema operativo. Antes de iniciar Fedora tendremos en pantalla al gestor de arranque Grub. En él seleccionamos Fedora con el kernel 3.12 (con las teclas de arriba y abajo) e iniciamos Fedora presionando ENTER. Con eso el problema habrá desaparecido.

Solución definitiva


Bien, si queremos dar una solución completa al problema que tenemos con nuestro kernel y el módulo vmnet de VMware sigamos los siguientes pasos:

Descarguemos el parche

$ curl http://pastie.org/pastes/8672356/download -o /tmp/vmware-netfilter.patch

Ingresemos al directorio donde está el código fuente de VMware Workstation

$ cd /usr/lib/vmware/modules/source

Ahora ingresemos como superusuario

$ su
[Password de root]

Descomprimamos el paquete vmnet.tar

# tar -xvf vmnet.tar

Ahora apliquemos el parche

# patch -p0 -i /tmp/vmware-netfilter.patch

Volvamos a empaquetar el directorio vmnet-only

# tar -cf vmnet.tar vmnet-only

Eliminemos los rastros del parche

# rm -r vmnet-only

Y finalmente volvamos a configuar vmware

# vmware-modconfig --console --install-all

Con esos pasos ya podemos utilizar nuevamente y sin ningún problema nuestro virtualizador de sistemas Operativos VMware Workstation.

Fuente de referencia: fedoraproject.org/wiki/VMWare


Si te gustó esta publicación no olvides compartirlo. Espero sus comentarios.



lunes, 10 de marzo de 2014

Instalar ApiGen en Linux e Integrar con NetBeans

ApiGen es la herramienta para la creación de documentación profesional de API desde el código fuente PHP, similar al discontinuado phpDocumentor/phpDoc.

ApiGen tiene soporte para PHP 5.3 espacios de nombres, paquetes, vinculando entre la documentación, referencias cruzadas a PHP clases estándar y la documentación general, la creación de código fuente resaltada y soporte experimental para PHP 5.4.

ApiGen utiliza un sistema de plantillas Nette Framework y Texy para producir documentación HTML útil y fácil de leer, FSHL ​​de crear código fuente resaltada y TokenReflection para describir el código fuente documentado.

Instalar ApiGen

La forma mas facil de instalar ApiGen en su distribución Linux ya sea Ubuntu, Mint, Fedora, Red Hat, OpenSuse entre otros, es utilizando el paquete de PEAR, a continuación describo las maneras de cómo instalar ApiGen.

Instalar a traves de PEAR

PEAR es un sistema de distribución de paquetes PHP. Se incluye con PHP desde la versión 4.3 y es fácil de usar. Para utilizarlo primero verifique si PEAR esta instalado en su sistema, ejecute el comando:

# pear

Si obtiene un mensaje similar a "bash: pear: no se encontró la orden" Instalelo con la siguiente orden (todo como superusuario):

# yum install php-pear

El paquete PEAR contiene en sí ApiGen. Sus dependencias (Nette, Texy, FSHL ​​y TokenReflection) tienen que ser instalados por separado. Pero no se preocupe, el instalador de PEAR se hará cargo de ellas.

La forma más sencilla de instalarlo es utilizando la función de detección automática de PEAR. En ese caso, todo lo que tiene que hacer es escribir dos comandos:

# pear config-set auto_discover 1
# pear install pear.apigen.org/apigen

Ahora bien, si no desea utilizar la detección automática, usted tiene que añadir canales PEAR de todas las bibliotecas ApiGen manualmente. En este caso puede instalar ApiGen escribiendo estos comandos:

# pear channel-discover pear.apigen.org
# pear channel-discover pear.nette.org
# pear channel-discover pear.texy.info
# pear channel-discover pear.kukulich.cz
# pear channel-discover pear.andrewsville.cz

# pear install apigen/ApiGen

Si se encuentra con un mensaje como : WARNING: channel "pear.apigen.org" has updated its protocols, use "pear channel-update pear.apigen.org" to update, tiene que ejecutar el siguiente comando en su consola:

# pear channel-update pear.apigen.org

Una vez instalado ApiGen tranquilamente podrá generar documentación PHP de manera automática ejecutando el comando:

$ apigen --source <Ruta al código fuente> --destination <Ruta destino de la documentación>

En este punto podriamos tropesar con un inconveniente ya conocido:

PHP Warning:  require(Texy.php): failed to open stream: No such file or directory in /usr/bin/apigen on line 48

Warning: require(Texy.php): failed to open stream: No such file or directory in /usr/bin/apigen on line 48
PHP Fatal error:  require(): Failed opening required 'Texy.php' (include_path='.:/usr/share/pear:/usr/share/php') in /usr/bin/apigen on line 48

Fatal error: require(): Failed opening required 'Texy.php' (include_path='.:/usr/share/pear:/usr/share/php') in /usr/bin/apigen on line 48

Corrigiendo error en ApiGen (Texy.php)

Abra su consola y edite el archivo apigen dentro de /usr/bin

# vi /usr/bin/apigen

Busque la linea:

@include '/usr/share/pear/Texy/texy.php';

y cambiela por:

@include '/usr/share/pear/texy/src/texy.php';

Guardemos los cambios y salgamos del editor (Presionemos 'ESC' luego 'wq' y 'ENTER') y con ello ya no tendremos ese problema.

Integrar ApiGen y NetBeans

Abra nuestro IDE de desarrollo, NetBeans 7 en mi caso

Vaya a Herramientas > Opciones

Seleccione 'PHP' y luego la pestaña 'ApiGen'

Presione 'Search' y seleccione alguna de las opciones que aparece, en mi caso /usr/bin/apigen

Presionemos Aceptar y con ello tendremos integrado nuestro generador de documentación ApiGen con NetBeans IDE


Si te gustó esta publicación no olvides compartirlo. Espero sus comentarios.