Error “Cannot find include file …” en NetBeans

Si empezamos a codificar en el lenguaje C/C++ utilizando NetBeans IDE es probable que cuando hagamos nuestra primera aplicación nos encontremos con el error “Cannot find include file …”

Para solucionarlo, cerramos el IDE e instalamos las utilidades necesarias para construir aplicaciones C++, en Debian/Ubuntu y distribuciones derivadas se consigue mediante el comando:

sudo apt-get install build-essentials

En las distribuciones de Linux derivadas de Archlinux el comando sería:

sudo pacman -S base-devel

Una vez hecho esto, abrimos de nuevo NetBeans, vamos a Tools / Options / C/C++ y en la pestaña Build Tools pulsamos en el botón Restore Defaults y luego en el botón Apply. A continuación vamos a la pestaña Code Assistance, pulsamos en el botón Reset Settings y luego en Apply.

Una vez hecho esto deberían de desaparecer los errores en los “include”.

Anuncios

Instalar LAMP en Chakra Linux

Voy a separar la instalación en varias partes: instalar el servidor de páginas web con PHP, el mySQL, el phpMyAdmin y por último la habilitación de un directorio de usuario para desarrollo de nuestras páginas web. Aunque esta instalación la he realizado en Chakra Linux 2015.03 Euler, los pasos creo que también funcionarán para cualquier distribución basada en Arch Linux.

Instalación del servidor de páginas web

Para ello utilizamos el siguiente comando, que nos instala los paquetes principales y otros que nos vendrán bien:

sudo pacman -S apache php php-apache php-gd php-mcrypt php-pear xdebug

El xdebug solo lo uso para depurar las aplicaciones en NetBeans, luego si no se usa ese entorno de trabajo no es necesario instalarlo. Arrancamos el servicio con el comando:

sudo systemctl start httpd.service

Para comprobar que funciona el servidor de páginas web podemos acceder con el navegador a la página http://localhost y ver que nos aparece el famoso “It works!”

Para incluir el PHP, editamos el fichero de configuración de Apache (yo uso el editor vim, pero eso es cuestión de gusto y penitencia personal):

sudo vim /etc/httpd/conf/httpd.conf

Y justo después de la línea

LoadModule dir_module modules/mod_dir.so

Incluimos la línea

LoadModule php5_module modules/libphp5.so

Y después del último “Include” en ese mismo fichero, añadimos las líneas:

# PHP
Include conf/extra/php5_module.conf

Para comprobar que funciona el PHP creamos un fichero info.php en el directorio donde tendremos nuestras páginas web (en este caso es el directorio /srv/http)

sudo vim /srv/http/info.php

En ese fichero incluimos el contenido siguiente:

<?php phpinfo(); ?>

Y accedemos a la página http://localhost/info.php para comprobar que funciona. Se nos mostrará la página de información de PHP con los datos de nuestra instalación.

Instalación de mySQL

Por defecto en Chakra Linux nos viene ya instalado el MariaDB, un clon de mySQL. Podemos comprobarlo con el comando:

sudo pacman -Ss mysql

Si no nos aparece como instalado, lo instalamos con el mismo comando anterior pero sustituyendo el “-Ss” por “-S”.

A continuación editamos el fichero php.ini

sudo vim /etc/php/php.ini

Y en él descomentamos (quitamos el “;” inicial) de las líneas

extension=mysql.so
extension=mysqli.so
extension=pdo_mysql.so
extension=gd.so
extension=mcrypt.so

Arrancamos el servicio con el comando

sudo systemctl start mysqld.service

Y para asegurar la instalación de nuestro mySQL lo hacemos con el comando

sudo mysql_secure_installation

Con el cual podemos incluir una clave para el usuario root y dar mayor seguridad a nuestra instalación aceptando la opción por defecto que se nos muestra.

Instalación de phpMyAdmin

Para instalar este programa normalmente se hace mediante el paquete de cada distribución, si existe, pero en este caso lo haremos utilizando la fuente original. Para ello accedemos a la página http://phpmyadmin.net y nos descargamos el fichero zip con la última versión pulsando en el botón que pone Download.

El fichero que nos hemos descargado lo extraemos en el directorio /srv/http con el comando:

sudo unzip /<sitio_donde_lo_hemos_descargado>/phpMyAdmin-4.4.9-all-languages.zip -d /srv/http

Y como no nos gusta el nombre del directorio creado, lo cambiamos por otro más corto con el comando

sudo mv /srv/http/phpMyAdmin-4.4.9-all-languages /srv/http/phpMyAdmin

Para comprobar que funciona accedemos a la página http://localhost/phpMyAdmin, en la que podremos entrar con el usuario root y la clave que le dimos anteriormente.

Habilitar un directorio de usuario

Para ello tenemos que modificar el archivo /etc/http/conf/httpd.conf descomentando la línea

LoadModule userdir_module modules/mod_userdir.so

Tenemos también que verificar que en dicho archivo aparece también la línea que incluye nuestro archivo de configuración, que es

Include conf/extra/httpd-userdir.conf

Entramos en el archivo /etc/http/conf/extra/httpd-userdir.conf y comprobamos que incluye las siguientes líneas

<Directory "/home/*/public_html">
      AllowOverride FileInfo AuthConfig Limit Indexes
      Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
      Require method GET POST OPTIONS
</Directory>

A continuación creamos el directorio donde vamos a alojar nuestras páginas web y le damos permiso de lectura a él y a nuestro directorio de usuario (si no, nos aparecerá el famoso error 403 de Apache)

mkdir ~/public_html
chmod a+x ~
chmod a+x ~/public_html

Copiamos el fichero info.php que creamos en /srv/http al directorio ~/public_html y accedemos a él en la dirección

http://localhost/~nuestro_usuario/info.php

Y ya está, ya tenemos nuestro entorno LAMP en Chakra Linux. Si queremos que cada vez que arranque el sistema tengamos el servidor web y el mySQL disponibles, lanzamos los comandos:

sudo systemctl enable httpd.service
sudo systemctl enable mysqld.service

Un último detalle: si vamos a usar el depurador de PHP de NetBeans, tenemos que entrar en el fichero /etc/php/conf.d/xdebug.ini y comprobar que tiene las líneas

zend_extension=/usr/lib/php/xdebug.so
xdebug.remote_enable=on
xdebug.remote_host=localhost
xdebug.remote_port=9000
xdebug.remote_handler=dbgp

 

KDE Dolphin no guarda los lugares de usuario

En una instalación nueva de openSUSE 13.2 me he encontrado con el bug 342685 aún no resuelto, que hace que los lugares que añadimos a la barra lateral de Dolphin no permanezcan cuando reiniciamos el navegador de archivos. La forma de solucionarlo es como indica el comentario 25 en la discusión, entramos al fichero:

/home/<nuestro_usuario>/.kde4/share/apps/kfileplaces/bookmarks.xml

Y ahí buscamos las etiquetas que se corresponde con el lugar que hemos creado y que no nos aparece, por ejemplo en mi caso es un acceso directo al directorio Dropbox, luego la parte del fichero a encontrar es:

<bookmark href=”file:///home/<nuestro_usuario>/Dropbox”>

<metadata owner=http://www.kde.org >

<isSystemItem>true</isSystemItem>
<metadata>
<bookmark>

La parte que tenemos que insertar en el xml es la etiqueta que ya he puesto en el ejemplo, y que podéis ver en ese fichero que la tienen todos los demás marcadores del sistema:
<isSystemItem>true</isSystemItem>

Hay que ponerla justo antes de la etiqueta <metadata> correspondiente.

Lo que hacemos es un engaño y algo chapucilla, la verdad, pues estamos haciendo creer al navegador que la carpeta es del sistema, cuando es una de usuario, pero mientras se corrige el bug, nos sirve.

Instalar Firefox o Thunderbird en Debian 8

Aunque las versiones adaptadas para Debian son perfectas y funcionales 100%, mi aprecio al proyecto Mozilla me impulsa siempre a usar directamente sus programas, por lo que si no eres un fan absoluto de Mozilla Foundation como yo, entonces no te hace falta hacer lo que sigue a continuación, tanto Iceweasel como Icedove funcionan perfectamente.

Primero descargamos el fichero de instalación de la página de descargas de Mozilla Firefox o Thunderbird.

Hacemos login en una consola como root y lanzamos los siguientes comandos (suponiendo que el fichero lo hemos descargado en el directorio Descargas):
#cd /opt
#tar xvf /home/nuestro_usuario/Descargas/firefox-...tar.bz2
#cp /opt/firefox/browser/icons/mozicon128.png /usr/share/pixmaps/firefox.png
#rm /usr/bin/firefox && ln -s /opt/firefox/firefox /usr/bin/firefox

Para el caso de Thunderbird los comandos son:

#cd /opt
#tar xvf /home/nuestro_usuario/Descargas/thunderbrid-...tar.bz2
#cp /opt/thunderbird/chrome/icons/default/default48.png /usr/share/pixmaps/thunderbird.png
#rm /usr/bin/thunderbird && ln -s /opt/thunderbird/thunderbird /usr/bin/thunderbird

A continuación tenemos que asignar el directorio en el que hemos hecho las instalaciones a nuestro usuario, para que así podamos actualizar las versiones sin tener que repetir la instalación. Para ello lanzamos el comando:

#chown -R nuestro_usuario:nuestro_grupo /opt/firefox
#chown -R nuestro_usuario:nuestro_grupo /opt/thunderbird

Para tener un acceso en el escritorio o el menú, depende de si usas Gnome, LXDE, etc tendrán que seguir un procedimiento u otro, por ejemplo, para Gnome y LXDE basta con crear el archivo firefox.desktop (hay que hacerlo con usuario root) en el directorio /usr/share/applications con el contenido siguiente:

[Desktop Entry]
Encoding=UTF-8
Name=Firefox
Comment=Browse the World Wide Web
GenericName=Web Browser
X-GNOME-FullName=Firefox Web Browser
Exec=/opt/firefox/firefox %u
Terminal=false
X-MultipleArgs=false
Type=Application
Icon=firefox
Categories=Network;WebBrowser;
MimeType=text/html;text/xml;application/xhtml+xml;application/xml;application/vnd.mozilla.xul+xml;application/rss+xml;application/rdf+xml;image/gif;image/jpeg;image/png;x-scheme-handler/http;x-scheme-handler/https;
StartupWMClass=Firefox
StartupNotify=true

Es conveniente cerrar sesión y entrar de nuevo en el escritorio, porque he visto en Gnome que si por ejemplo copias el archivo de otro programa para crear éste, a veces se mantiene el icono del anterior. Para Thunderbird sería igual  pero cambiando el nombre del programa, la descripción, etc y adaptándola al cliente de correo. El fichero thunderbird.desktop quedaría así:

[Desktop Entry]
Encoding=UTF-8
Name=Thunderbird
Comment=Mail client
GenericName=Mail client
X-GNOME-FullName=Thunderbird Web Browser
Exec=/opt/thunderbird/thunderbird %u
Terminal=false
X-MultipleArgs=false
Type=Application
Icon=thunderbird
Categories=Network;
StartupWMClass=Thunderbird
StartupNotify=true

Y ya está, a disfrutar con los programas de la Mozilla Foundation.

Cómo asignar la aplicación por defecto en LXDE

Al instalar Debian 8 con LXDE he visto que cuando hago doble click en los pdf, éstos se abren por defecto con el Gimp, algo que no es lo que quiero que suceda. Para cambiar este comportamiento y que los archivos de tipo pdf se abran con el programa Evince, tenemos que lanzar el siguiente comando (con nuestro usuario):

$ xdg-mime default evince.desktop application/pdf

Y ya está. Esto mismo sirve para asignar todas aquellas aplicaciones que tengan un archivo *.desktop en el directorio /usr/share/applications/ al tipo de archivo que deseemos.

Más utilidades del comando xdg-mime se pueden encontrar en esta página.

 

Activar el touchpad en LXDE

De “fábrica” no viene activado el touchpad en Debian 8 si elegimos el escritorio LXDE, algo recomendable si la máquina no tiene muchos recursos, por ejemplo mi netbook. Para activarlo es muy sencillo pero hay que editar como root el fichero:

/usr/share/X11/xorg.conf.d/50-synaptics.conf

Y buscar una sección en la que aparezca “touchpad”, y la dejamos como aparece a continuación:

Section “InputClass”
Identifier “touchpad catchall”
Driver “synaptics”
MatchIsTouchpad “on”
Option “TapButton1″”1”
Option “HorizTwoFingerScroll””1”
Option “SHMConfig””on”
EndSection

Hemos añadido solamente las tres últimas líneas antes del final de la sección, en ellas habilitamos el “tap” con el touchpad, habilitamos el scroll con dos dedos y desctivamos el touchpad al escribir.

Esto que he escrito aquí es solo un resumen de esta estupenda entrada sobre el tema. Dice que estas mismas instrucciones sirven también para XFCE, pero yo no lo he probado.
Ah, se me olvidaba: hay que reiniciar para que los cambios surtan efecto.

¿Un virtual host de Apache no funciona sin conexión a internet?

Logo de Apache http ServerCuando he intentado acceder a un host virtual local de Apache montado en mi Linux Mint en un momento en que estaba sin conexión a internet, he visto que el navegador era incapaz de mostrarme correctamente las páginas, continuamente intentaba buscarlas en un internet al que no tenía acceso, en vez de resolver correctamente a la máquina local, que es donde están.

Buscando por internet veo que es un problema que proviene de la configuración del navegador. Para resolverlo hay que entrar en la página about:config de Firefox, en ella buscar la línea que pone network.dns.disableIPv6 y modificarla para que ponga False. Una vez hecho ésto, ya podemos trabajar en los host virtuales en local aunque no tengamos conexión a internet.

Solución encontrada aquí y aquí.