LaTeX 3: formatos de texto

Estamos ya en la tercera entrega de la serie dedicada a \LaTeX para las humanidades. Con esta remataremos la parte más sencilla, que nos permitirá hacer una edición básica, aunque completa, de un texto puro, como una novela. Esta entrada será un poco larga, pero a cambio contiene mucha información nueva.

Anteriormente hemos creado el documento y le hemos dado una estructura lógica. Siguiendo esta dirección «de dentro hacia afuera» veremos primero cómo formatear partes del texto, y dejaremos para más adelante cómo agregar un índice al principio (o al final) y la página de título. Comencemos: Seguir leyendo

LaTeX: el primer documento

Después de haber visto cuales son los ingredientes necesarios y la manera de ponerlos a funcionar, comenzaremos con el uso práctico de \LaTeX.

Habíamos quedado en que \LaTeX es un conjunto de macros para \TeX. Como tal conjunto de macros, lo que hace es interpretar las órdenes que le hemos dado y pasárselas a \TeX, o sea, que funciona como un compilador. (si es que técnicamente no lo es, que no lo sé). Entonces hemos de escribir el documento y luego compilarlo. También habíamos quedado en que había más compiladores, que por el hecho de ser diferentes pueden interpretar órdenes diferentes y pasarle a \TeX otros parámetros.

\LaTeX, cuando compila un documento (se consigue con la orden latex), produce una serie de archivos con el mismo nombre y diferente extensión. El que nos interesa, de momento, es el de extensión dvi. Es un archivo «DeVice Independent», es decir, independiente del dispositivo, una especie de PDF (anterior al PDF, de hecho) para imprimir en cualquier sitio. Se puede convertir a PostScript, a PDF o visualizar directamente con una herramienta disponible  en la instalación de LaTeX llamada xdvi. Sin embargo, nosotros compilaremos con pdflatex, que directamente nos da un fichero de salida en PDF. Pero ahondaremos en esto más tarde. Como dijo el Dr. Frankenstein, vamos por partes: Seguir leyendo

Nueva etapa 3: organización

Un dato importante, cómo se organizará esto de aquí en adelante.

WordPress da la opción de añadir etiquetas a las entradas, lo seguiré haciendo como hasta ahora. También hay distintas páginas dentro de la “corriente principal” de la bitácora (me encanta la palabra bitácora, sobre todo comparada con blog) como, en este caso, Descargas o Licencia. Estas tienen un contenido bastante estático y así se quedará, aunque han desaparecido algunas que no tenían mucho sentido.

Gérard Dicks Pellerin a-1640xl pc065135
Imagen de dominio público (https://commons.wikimedia.org

Sin embargo, he decidido (he aprendido, pero me daba vergüenza decirlo) aprovechar la posibilidad de organizar las entradas en categorías. En el márgen derecho, dentro del desplegable que aparece pulsando en el menú (el icono de las tres rayitas) hay una lista de categorías que servirán para encontrar las entradas de una temática determinada, independientemente de que vayan apareciendo en la corriente principal a medida que se publican. Lamentablemente, las categorías aparecen por orden alfabético en lugar de jerarquizadas (la categoría japonés, por ejemplo engloba la categoría paso a paso, pero aparecen separadas). Si soy capaz de ordenarlas correctamente, bien, y si no, pues otra cosa que así se queda.

Estas categorías se explican a sí mismas: dentro de Informática habrá un poco de todo, pero lo que tenga que ver con GNU/Linux irá en su subcategoría correspondiente, así como todo lo que se relacione con la RaspberryPi. También dentro de Informática también hay subcategorías para las Informanidades y dentro de éstas, más divisiones. La categoría Japonés engloba todo acerca de esta lengua y dentro hay una división para el Paso a paso, una especie de mini curso o conjunto de lecciones para ir poco a poco. La categoría Cosas es una especie de cajón de sastre en el que meteré lo que no tenga que ver con la informática, sea en la vertiente que sea o el idioma japonés.

Espero que os guste todo lo que vaya surgiendo en este Bokunoshumi renacido. ¡Hasta pronto!

[ACTUALIZADO] Convierte tu Raspbery pi en un servidor de descargas. El proceso básico.

[Actualizado] He cambiado el punto de montaje del disco externo para ahorrar espacio en la tarjeta de memoria. Ahora funciona mejor.

[Actualizado] 23-07-2013. No solo se ha cambiado el punto de montaje del disco duro externo, sino de toda la instalación. Instalar el sistema de archivos en una tarjeta SD con su journaling y todo hace que una tarjeta dure menos de 6 meses. Desde que tengo el Raspberry Pi funcionando 24/7 ya he roto 2, una Sandisk y una Kingston. Ahora el sistema es más rápido y estable… de momento. Si aparecen problemas en el futuro, se irán solventando.

El objetivo de este post es explicar el modo de utilizar un Raspberry Pi como servidor dedicado a las descargas debido al alto precio de un PC clásico para este cometido. En esta primera parte, veremos cómo instalar y preparar la configuración básica. Si estás intentando usarlo como un centro multimedia de salón no es necesario nada de esto. Sigue los pasos indicados en esta entrada.

INGREDIENTES:

Un Raspberry Pi.

Una tarjeta SD de al menos 2 GB.

Un disco duro externo de 3,5” o uno de 2,5” con alimentación.

Una fuente de alimentación para el Raspberry Pi.

Lo primero que hay que hacer es conseguir una distribución para instalar en la tarjeta SD. Yo he escogido una ya adaptada a este hardware llamada Raspbian, además es una versión especial de Debian Wheezy, mi sistema operativo preferido con mucha diferencia. Se puede bajar de aquí.

Una vez en nuestro poder, se decomprime el archivo tar.gz para conseguir un archivo de imagen con extensión .img. Ahora introduce la tarjeta SD en el lector y copia todo el contenido de la imagen en ella. Es una imagen, de modo que restaurará completamente las particiones necesarias con sus sistemas de archivos correspondientes. Por eso no se trata de copiar el archivo directamente; para restaurar la imagen escribe en un terminal de root:

dd if=/ruta.archivo.de.imagen/imagen.img of=/dev/sdx

donde sdx es el dispositivo de la tarjeta. Si no sabes cuál es el dispositivo, en el mismo terminal de root

fdisk -l

y busca la partición de la tarjeta SD. Recuerda, no debes instalar la imagen en la partición sino en el dispositivo, de modo que si la tarjeta aparece como /dev/sdb1 el comando de instalación es

dd if=/ruta.archivo.de.imagen/imagen.img of=/dev/sdb.

Ya tenemos Debian Wheezy instalado en la tarjeta. Incluye el escritorio LXDE y aplicaciones varias, pero se las podemos quitar todas si andamos justos de espacio. No vamos a quitar nada, que eso se puede hacer más tarde y es una cuestión personal.

Lo que encontramos en la tarjeta SD es una partición de 59 MB con los archivos del directorio /boot y otra partición con el resto de la instalación. Lo que vamos a hacer es mantener la partición /boot en la tarjeta y usar el disco externo para el resto de los datos. Hemos de seguir dos pasos a continuación:

Dentro de la carpeta /boot (en la tarjeta), hay un archivo que se llama cmdline.txt que es necesario editar. Ábrelo con un editor de textos y cambia el texto root=/dev/mmcblk0p1 por root=/dev/sda1 y deja el resto como está. Si en lugar de mmcblk0p1 te encuentras con mmcblk0p2 u otra cosa similar no te preocupes, cámbialo por root=/dev/sda1 y listo.

A continuación es necesario grabar una imagen de la segunda partición, la que contiene todos los datos excepto el directorio /boot. Identifícala siguiendo el método anterior y guarda una imagen con

dd if=/dev/sdxn of=/ruta.al.archivo.de/imagen.img

donde sdxn es la partición de la tarjeta que queremos conservar, por ejemplo sdb2, sdc1, etc. Dependerá de qué dispositivos estén conectados al ordenador y en qué orden.

Una vez hecho esto, si aún no está conectado el disco duro externo que vamos a utilizar para descargar, conéctalo al ordenador. Vamos a formatearlo de la siguiente manera: una partición de 4GB para la instalación del sistema, una partición de 1GB (o 500 MB, como prefieras) para swap, y el resto para home. Todo en ext4. Se puede hacer por consola o en modo gráfico con GParted, la Utilidad de discos de Ubuntu u otros programas.

Ahora volvamos a la consola de root y buscamos la partición del disco externo que vamos a dedicar a la instalación de Raspbian. Supongamos que en la salida de fdisk -l encontramos esa partición como sdc1.

Se vuelca la imagen que se grabó antes con la instalación de la tarjeta SD con:

dd if=/ruta.al.archivo.de/imagen.img of=/dev/sdc1

suponiendo que sdc1 sea la partición correcta. Sustituir por lo que corresponda. Una vez echo esto, es necesario comprobar el sistema de ficheros y extender el tamaño de la imagen al total de la partición, para que la ocupe toda. Si te fijas, si haces df -h, verás que a pesar de tener 4 GB (o los que le hayas dedicado) disponibles, el tamaño real aparece idéntico al que había en la tarjeta. Para desfacer este entuerto, teclea los comandos (como superusuario siempre):

e2fsck -f /dev/sdc1

resize2fs /dev/sdc1

Si está montado el sistema de archivos, no se podrá comprobar, de modo que desmóntalo antes con umount /dev/sdc1.

Ahora lo que hay que hacer es montar el sistema completo; es decir, coge tu Raspberry Pi, insértale la tarjeta SD, conéctale un cable de red, el almacenamiento externo y, finalmente, enchufa la fuente de alimentación al puerto micro-USB. Yo he usado un cargador de iPod, que como normalmente ya se carga cuando se enchufa al ordenador, pues no le daba mucho uso. Recuerda que se recomienda que dé 1 amperio, que es lo que da el alimentador de Apple, o como mínimo 0,7 amperios. Un cargador de móvil también sirve si proporciona esa intensidad. Estos datos están siempre en una pegatina o serigrafiados en el propio cargador.

Esta es la imagen de la instalación completa para tener debajo del escritorio y que no moleste. Al estar dentro de una caja de cartón también sirve para recoger lo que sobre de los cables de alimentación o del ISP (el coaxial blanco que va al router).

Vista frontal.
Vista frontal.

En esta vista posterior se aprecian tres cables de datos que salen del router. Uno de ellos va al RaspberryPi, los otros dos están para conectar otros dispositivos cuando sea necesario sin tener que andar buscando cables por casa. Los terminales están sueltos dentro de la caja.

Vista posterior.
Vista posterior.

Y esta es la vista del interior de la caja. El RaspberryPi está metido en una cajita de papel para que no haya nada que toque la placa base por error. Está la regleta de alimentación con interruptor y protección, el disco duro externo, el RPi y un montón de cables, sin ordenar porque como no se ve nada…

Vista interior.
Vista interior.

Conéctalo todo. Espera unos segundos a que arranque y vete a otro ordenador que también esté conectado al router (el mismo que estabas usando hasta ahora sirve). OPCIÓN: Si puedes conectar un teclado USB y un monitor HDMI (o DVI con adaptador) a tu Raspberry, no es necesario que hagas las cosas a través de ssh, pero el objetivo es un sistema barato, compacto y discreto que podamos situar detrás de una librería, en una estantería o en una caja, como yo, por lo que la mejor opción será la conexión remota. Si tienes monitor y teclado, con el comando “startx” después del arranque iniciarás una sesión de LXDE. Pero es algo que nunca he probado. A partir de aquí puedes seguir haciéndolo todo en local y en modo gráfico. Yo sigo en “modo conexión remota”.

Ya estamos en otro ordenador de la red, el portátil o el de sobremesa, cualquier otro ordenador de la casa. Averigua la IP que ha adquirido el Raspberry Pi conectándote al router a través de un navegador. En el apartado “Users” o “Active Connections” o algo por el estilo podrás ver la IP del equipo que estás usando y también la del Raspberry. Toma nota de la dirección y cierra el navegador.

Ahora abre una consola y teclea

ssh -P22 pi@IP

El sistema te pide una contraseña: es la contraseña del RPi, por defecto es “raspberry”. Introdúcela y verás que cambia la línea del prompt. Ya estás conectado al pequeño Raspberry. La conexión que acabas de establecer es a través del protocolo SSH. Si no sabes nada acerca de él, te recomiendo que leas la siguiente entrada.

Pero, si te fijas, se está usando la instalación de la tarjeta, cosa que no queremos, por lo que debemos editar el fstab. Para ello, teclea:

sudo ls -l /dev/disk/by-uuid

Al final de cada línea está los nombres de la particiones (/dev/sdb1, por ejemplo). Antes hay una cifra larguísima en hexadecimal que es la UUID o identificación única de cada dispositivo. Cópiala.  Haz una copia de seguridad del fstab con el comando sudo cp /etc/fstab /etc/fstab.copia. Ahora editaremos el archivo correspondiente con:

sudo nano /etc/fstab

y al final del archivo, debajo de la línea que dice: /dev/mmcblk0p1  /boot  vfat , etc, añadiremos una línea que contenga lo siguiente:

UUID=41cd5baa-7a62-4706-c9e8-02c43ccee8d9   /            ext4     defaults,noatime   0   1
UUID=b8f34a74-7b9c-41f9-84ed-5b68d52732fa    /home   ext4     defaults             0        0
UUID=657d0693-bc8f-4017-aac5-2d40c27d0f42   none     swap   sw                      0        0

donde las largas ristras de números son las que hemos copiado de la salida del comando anterior, una para la raíz, otra para home y otra para la swap. Los números anteriores, por lo tanto, no sirven más que como ejemplo. Si los copias tal cual, no funcionará seguro.

Guarda, cierra y reinicia.

¿Todo ha ido bien? Si es así, lo verás fácilmente volviéndote a conectar al pequeño Raspberry y comprobando el tamaño de los sistemas de ficheros y su punto de montaje con el comando df -h.

A partir de aquí, aumentaremos un poco la seguridad.

Lo primero que hay que hacer, ya que es un ordenador al que nos vamos a conectar constantemente a través de la red del hogar, es definir una IP fija. Para ello escoge una que te venga bien. Por ejemplo, la que has escrito en el comando anterior, con el que iniciaste la conexión, o una más sencilla de recordar, siempre dentro del rango que permita tu router. Por lo general, están entre 192.168.0.10 y  192.168.0.255; consulta el manual para asegurarte. En mi caso tengo configuradas las direcciones así: 10 para un equipo, 20 para otro, 30 para el siguiente, etc. Escoge una, anótala y abre el siguiente archivo /etc/network/interfaces escribiendo:

sudo nano /etc/network/interfaces

y haz, lo primerito, una copia de seguridad por si las moscas. Aprieta Ctrl+O y añade “.copia” al nombre del archivo. Acepta con “Y” cierra el editor con Ctrl+X. Vuelve a abrir el archivo original de nuevo repitiendo la orden anterior. Desplázate hasta donde pone

iface eth0 inet dhcp

y cambia “dhcp” por “static” (sin las comillas). Añade una línea y escribe:

address IP

netmask 255.255.255.0

gateway 192.168.0.1

donde IP es la dirección que has escogido antes y “gateway” es la IP de tu router. Lo de “netmask” escríbelo así, tal cual. Reinicio de la conexión con el comando

/etc/init.d/networking restart

Ahora debería estar conectado de nuevo con la IP fija. Escribe “ifconfig” y comprueba que la IP es la correcta. Se se ha cortado la conexión ssh entre ambos ordenadores vuelve a establecerla, pero esta vez escribiedo la nueva IP.

Otra cosa muy importante, en un equipo que va a estar conectado las 24 horas sin supervisión, es aumentar la seguridad del usuario “pi” y del servidor ssh. Para ello, hay que editar un archivo de configuración como superusuario. El usuario “pi” tiene acceso a sudo, por lo que no hay más que escribir en la línea de comando:

sudo nano /etc/ssh/sshd_config

En este archivo hay opciones que debemos cambiar para aumentar la seguridad. Para empezar, cambiar el puerto de conexión, que es el 22 por defecto. En la línea que pone “Port 22” cambia el 22 por otro número, como 4321, por ejemplo. Eso cambia el puerto que escucha el servido ssh. Dado que hay multitud de ataques al puerto 22 buscando conexiones abiertas, es el primer cambio que hay que hacer. Hay más cambios posibles, pero os dejo un post interesante al respecto del tristemente abandonado blog “Entre tuxes y pepinos”. Es este.

Lo siguiente es cambiar la contraseña del usuario, la que hemos escrito para establecer la conexión al principio (“raspberry” por defecto), para que conexiones no autorizadas no tengan la contraseña tan fácil de adivinar. Escribe:

sudo raspi-config

y, en el menú que surge, escoge la opción de cambio de contraseña y sigue las instrucciones.

Llegados a este punto, te recomendaría un reinicio para comprobar que todo está bien puesto en su sitio y una copia del sistema. Para ello, en la misma consola escribe

sudo reboot

y el Raspberry Pi se reiniciará. Durante el proceso, obviamente, se cortará la conexión y desaparecerá el prompt del Pi, volviendo a ver el nombre del usuario local. Espera un momento y vuelve a conectarte, usando la nueva IP, el nuevo puerto, el mismo nombre de usuario (pi) y la nueva contraseña.

Otro de las acciones que me gusta hacer en aras de mayor seguridad (por los extraños y para manazas) es desactivar sudo y tener que acceder como root para romper algo. Lo que hay que hacer es configurar una contraseña de superusuario súper-segura. Teclea:

sudo passwd

para configurar una nueva contraseña. A continuación, editaremos un archivo:

sudo visudo

y, cuando se abra el fichero, comenta las líneas (comentar es introducir el carácter # al inicio de la línea, tal y como se ve en el ejemplo):

# Allow members of group sudo to execute any command
#%sudo  ALL=(ALL:ALL) ALL

y

#includedir /etc/sudoers.d
#pi ALL=(ALL) NOPASSWD: ALL

Una vez hecho esto, el comando sudo no funcionará y será necesario conectarse al ordenador con:

ssh -p4321 root@IP

donde, como siempre, 4321 es el puerto que hemos escogido para ssh e IP es la dirección que ya hemos configurado a mano.

Y este es el resultado final con todo funcionando debajo de el escritorio de mi despacho. Silencio total y un servidor 24/7:

Resultado final.
Resultado final.

Ahora solo hay que instalar los programas que uno desee y configurarlos al gusto. Si sabes cómo, no hay problema; si no, atento al próximo post para instalar y configurar un servidor de aMule.

Espero que os haya gustado y le saquéis provecho.

Fuentes:

Método de prueba y error.

Varias visitas a la tienda a comprar tarjetas SD.

http://lgallardo.com/2013/03/17/correr-raspberry-pi-desde-un-disco-usb/

Más prueba y error.

XBMC plugins: youtube y vimeo no funcionan.

El gran problema, irresoluble problema que arrastra mi XBMC desde hace varias versiones del programa y del plugin. De los plugins, porque es algo que afecta tanto al plugin de Youtube como al de Vimeo.

Cuando intentas arrancar cualquiera de ambos programas se muestra un error que dice, exactamente, lo siguiente: Error: Fallo en el script: plugin.video.youtube. Y no hay manera de arreglarlo, ni con desinstalaciones ni con borrado de caché ni nada de nada. Pero afortunadamente, hay sencilla solución.

Tras estudiar los logs de XBMC, veo que el problema es que se importan los módulos de python  excepto uno, CommonFunctions, que debe de estar deshabilitado. Parece ser, según he podido saber DuckDuckGo‘ando por la web, que puede ser por culpa de algún plugin marcado como roto en el repositorio que en su mal funcionamiento consigue anularlo.

Para desfacer el entuerto no hay más que conectarse al Raspberry Pi y abrir el siguiente directorio:

cd .xbmc/userdata/Database/

y renombrar o directamente eliminar el siguiente archivo:

mv Addons15.db Addons15.db.save

Y listo, ya podemos conectarnos a los servidores de Youtube o Vimeo

ACTUALIZACIóN:

Este método también soluciona el problema con los plugins de Euronews, ESA Videos y sospecho que algún otro.