Archivo de la categoría: Consola

No puedo instalar Chromium en Gentoo, me da error

Si estás intentando instalar Chromium en Gentoo, puede que te salga un error que diga al final algo así:

make: *** [out/Release/chrome] Error 1
emake failed
* ERROR: www-client/chromium-13.0.782.107-r1 failed (compile phase):
*   (no error message)
*
* Call stack:
*     ebuild.sh, line  56:  Called src_compile
*   environment, line 6339:  Called die
* The specific snippet of code:
*       emake chrome chrome_sandbox BUILDTYPE=Release V=1 || die;
*
* If you need support, post the output of 'emerge --info =www-client/chromium-13.0.782.107-r1',
* the complete build log and the output of 'emerge -pqv =www-client/chromium-13.0.782.107-r1'.
* The complete build log is located at '/mnt/guin2xp/portage/www-client/chromium-13.0.782.107-r1/temp/build.log'.
* The ebuild environment file is located at '/mnt/guin2xp/portage/www-client/chromium-13.0.782.107-r1/temp/environment'.
* S: '/mnt/guin2xp/portage/www-client/chromium-13.0.782.107-r1/work/chromium-13.0.782.107'

Vale. Lo primero de todo, has de saber que la compilación de Chromium es muy sensible a la falta de memoria porque la devora. A poco que no le guste la que tienes, zas, se rompe y da error. La solución es bien fácil: crea un fichero de swap de, pongamos, 3 Gb, actívalo, y ya tienes más memoria. Ahora vuelve a hacer emerge y muy probablemente pueda compilarlo.

Para crear la swap, ya sabes cómo se hace, ¿no?…

[lacofi@cecile ~]$ sudo dd if=dev/zero of=/media/swapfile bs=1M count=3072
[lacofi@cecile ~]$ sudo mkswap /media/swapfile
[lacofi@cecile ~]$ sudo swapon /media/swapfile

Gentoo solo instala OpenOffice y Chromium en inglés

Gentoo es distinta a todo. Y complicadilla de configurar, si vienes de Ubuntu o de cualquier otra distribución Linux normal y corriente. Así que si has decidido instalarla vete preparado para juguetear con la máquina porque te va a hacer bailar. :-D

OpenOffice y Chromium se compilan en el idioma que haya sido especificado en /etc/make.conf, concretamente en la variable LINGUAS, así que asegúrate de que en ese fichero hay una línea que diga:

LINGUAS=»es en»

o bien:

LINGUAS=»es»

Puedes añadir más idiomas, claro, pero asegúrate de que uno de ellos sea «es». Y esto es importante y me dio un buen quebradero de cabeza: la cadena de LINGUAS para el idioma español es «es» a secas. Si pones otra cosa como «es_ES», «es_ES@euro» o «es_ES@UTF-8», la compilación no reconocerá esos idiomas y te saldrá en inglés.

Pues ya sabes, cambia /etc/make.conf y recompila, anda.

Teclado inalámbrico Logitech K350 en Ubuntu

Funciona «out of the box». Vamos, enchufar y listo.

Magnífico teclado. Pero algunas teclas multimedia (cinco, para ser más exactos) no hay forma de que funcionen en Linux. Las demás, o funcionan «out of the box» o lo hacen con una pequeña configuración extra.

No voy a inventar la pólvora. Daniel Klaffenbach ya te lo explica todo muy bien y bastante masticadito para que no te estreses. ¡Gracias, Daniel!.

Indexar y buscar ficheros PDF

Bueno, PDF o de cualquier otro tipo. También en djvu, o documentos Word. Si usas tu escaner para gestión documental, sabrás apreciar esto porque tendrás un montón de PDF o DJVU en tu disco duro, y a veces querrás localizar uno de ellos según lo que contengan.

Te recomiendo Recoll, una herramienta basada en Qt, que es  bastante completita y fácil de usar. Está en los repositorios de Ubuntu, así que no deberías tener ningún problema para instalarla.

Eso si, Recoll necesita algunos programas para mejorar sus búsquedas. No son imprescidibles, pero ampliará los ficheros en los que puede buscar.

  • Haz un «apt-get install antiword» para instalar antiword.
  • Haz un «apt-get install djvulibre-bin para instalar djvutxt
  • Haz un «apt-get install aspell-es» para instalar los diccionarios castellanos de Aspell.

Vale, y además puedes editar tu «/etc/crontab» como root para añadir recollindex, una utilidad incluida en el paquete que reindexa tu disco duro. Por ejemplo, puedes añadir esto a tu «etc/crontab»:


24 * * * * lacofi  recollindex

Lo que significa que cada hora, a esa hora y 24 minutos, el usuario «lacofi» reindexará de nuevo su disco duro.

Hala, que lo disfrutes.

El teclado hace cosas muy raras en TightVNC

Pongamos que tienes un ordenador con Linux que usa habitualmente otro miembro de tu familia. Pero pongamos que quieres poder logarte de vez en cuando en esa máquina de forma remota, desde otro ordenador de tu intranet, y sin tener que darle un codazo a tu familiar, al grito de «Quita, que siempre lo tienes tu…«.

Obviamente, ya te habrás dado cuenta de que estoy hablando de mi santa. Es muy duro administrar un sistema si nunca consigues ponerte tu al teclado… :-D

Bien, si. Has mencionado SSH y tienes razón. Listo, que eres un listo.

No, yo me refería a un login gráfico.

Bueno, hay mil formas. Yo la que uso ahora mismo es VNC, concretamente vnc4server. Si usas Ubuntu, o cualquier otra variante de Linux basada en Debian, puedes configurar un script de inicio en la máquina que va a hacer de servidor. Pero no voy a desgañitarme en contártelo, porque ese trabajo ya lo ha hecho a la perfección nuestro amigo Andrew Berry. Así que vas, y te lo lees.

Luego vas a la máquina que va a hacer de cliente, instalas el paquete xtightvncviewer, y ejecutas un «vncviewer ip_del_servidor:1» para logarte. Y ya está.

Bueno, no. Puede que no esté. Yo lo hice y me encontré con que todo funcionaba de maravilla, a no ser que usara el teclado. Cuando tecleabas algo (por ejemplo una contraseña, o un comando, da igual) el resultado de lo que tecleas no tiene nada que ver con las teclas que apretabas. Y de forma bastante absurda, además. Al pulsar «q» aparece «c». Al pulsar «5» es como si pulsaras «retroceso». Cuando digo «cosas raras» quiero decir «cosas raras».

Afortunadamente, otro amigo que se llama Bassu Khan ha encontrado el origen del problema y la solución.

El problema surge solo si el servidor carga Gnome como escritorio. No ocurre con otros gestores de ventanas. Y la solución que propone Bassu Khan es editar el fichero $HOME/.vnc/xstartup (en el ordenador que hace de servidor) y, al final, justo antes de la linea que pone «/etc/X11/Xsession» añadir otra línea que ponga «export XKL_XMODMAP_DISABLE=1». Y ya está. Reinicia TightVNC en el servidor y vuelve a logarte con el cliente.

Yo apliqué esta solución y oye, como la seda.

No, no me des las gracias. Dáselas a ellos.

He actualizado Ubuntu a la 11.10 (Oneiric Ocelot) y ahora se cuelga en el arranque.

Acabas de actualizar a la nueva versión y ahora, en el boot, te aparece un mensaje que dice «Waiting for network configuration». Se queda ahí un minuto, y luego sale otro mensaje que dice «Waiting up to 60 seconds more for network». Después de otro minuto, la pantalla se pone en blanco y ahí se queda para siempre, vamos, que se cuelga.

Este bug aparece solo en actualizaciones, no en instalaciones frescas. Y posiblemente dependa de qué software de terceros esté instalado. Parece bastante claro que si tienes instalado VMWare 8 tienes garantizado el bug.

El problema es que algunos directorios esenciales (/var/run y /var/run/lock) han cambiado de sitio, pero algún software no se da por enterado de la migración e interfiere con los demás. Sí, hay un workaround, y es tan simple y clásico como arreglar las cosas a mano.

Para ello, abre un terminal pulsando Ctrl-Alt-F1 y tecleando tu login. A continuación, hazte root y teclea los siguientes comandos.

[lacofi@cecile]$ sudo -i
password:
[root@cecile]# mkdir -p /run /run/lock
[root@cecile]# rm -rf /var/run /var/lock
[root@cecile]# ln -s /run /var
[root@cecile]# ln -s /run/lock /var
[root@cecile]# reboot

Como puedes ver, hemos borrado /var/run y /var/lock y los hemos sustituido por enlaces simbólicos apuntando a /run. Después rebotamos el sistema y ya está, debería arrancar con red y en modo gráfico.

Si no te deja borrar los directorios, o no puedes crear los enlaces simbólicos, tendrás que rebotar el sistema y arrancar desde grub en modo recuperación. En el modo recuperación, pedir que monte como lectura-escritura, y después que te pase a consola root. A partir de ahí, vuelves a hacer lo dicho.

Suerte. :-)

Script perl para editar listas mp3

El teléfono Nokia n900 maneja bien las listas m3u, así que hago uso intensivo de ellas para organizar mis temas favoritos de cada album.

Si necesitas usar listas m3u de ficheros de audio mp3, tienes muchas formas de crearlas. Por ejemplo a mano, puesto que son ficheros de texto puro y duro. Muchos players permiten también exportar las listas de reproducción a formato m3u, como ocurre por ejemplo con Rhythmbox, así que no deberías tener problemas.

Pero si usas la línea de comandos, quizás te interese algo más directo y rápido, que te permita editar una lista ya construida, y añadir o quitar música de forma rápida y cómoda.

Te pongo un enlace a un programilla en Perl hecho por mi, sencillito, que te permite hacerlo desde la línea de comandos.

Para que te funcione, tendrás que instalar los módulos Text::CSV_XS y MP3::Tag de Perl (en Ubuntu son las librerías libtext-csv-perl y libmp3-tag-perl, de nada).

El programita, básicamente hace esto:

  1. Busca todos los ficheros mp3 que encuentre, en el directorio actual o cualquiera de sus subdirectorios.
  2. Lee las etiquetas ID3 de todos los mp3 y cataloga los temas por álbumes.
  3. Muestra una lista en pantalla, numerada, con los temas encontrados y organizados por álbumes.
  4. Si ha encontrado también un fichero m3u en el directorio actual cuyo nombre empiece por «Favoritas» (por ejemplo «Favoritas Beyonce.m3u», entonces lo lee e ilumina con un asterisco y en verde, qué temas están ya en la lista. Si encuentra varios ficheros distintos, te los ofrece para que elijas uno.
  5. Si tu fichero m3u tiene otro nombre que no empiece por «Favoritas» puedes especificar el fichero en línea de comandos. Si pones un fichero que no existe, el script lo creará y no iluminará ninguna canción.
  6. Con la lista en pantalla, teclea el número de cualquier canción. Si está iluminada, la desilumina. Si no está iluminada, la ilumina. Cuando termines de seleccionar canciones, teclea «w» para salir (se grabarán todos los cambios en el fichero m3u), o «q» (se cancelarán todos los cambios).
  7. Si en línea de comandos pones la opción «–ayuda» te muestra una pequeña ayudita con lo que hace el programa.
  8. Si en línea de comandos pones la opción «–simulacro» el programa funciona por completo, pero no grabará los cambios aunque así se lo pidas después.

Puedes modificar el script como quieras, o adaptarlos a tus necesidades, tu mismo.

Script mp3edit

Script para editar listas m3u

Normalmente organizo mi biblioteca de mp3 en carpetas por autores, y dentro de ellas subcarpetas por álbumes. De todas formas el script no se fía de la distribución por carpetas, y lee las etiquetas ID3 para deducir los álbumes. Si hay etiquetas Versión 2, las usará. Si no, usará las etiquetas Versión 1.

El script está diseñado para MI distribución de disco duro. Eso significa que casi nunca hay más de tres o cuatro álbumes en una carpeta. Si tienes por ejemplo metidos todos tus mp3 en único directorio, el script quizás no te resulte  a ti tan cómodo porque te saldrá un listado gigantesco en pantalla y tardará un huevo. Tu mismo.

Lo disfrutes.

Estoy intentando configurar un modem Smartlink en Ubuntu y no encuentro el paquete sl-modem-source

Recientemente me he comprado un modem/fax USB para sustituir al viejo modem serie que tenía. Obviamente, el modem en sí mismo no lo necesito para nada, pero sí me interesan las funciones fax. Por desgracia, los nuevos ordenadores tienden a venir sin puerto serie, lo que es un problema si pretendes usar un modem/fax, así que una posible solución es instalar un modem USB.

Yo compré uno de la marca Dynamode, teóricamente soportado por Linux, que lo identifica con el comando «lsusb» de esta forma:

[lacofi@selene]$ lsusb
Bus 011 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 010 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 009 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 008 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 007 Device 003: ID 046d:c00b Logitech, Inc. MouseMan Wheel
Bus 007 Device 002: ID 046d:c317 Logitech, Inc.
Bus 007 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 006 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 005 Device 002: ID 0483:7554 SGS Thomson Microelectronics 56k SoftModem 
Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 003 Device 005: ID 0718:1000 Imation Corp.
Bus 003 Device 004: ID 059f:1018 LaCie, Ltd
Bus 003 Device 002: ID 04b4:6560 Cypress Semiconductor Corp. CY7C65640 USB-2.0 "TetraHub"
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 002: ID 0424:2250 Standard Microsystems Corp.
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 007: ID 04a9:220e Canon, Inc. CanoScan N1240U/LiDE 30
Bus 001 Device 006: ID 0409:005a NEC Corp. HighSpeed Hub
Bus 001 Device 005: ID 0409:005a NEC Corp. HighSpeed Hub
Bus 001 Device 004: ID 059f:1018 LaCie, Ltd
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

Observa la línea marcada en cian y que habla de un Softmodem. Si sigues tirando del hilo a través de Google, verás que este modem lleva un chipset Smartlink, y que la instalación seguiría estos pasos:

[lacofi@selene]$ sudo su
password:
[root@selene]# apt-get install module-assistant
[root@selene]# module-assistant auto-install sl-modem
[root@selene]# apt-get install sl-modem-daemon

Y después reiniciamos el sistema.

Vale, todo parece muy sencillo, pero cuando lo hice en mi máquina, me encontré con que no existía el paquete sl-modem-source en los repositorios, y module-assistant abortaba la operación porque no tenía código fuente para poder compilar.

Y a eso iba. Resulta que sl-modem-source solo está disponible para los sistemas de 32 bits. Si utilizas la versión de Linux de 64 bits (lo sabrás porque en la salida del comando «uname -a» sale un misterioso «x86_64» por algún lado), no dispondrás de ese paquete y por tanto no podrás hacer funcionar tu modem Smartlink.

Se siente.

Una posible solución es hacer funcionar una máquina virtual VMware. Supongo que VirtualBox también sirve, todo depende del buen o mal soporte que tenga de USB. El caso es que a mí el modem funciona de perlas en VMware bajo un sistema invitado Windows XP Pro. Y supongo que no debería haber problemas tampoco para que funcionase instalando un sistema invitado Ubuntu Linux 32 bits. ;-)

Mi prompt

El inductor del sistema o prompt es una de las personalizaciones más habituales, especialmente para los que usamos mucho la línea de comandos.

En el prompt se puede meter una gran cantidad de información. De hecho, podemos hacerlo todo lo sencillo o complicado que queramos adaptándolo a nuestra forma de trabajar.

No voy a contarte cómo se personaliza un prompt. Para eso tienes Google donde encontrarás mil sitios que te lo explican con todo el lujo de detalles. Pero sí te voy a poner mi prompt, y el código que lo hace todo posible, por si te aporta alguna idea o te gusta lo bastante para usarlo o modificarlo y adaptarlo para tí.

Prompt
El prompt de mi sistema funcionando normalmente.

Muchas veces pongo trabajos en segundo plano o uso screen directamente. Así que como es lógico mi prompt da información sobre ambas cosas. Por ejemplo, si entramos en screen veríamos el prompt así:

Prompt screen
El prompt funcionando en una sesión screen.

De izquierda a derecha, la información del prompt es la siguiente:

  • Si estamos en screen, aparecerá la leyenda SCR para que el usuario lo sepa.
  • El número de sesiones screen disponibles en esa máquina. Si son cero, no aparece nada.
  • El número de jobs en segundo plano activos.
  • El login y la máquina.
  • El directorio actual.
  • El código de error del último comando. Si hubo error, sale en rojo, si no en verde.
  • Los colores no son al azar. Cada usuario del sistema tiene un color característico distinto a los demás: yo soy cian, el usuario maria es amarillo, root es rojo. Además, cada ordenador tiene tonalidades distintas: la máquina sophie es brillante, la máquina selene es atenuada.

Con este prompt, es virtualmente imposible que se te pasen desapercibidas cosas como el usuario que eres, la máquina en la que estás, si estás en sesión screen o tienes algún screen colgando, si eres root, si hay trabajos en segundo plano… bonito, ¿no?.

El código que lo hace es éste:

function kalimero {
	salida="$?"
	ini="\[\033["
	fin="\]"
	reset="0m"
	negro="0;30m"
	rojo="0;31m"
	verde="0;32m"
	marron="0;33m"
	azul="0;34m"
	purpura="0;35m"
	cyan="0;36m"
	grisclaro="0;37m"
	grisoscuro="1;30m"
	rojoclaro="1;31m"
	verdeclaro="1;32m"
	amarillo="1;33m"
	azulclaro="1;34m"
	purpuraclaro="1;35m"
	cyanclaro="1;36m"
	blanco="1;37m"

	zombies=`screen -ls | grep "tached" | wc -l`
	if [ "$zombies" -eq 0 ]; then
		zombies=""
	fi

	case $UID in # Patron de colores para Sophie
		1000)
			# color=$azulclaro
			color=$cyanclaro
			;;
		1001)
			# color=$marron
			color=$amarillo
			;;
		0)
			# color=$rojo
			color=$rojoclaro
			;;
		*)
			# $color=$grisclaro
			color=$blanco
			;;
	esac

	inigris="\[\033[1;30m\]"
	fingris="\[\033[$color\]"

	if [ "$TERM" = screen ]; then
                screen="SCR$inigris,$fingris"
        else
                screen=""
        fi

	on="$ini$color$fin"
	scr="$ini$verdeclaro${fin}$screen$ini$color$fin"
	off="$ini$reset$fin"

	if [ "$salida" -eq 0 ]; then
		codigo="$ini$verdeclaro$fin$salida$ini$color$fin"
	else
		codigo="$ini$rojoclaro$fin$salida$ini$color$fin"
	fi

	PS1="$on$inigris[$fingris$scr$zombies$inigris:$fingris\j$inigris]$fingris $inigris[$fingris\u@\h $inigris($fingris\W$inigris)$fingris $inigris<$fingris$codigo$inigris>]-> $fingris$off"
}

Este código hay que meterlo en un script bash (yo lo llamo /etc/funciones). Después ese script tienen que llamarlo todos los usuarios desde el fichero .bashrc de su home mediante «source /etc/funciones». El prompt se activará entonces con «PROMPT_COMMAND=kalimero» que puedes meterlo también en .bashrc.

Conectar Ubuntu 9.10 con Internet Everywhere de Orange usando wvdial

Con Ubuntu 9.10, Internet Everywhere de Orange con un modem Huawei E160E funciona «out of the box», es decir, enchufar y listo, al menos en mi sistema y con un kernel 2.6.31-20, que es el que actualmente se instala automáticamente con la actualización rutinaria de paquetes que lanza el sistema.

Pero si por cualquier motivo quieres usar wvdial, también puedes hacerlo.

Naturalmente, lo primero será instalar wvdial con «sudo apt-get install wvdial». Y después tienes que crear un fichero /etc/wvdial.conf tal que así:

[Dialer Orange]
Init1=ATZ
Init2=ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0
Phone=*99#
Username=ORANGE
Password=ORANGE
Modem=/dev/ttyUSB0

[Dialer pin]
Modem = /dev/ttyUSB0
Baud = 115200
Init1 = AT+CPIN=1234

Obviamente, tendrás que poner el verdader pin en la entrada «CPIN» de [Dialer pin].

Ahora, para conectarte, solo tendrás que hacer:

[lacofi@sophie]$ sudo su
password:
[root@sophie]# wvdial pin
[root@sophie]# wvdial Orange
--> Carrier detected.  Waiting for prompt.
--> Don´t know what to do!  Starting pppd and hoping for the best.
--> Starting pppd at Thu Sep 27 13:04:29 2007
--> Warning: Couldn´t modify /etc/ppp/pap-secrets: Permission denied
--> --> PAP (Password Authentication Protocol) may be flaky.
--> Warning: Couldn´t modify /etc/ppp/chap-secrets: Permission denied
--> --> CHAP (Challenge Handshake) may be flaky.
--> Pid of pppd: 15838
--> Using interface ppp0
--> local  IP address 83.188.171.59
--> remote IP address 10.64.64.64
--> primary   DNS address 130.244.127.161
--> secondary DNS address 130.244.127.169

Observa que hago la conexión como root. Si quieres hacerla como usario normal, lo único que tienes que hacer es meter a ese usuario en el grupo «dip», porque si no, no tendrás permisos suficientes para ejecutar pppd:

Para meter al usuario lacofi en el grupo dip, tienes que editar el fichero /etc/group, buscar la entrada «dip» y poner «lacofi» (o varios usuarios separados por comas) al final, así:

dip:x:30:lacofi,maria

Pero recuerda que para que el nuevo grupo entre en vigor tienes que deslogar y volver a logarte.