Error «Cannot find include file …» en NetBeans

Minientrada

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».

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

Minientrada

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

Minientrada

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.

Dar permisos de escritura a carpetas compartidas entre Windows y Linux en VirtualBox

Minientrada

vbox_logo2_gradientPara compartir una carpeta de un sistema Windows anfitrión con un sistema Linux virtualizado basta con seguir las precisas instrucciones que se especifican en este enlace, al que solo le falta añadir que, para que dicha carpeta compartida tenga permisos de lectura-escritura, es necesario modificar un poco el comando de montaje que se incorpora al fichero /etc/init.d/rc.local, que tiene que quedar así:

sudo mount -t vboxsf  -o uid=1000,gid=1000 Share /media/windows

Donde Share es el nombre que se le ha dado a la carpeta compartida en VirtualBox y /media/windows el nombre del directorio creado para alojarla en el sistema de archivos de linux.

Ojo que el comportamiento es algo extraño: una vez que accedamos a la carpeta compartida, podremos leer y modificar los ficheros que ya existan en ese directorio raiz compartido, pero no podremos borrarlos ni crear ficheros nuevos. Tampoco podremos eliminar o crear carpetas  en ese directorio raiz, pero sí que podremos eliminar, modificar y crear ficheros o carpetas dentro de una carpeta que ya exista en el directorio compartido.

Por lo tanto, si queremos copiar cosas del sistema linux virtual en la carpeta compartida de windows tendremos entonces que crear una nueva carpeta en el sistema windows dentro de la carpeta compartida, y copiarlas ahí.

 

Pantalla en negro tras el inicio de sesión en CrunchBang Linux

Si utilizando CrunchBang Linux ocurre que, tras la pantalla de login, el escritorio se queda totalmente en negro, mientras que el resto de consolas (ctrl+alt F1 a ctrl+alt F6) siguen funcionando correctamente, puede ser debido a que se ha desconfigurado el gestor de sesiones, haciendo que nuestra sesión por defecto sea lxsession en vez del openbox.

Para arreglarlo basta con abrir una de los consolas que funcionan (p.ej. ctrl+alt F1) y en ella teclear:

sudo update-alternatives –config  x-session-manager

Aparecerán varias opciones, cada una de ellas asociada a un número, por lo que deberemos introducir el correspondiente a openbox-session.

x-session-optionsDespués de esto, reiniciamos el equipo y ya arrancará de nuevo con el escritorio de OpenBox.

Solución encontrada en unix.stackexchange.com

 

 

 

Error «.htaccess: Options not allowed here» en Apache2

Este error me ha aparecido en el log de Apache cuando he intentado acceder a una réplica en mi directorio de usuario de una página hecha en Drupal. Para solucionarlo he tenido que editar el archivo «/etc/apache2/sites-available/000-default.conf» añadiendo las lineas

<Directory /home/mi_usuario/public_html/>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>

Y reiniciar el servicio con «sudo service apache2 restart»

Particion ntfs sólo deja modo lectura

Minientrada

Si un día encuentras que (como me ha pasado a mí) una partición NTFS compartida entre GNU/Linux y Windows no deja acceder a ella desde Linux en modo lectura-escritura, y se empeña en dejar sólo el modo lectura, es posible que sea debido a que el sistema de ficheros está un poco estropeado, pero es fácil de arreglar. Basta con entrar en Windows y hacer una comprobación de disco. Es posible que incluso salte ella solita cuando arranque. Una vez que termine y al volver a arrancar, ya se podrá acceder a ella sin problema desde Linux.
De todas formas es importante comprobar que cumplimos todos los requisitos: tener instalado el ntfs-3g y correctamente escrito el fichero /etc/fstab. Para aprender ambas cosas tenemos el siguiente enlace: NTFS-3G en ArchWiki