Copiar y pegar en Linux

Listado de conocimientos técnicos necesarios para entender este post con éxito:

  • Hay que saber seleccionar un texto
  • Hay que saber pulsar botones en un mouse
  • Hay que saber lo que es un ordenador y como interactuar con él

Podría empezar diciendo algo así como: ¡No se asusten, es igual que en Ruindows!… pero la verdad es que el hecho de copiar y pegar en GNU/Linux (o en cualquier otro sistema operativo tipo UNIX) tiene su gracia. Por supuesto que podemos hacer el clásico Ctrl+C para copiar y Ctrl+V para pegar, y también con el menú Edición –> Copiar, etc. Pero esto no nos importa porque ya sabemos hacerlo :D

Vamos a hablar del tercer botón del mouse. El tercer botón del mouse es, generalmente, el que hay en la ruedecita de scroll, no pienso analizar el resto de posibilidades. Tanto si estamos en modo texto o en modo gráfico. Tanto si estamos usando un programa de edición de textos, un navegador, una terminal o cualquier otra cosa con textos seleccionables, un clic con el tercer botón (o botón del medio) del mouse pegará el texto que tengamos seleccionado. Así de simple. No hay más.

Por si no ha quedado claro pondré un ejemplo a nivel de parbulario. Seleccionamos una palabra, frase, párrafo, texto, página web, etc como lo hemos hecho toda la vida y hacemos clic con el botón del medio en el lugar donde queramos copiar el contenido.

Si nuestro mouse no tiene más que dos botones, hacer clic con los dos a la vez genera el mismo evento que hacerlo con el tercer botón.

Guardando la salida por pantalla en un fichero con el comando tee

A veces, administrando servidores por linea de comandos, voy a hacer una tarea que se va a demorar mucho tiempo, quizás horas. Por ejemplo, compilar todas las actualizaciones e instalarlas en *BSD, sincronizar un repositorio, etc.

Muchas veces al ejecutar comandos importantes para el sistema es necesario estar atento a la pantalla por si salen mensajes de alerta que nos pueden ser de ayuda, pero es evidente que no podemos estar atentos al 100% con tareas de este tipo. Una solución cutre sería redireccionar el STDOUT (>) a un fichero, usaremos el comando find sólo como ejemplo, por poner algo:

# find / -name *.conf > salida

En este caso, salida contiene toda la salida que hubiese hecho por pantalla el comando en concreto, pero… ¿y si queremos ver la salida en tiempo real, y al mismo tiempo almacenarla en un fichero? Muy facil, vamos a usar tee:

# find / -name *.conf | tee salida

tee envía lo que recibe por el pipe hacia la salida standard STDOUT (la pantalla) y al mismo tiempo lo envia al fichero que le pasemos por parámetro… ¡voilà! Pero supongamos que no queremos escribir de cero el fichero salida como lo haríamos con > sinó añadir esos datos al final como haríamos con >>. En este caso tenemos que usar el parámetro -a (append):

# find / -name *.conf | tee -a salida

Hasta aquí esta mini-explicación de un comando muy útil pero muchas veces desconocido, olvidado o simplemente poco usado.

Bugs

BUGS

Bugs? You must be kidding, there are no bugs in this software. But if we happen to be wrong, send us an email with as much detail as possible to <pacman-dev@archlinux.org>.

$ man pacman

Detour: nuevo theme para e17

Detour es un tema para el escritorio Enlightenment 0.17, y para qualquier aplicación que use las librerías EWL y ETK. Usa los ya clásicos iconos Tango y es realmente precioso y simple, como tiene que ser.

Yo personalmente llevo algunos meses usando el theme Cthulhain en mi portátil, pero viendo esto, me paso a Detour. Aquí podéis ver una captura de pantalla. La maquinita es un Pentium III 600 Mhz, 128RAM y uso FreeBSD 6.2.

Detour

Página oficial del proyecto (incluye varias capturas de pantalla)

Cómo espeficar el teclado en español en Xorg

Teclado EspañolEste post puede parecer una tonteria, por evindente, pero recuerdo hace tiempo haberme encontrado con ese problema y no tener ni idea de cómo solucionarlo. Si usas KDE o Gnome, tienes un bonito menú donde configurar el layout del teclado y ponerlo en español.

Pero si eres usuario de algun window manager más simple y DIY, tienes que añadir lo siguiente al fichero /etc/X11/xorg.conf dentro del apartado Section “InputDevice” que hace referencia al teclado. Tenemos que poner el modelo de teclado (número de teclas) y por supuesto el mapeo de teclado “es”.

Option "XkbModel" "pc105"

Option "XkbLayout" "es"

Ahora puedes usar tu mapeo de teclado en cualquier aplicación gráfica sin tener que configurar nada más. Otra forma de hacer lo mismo sería usar el comando setxkbmap:

# setxkbmap -model pc105 -layout es

Ya que hablo del fichero xorg.conf, aprovecho para anunciar xorg-conf.org, un nuevo proyecto que espera realizar una base de datos de configuraciones para xorg.conf, podéis enviar allí vuestros ficheros de configuración.

Alta resolución en la consola de FreeBSD

Una de las cosas que no me gustaba de FreeBSD cuando empezé es que por defecto usa una consola típica de 80 columnas x 25 líneas. En Linux esto depende del bootloader (GRUB o LILO), que es donde se define la resolución de pantalla y la profundidad de color que usará el sistema corriendo en modo texto. Volviendo a FreeBSD, lo que no sabía yo es que esto podía cambiarse fácilmente, para eso usaremos vidcontrol.

Vidcontrol es el comando que comunica con syscons (el driver que proporciona las terminales virtuales) y especifica modos de video y color.

Para empezar, vemos cuáles son los modos disponibles con el siguiendo comando:

# vidcontrol -i mode

En este momento nos cagamos en los desarrolladores de FreeBSD y en sus respectivas famílias. Vemos que, si los modos son esto que vemos, empezamos mal. Efectivamente, estamos empezando por el final casi, lo primero que tenemos que hacer es añadir ciertas opciones al Kernel. Añadimos lo siguiente a nuestro fichero de configuración del Kernel.

options VESA # Añadimos el módulo VESA al kernel

options SC_PIXEL_MODE # Syscons actuando en modo píxel

Si no sabes compilar un nuevo kernel no te preocupes, el otro dia expliqué cómo hacerlo. Ahora podemos volver a vidcontrol:

# vidcontrol -i mode

Vemos que la lista es ahora considerable. Escojemos un modo que sea de nuestro gusto y lo probamos, en mi caso uso el 279, que viene a ser 1024×768 con 16 bits de color. Lo probamos:

# vidcontrol MODE_279

Si esto no funciona (o no nos gusta el resultado) seguimos probando modos hasta tropezar con lo que queremos. Por ejemplo, si tenéis activado el mouse en consola, veréis que en algunos modos concretos no os funciona, no tengo ni idea del porqué pero supongo que habrá una buena explicación. Por último sólo falta añadirlo a /etc/rc.conf (configuración general del sistema) para que el modo se aplique al inicio.

allscreens_flags="MODE_279"

Reiniciemos y seamos felices.

Arch Linux 0.8 Voodoo y otras noticias relacionadas

Arch LinuxEs un poco estúpido anunciar una nueva release de Arch Linux, ya que los usuarios de Arch usamos todos current en cada actualización, incluso después de instalar via CD o FTP. Aún así en, este caso, el instalador trae muchas novedades como soporte para SSH e incluso poder instalar paquetes con pacman mientras configuramos nuestro inminente sistema.

No sé qué puedo decir de Arch que no se haya dicho antes, en mi opinión y habiendo probado otras distribuciones del mismo estilo como Slackware, Debian o Gentoo, sigo pensando que Arch me ofrece mucho más. Nunca me cansaré de recomendarla a todo el mundo, y ahora que cada vez me adentro más al mundo de los *BSDs… empiezo a pensar que Arch es uno de los pocos motivos que me empujan a seguir usando Linux.

Como anéctoda, esta versión 0.8 Voodoo és la última que usa un sistema numérico de ciclo de versiones. Al fin y al cabo Arch no tiene versiones sino snapshots, y numerar/nombrar una snapshot no tiene ningún sentido. Por este motivo Judd Vinet nos anuncia hoy el nuevo sistema de enumeración: un timestamp tipo YYYYMM, año y mes. Por ejemplo la versión 0.8 se hubiera llamado Arch 200704 ISO ya que el nombre sólo afecta a la ISO del instalador. La gracia está en que habrá una ISO por cada nueva rama de Kernel. Con el próximo kernel 2.6.22 tendremos nueva ISO.

Como anéctoda, quiero comentar las 2 mentiras que nos colaron en la web de Arch Linux el 1 de Abril (April Fool’s Day, una especie de Dia de los Inocentes para los anglosajones).

La primera fué que, como se considerava 0.8 Voodoo como release, se anunció un nuevo nombre para current, y este fué 1.0 Duke Forever, haciendo alusión al videojuego Duke Nukem Forever, que este mes pasado celebraba su décimo año en desarrollo y que nadie sabe si va a salir algun dia al mercado. Judd Vinet anuncia hoy la cancelación de la versión 1.0 debido al cambio de sistema de ciclo de versiones.

La segunda fué mucho más espectacular, el anuncio de que, debido a la confusión de que haya una distribución llamada Arch Linux y otra llamada Ark Linux, Arch pasaría a llamarse Ark. La gracia estuvo en la coordinación con la gente de Ark, que anunció justo lo contrario en su web, de esa forma Ark Linux pasaría a llamarse Arch Linux para no confundir a los usuarios. Incluso intercambiaron sus logos en las cabeceras de sus webs.

Capturas de pantalla del April Fool’s Day:

Compilando el kernel de FreeBSD

Esta semana he instalado FreeBSD en el portátil y llevo algunos dias configurándolo todo, actualizando el sistema, instalando aplicaciones des de los ports, etc. Antes sólo habia usado FreeBSD como servidor y me he decidido a probarlo mas a fondo como sistema de escritorio. Una de las cosas que nunca antes habia hecho en FreeBSD es compilar el kernel. En Linux sólo lo hice un par de veces para añadir algo en concreto en la época en que usaba Slackware.

FreeBSD

Básicamente he añadido:

  • Soporte para la tarjeta de sonido sin tener que cargar el driver en /etc/rc.conf
  • Soporte para altas resoluciones en la consola
  • Especificar que la CPU es i686

Cosas que he quitado de hardware que no tengo (o no uso):

  • Soporte para CDROM
  • Soporte para Disquetera
  • Soporte para SCSI
  • Soporte para cintas
  • Soporte para alto número de particiones en el disco
  • Soporte para RAID
  • Soporte para puertos COM, LPT, etc

También he quitado el soporte para:

  • NFS
  • IPV6
  • Drivers Ethernet o Wireless que no necesito

¿Cómo compilar el kernel en FreeBSD?

El proceso de compilación del kernel en FreeBSD es muy simple. En /usr/src/sys se encuentra el código fuente del kernel. Si tenemos bien configurado el cvsup podemos actualizar el código a la última versión de esta forma:

# cd /usr/src

# make update

Con esto hemos actualizado el código fuente de todo el sistema base, ahora entramos en /usr/src/sys/i386/conf y hacemos una copia del fichero de configuración del kernel que viene por defecto:

# cd /usr/src/sys/i386/conf

# cp GENERIC NUEVOKERNEL

NUEVOKERNEL es un fichero de texto plano al que sólo tenemos que comentar (#) o descomentar las lineas adecuadas dependiendo de lo que estemos buscando. Para esto nos será extremadamente útil leer The Configuration File en el Handbook de FreeBSD. Lo editamos con ee (“easy editor”, viene por defecto en la instalación base) o con vi (lo prefiero pero a veces uso ee por pereza), y hacemos las modificaciones:

# ee NUEVOKERNEL

Ahora ya podemos compilar el nuevo kernel:

# cd /usr/src

# make buildkernel KERNCONF=NUEVOKERNEL

Instalamos:

# make installkernel KERNCONF=NUEVOKERNEL

Ahora el nuevo kernel se ha instalado en /boot/kernel/kernel y el antiguo se ha movido a /boot/kernel.old/kernel

Reiniciamos:

# reboot

Y si lo hemos hecho todo bien ya podemos disfrutar de un kernel a medida en nuestro sistema FreeBSD.

Copias de seguridad del MBR y la tabla de particiones en GNU/Linux

En primer lugar tenemos que plantearnos si realmente necesitamos guardar en un fichero el contenido de nuestro Master Boot Record y de nuestra Tabla de Particiones, posiblemente no. Se me ocurren dos casos, a modo de ejemplo, en que puede ser muy útil.

El primero estaria destinado a la clonación de discos, puedes guardar una imagen de cada partición junto con una imagen del sector de arranque. Luego ir al disco destino y volcar esa información sin problemas, consiguiendo un perfecto clon (los dos discos tienen que ser iguales). A mi la clonación de discos no me interesa especialmente, pero ahí queda eso.

El segundo caso es cuando se trata de una copia de seguridad, simplemente. Si eres un fanático de tu distribución favorita y llevas con la misma instalación desde hace 4 años (subsistiendo como un héroe a base de actualizaciones), supongo que no debes tocar a menudo el MBR y mucho menos crear y eliminar particiones. Pero si eres como yo y te dedicas a instalar todo lo que te cae en las manos (físicamente, sin usar virtualización), tendrás el disco bien partido y repartido (Linux permite instalarse en particiones lógicas, por lo que podrías instalar decenas de distribuciones en un sólo disco duro). En este caso es recomendable hacer copias de seguridad del sector de arranque por lo que pueda pasar.

Creando copia de seguridad del MBR:

# dd if=/dev/sda of=/root/backups/mbr bs=512 count=1

Recuperando el MBR a partir de la copia de seguridad:

# dd if=/root/backups/mbr of=/dev/sda bs=512 count=1

dd es una utilidad que, simplemente, copia el contenido de la entrada estándar if en la salida estándar of. En mi caso el disco duro /dev/sda es la entrada y el fichero /root/backups/mbr es la salida (y viceversa para la recuperación). bs es un parámetro que contiene el número de bytes que se van a copiar (el MBR está situado en la pista zero del disco duro, los primeros 512 bytes) y count es un parámetro que contiene el número de bloques que se van a copiar (los bloques son de 512 bytes, por lo que vamos a copiar solo uno, el primero).

Creando copia de seguridad de la Tabla de Particiones:

# sfdisk -d /dev/sda > /root/backups/tabla_part

Recuperando la Tabla de Particiones a partir de la copia de seguridad:

# sdfisk /dev/sda < /root/backups/tabla_part

sfdisk sirve para manipular tablas de particiones en Linux. En la creación de la copia de seguridad usamos el parámetro [-d] para que nos dé una salida en texto plano que pueda ser usada luego para regenerar la tabla. Pasamos esta salida al fichero /root/backups/tabla_part mediante el redireccionador de STDOUT [>]. Para recuperar la tabla sólo hay que usar ese fichero pasándolo por el redireccionador de STDIN [<] hacia el comando sfdisk.

En los ejemplos he usado /dev/sda como disco duro porque es así en mi caso, pero esto puede ser diferente dependiendo de si el disco es IDE, SATA, SCSI o USB. Hay varias formas de saber a qué disco nos estamos refiriendo. una es usar el comando mount para ver las particiones montadas, otra seria leyendo el fichero /etc/fstab donde están las instrucciones de montaje de discos para el arranque. Pero estas opciones no funcionarian por ejemplo des de un Live CD. La solución mas útil para ver todos los discos y particiones (aunque no estén montadas) es:

# fdisk -l

Este comando nos listará todas las particiones (muy útil para detectar un pendrive por ejemplo). Hasta aquí este mini manual, espero que a alguien le pueda ser útil.

Ineptitud

Son capaces de poner en la portada ‘Avalados por los mejores: acreditado por ESNIC, servidores IBM y S.O. RedHat Enterprise’ y luego el phpinfo() dice que el kernel se llama 2.6.12-1.1381_FC3smp, o sea que… ¡es Fedora Core 3 y no Red Hat Enterprise!

Suerte tenemos del servicio helpdesk via web, que solo tardan algunos dias en responder. Hace un año vimos como a la siguiente cuestión:

Estamos trabajando con una base de datos mysql y hemos visto que la versión de la que disponemos es la 3.23.58.

Creemos que nos sería de utilidad para nuestros servicios disponer de una versión mas actual de mysql [...].

…nos dieron esta joya por respuesta:

Apreciado cliente:

Por el momento no tenemos pensado actualizarlo dada la esperiancia en anteriores actualizaciones.
Disculpe las molestias.

No dudo de su esperiancia, pero que ofrezcan MySQL 3.23 a estas alturas y tengan el morro de contestar que no tienen ni idea de como actualizar sin cagarla… en fin.