viernes, 31 de mayo de 2013

Problema con el comando modprobe en Debian Wheezy: solucionado

Hoy estaba teniendo problemas para instalar un programa de CAD porque me faltaban dependencias. Una cosa llevó a la otra, hasta que intenté listar los módulos cargados en el sistema con el comando modprobe y la opción -l. Para mi sorpresa este fue el resultado:

paco@paco-pc:~modprobe -l
modprobe: invalid option -- 'l'
paco@paco-pc:~$

¿Qué demonios pasa? Dice que la opción -l no es válida, cuando nunca tuve problema para utilizarla en Ubuntu o en Debian Squeeze. Pues bien, en Debian Wheezy ya no sirve, así que hay que listar los módulos de otra manera. Buscando con la red encontré este foro donde ofrecen una solución, pero que yo he llevado algo más allá. Se trata del comando awk, que yo desconocía. La línea que hay que escribir en el terminal de comandos para listar los módulos es esta:


paco@paco-pc:~$ awk -F: '{print $1}' /lib/modules/`uname -r`/modules.dep

El listado se producirá ipso facto.

Pero tener que teclear esto cada vez que queramos listar los módulos cargados es un pestiño, así que podemos crearnos una forma de listarlos ad hoc usando el comando alias. Este comando lo que hace es crear atajos a partir de combinaciones o sucesiones de otros comandos. Estos atajos pueden ser temporales o permanentes, que es lo que ahora nos interesa. Para ello hay que editar el archivo .bashrc, presente en nuestra carpeta /home/usuario/ (que en mi caso es /home/paco/) con un editor como nano, emacs o gedit.


Una vez abierto escribimos las siguientes dos líneas en cualquier punto siempre que no interrumpamos ninguna secuencia de códigos:


#Alias modprobe -l
alias modprobel="awk -F: '{print $1}' /lib/modules/`uname -r`/modules.dep"

Con esto, estaremos asignando un alias para la línea de comando del comando awk que nos permite listar los módulos cargados, y ese alias lo he llamado modprobel pero puede tener el nombre que cada uno quiera. La línea que precede a la definición del alias no es más que un comentario descriptivo de lo que va a continuación, por lo que lleva delante el símbolo almohadilla. También puede uno escribir ahí lo que quiera pero es conveniente que describa qué es lo que hace o a qué comando sustituye.


Guardamos los cambios en el archivo .bashrc y lo recargamos utilizando en comando source:


paco@paco-pc:~$ source .bashrc
paco@paco-pc:~$

Y ya podemos utilizar el alias modprobel para listar los módulos cargados de nuestro sistema como si fuera un comando más.


Ya que hemos hablado de módulos no puedo dejar de lado a un grupo de rock progresivo español de los años 70 llamado así, Los Módulos, y que tuvieron su canción más popular en este "Todo tiene su fin".



lunes, 27 de mayo de 2013

Apagando y/o reiniciando el sistema

Resto de entradas con intenciones didácticas en la etiqueta Aprendizaje.

Cuando estamos ya funcionando con alguna distribución GNU/Linux, una vez nos recuperamos del impacto que supone abandonar Windows, antes o después llega el momento de cerrar el sistema y apagar el equipo. En el entorno gráfico es algo sencillo de encontrar y hacer, pero aquí nos estamos moviendo con el terminal de comandos (acuérdense: la Shell, que en nuestro caso es bash). Existen varios comandos para cumplir la función de cerrar la sesión, apagar el sistema o apagar el equipo por completo, pero ni son iguales ni actúan del mismo modo.

Aclaremos primero que será necesario ejecutar los siguientes comandos como administrador (o sea, como superusuario o root). Para ello recordemos que tendremos que anteponer el comando sudo cada vez o logarse previamente con el comando su y, seguidamente, teclear la contraseña de root. También recomiendo ampliar la información con man y --help.

El comando más recomendado es shutdown, pero luego están halt, poweroff, logout y reboot. Vamos a verlos todos ellos con algunas de sus opciones.

shutdown
Lo primero es recordar que GNU/Linux es un sistema multiusuario. Hay decisiones que antes de hacerse efectivas es necesario que sean transmitidas a todo aquel que se encuentre conectado al sistema, sobre todo si estamos administrando un servidor. Con shutdown lo que hacemos, por este orden, es notificar el apagado a los usuario conectados mediante wall (mensajería interna) y bloquear el proceso de registro; seguidamente invoca el proceso init (el padre de todos los procesos) para detener el sistema o reinicializarlo según se haya enunciado el comando; después se cierran todos los procesos de la máquina, se desactiva el área swap (la memoria virtual) y, según se la opción escogida, apaga el equipo o lo reinicia. Es la mejor opción para evitar pérdidas de datos.

Veamos algunas opciones interesantes, las cuales son combinables entre sí:

shutdown -t
Nos indica el tiempo en segundos que tardará en apagar.

shutdown -r
Para reiniciar el sistema tras todo lo que implica un shutdown y que acabamos de ver.

shutdown -r now
Para reiniciar el equipo inmediatamente.

shutdown -h
Apaga o detiene el equipo tras el shutdown.

shutdown -H
Detiene el equipo tras el shutdown (implica también la opción -h).

shutdown -P
Apaga el equipo tras el shutdown (implica también la opción -h).

shutdown -k
Envía advertencias de apagado a los usuarios pero sin apagar.

shutdown +25
Apaga el equipo en 25 minutos. Se puede cancelar pulsando Ctrl + c.

shutdown 18:00 El sistema se apagará a las 6:00 PM.
Apaga el equipo a las 18:00 con ese mensaje de aviso a los usuarios conectados. Se puede cancelar pulsando Ctrl + c.

shutdown -c
Para cancelar un apagado programado desde otro terminal.

shutdown -0 / shutdown now
Estas dos formas del comando sirven para lo mismo, apagar el equipo inmediatamente. Sin embargo a mí no me funcionan del todo, ya que siempre me dejan el ventilador de la fuente de alimentación en funcionamiento. Para lograr un apagado completo completamos el comando añadiéndole la opción -h (shutdown -h 0 / shutdown -h now).

halt
Este comando también cierra el sistema y apaga el equipo pero sin seguir todos los pasos de shutdown.

halt -f
Fuerza la detención o el reinicio del sistema sin hacer shutdown.

halt -r
Para reiniciar de forma ordenada.

halt -h
Detiene el sistema

halt -p
Detiene el sistema y apaga el equipo.

poweroff
Sirve para apagar inmediatamente el equipo, sin hacer un shutdown. Equivaldría a pulsar el botón de apagado de la CPU (lo cual siempre es la última opción por la eventual pérdida de datos que puede suponer).

reboot
Comando para reiniciar el equipo. Dispone de las mismas opciones que halt y shutdown.

logout
Sirve para cerrar la sesión y entrar como otro usuario.

uptime
Comando que muestra el tiempo transcurrido desde el arranque del sistema.

Manual en castellano de búsqueda de comandos para Debian y derivados.

martes, 21 de mayo de 2013

Chromium no se abre en Debian Wheezy: solucionado

Que maravilla es Internet. Hoy al encender el ordenador y abrir el navegador Chromium veo que este no termina aparecer. Queda como proceso abierto pero sin que asome por ningún lado la ventana de navegación. Ha sido cuestión de escasos minutos encontrar la solución, por eso digo que Internet es una maravilla.

Y la encontré aquí, pero la transcribo para que quede constancia en este blog.

Basta con mover el directorio ~/.config/chromium al tiempo que le cambiamos de nombre, el cual será ~/.config/chromiumbak. Con el comando mv moveremos este directorio y lo renombraremos de una sola vez.

paco@paco-pc:~sudo mv ~/.config/chromium/ ~/.config/chromiumbak/

Recordemos que el carácter ~ equivale a /home/nombre_de_usuario (en mi caso es /home/paco), y que un archivo o directorio precedido de un punto es un archivo o directorio oculto, por lo que para listarlo hay que utilizar la opción -a del comando ls (es decir, ls -a, aunque esto es algo que espero tocar más adelante).

Añadiré que me pasaba lo mismo con el otro navegador de Google, Chrome, así que el proceso para regularizarlo es el mismo; solo cambia el nombre del directorio donde actuaremos, que en este caso es ~/.config/google-chrome. Dentro comando:

paco@paco-pc:~sudo mv ~/.config/google-chrome/ ~/.config/google-chromebak/

Justo en la realización de este post estoy usando el Chrome que antes era incapaz de hacer funcionar. Por supuesto, los marcadores y aplicaciones del Web Store que tuviéramos añadidas no tardan en volver a aparecer.

No se me ocurre nada con que justificar un vídeo, así que no lo haré. Pero hoy he descubierto el nombre de la banda autora de una canción que durante años me pregunté de quién era. Son los noventeros Better Than Ezra y el tema es "Good". Qué demonios, es bueno que exista Internet.


lunes, 20 de mayo de 2013

Imprimir desde el terminal

Resto de entradas con intenciones didácticas en la etiqueta Aprendizaje.

Los entornos gráficos nos han acostumbrado a que todo sea tremendamente fácil, pero los inicios de cualquier sistema operativo nunca han sido un camino de rosas para quienes han intentado aprender sus entresijos. Habrá quien diga que volver a manejarse (casi) exclusivamente por comandos de teclado es un atraso y un retorno a la prehistoria informática, y desde la perspectiva del usuario doméstico quizá no le falte razón. Pero si queremos profundizar en los fundamentos de un SO no nos queda otra que machacarnos el modo texto y sacarle todo el jugo que sus programadores se han dignado darle. Y esto sirve también para cuando queramos imprimir.

Porque podemos imprimir el contenido de un fichero desde el terminal de GNU/Linux, para lo que disponemos del comando lp, cuyas opciones paso a describir. Huelga decir que para que lo que a continuación viene es preciso disponer de una impresora correctamente conectada y reconocida por el sistema. Vamos a suponer que disponemos de una Epson Stylus SX130 y que queremos imprimir el archivo listado.txt.

paco@paco-pc:~$ lp listado.txt
El comando lp es un comando básico para imprimir el archivo de texto que nosotros designemos, en este caso listado.txt. No hace falta nada más si solo tenemos una impresora configurada.

paco@paco-pc:~$ lp Epson-Stylus-SX130 listado.txt
Aquí hemos elegido una impresora concreta de las varias que eventualmente puedan estar disponibles.

paco@paco-pc:~$ lpstat -p -d
El comando lpstat es para conocer los nombres de las impresoras disponibles y así poder utilizar el comando anterior.

paco@paco-pc:~$ lp -n 2 listado.txt
Con la opción -n podemos imprimir dos o más copias de listado.txt. Sustitúyase el 2 por el nº de copias que cada usuario requiera.

paco@paco-pc:~$ lp -P 1,3,6-10 listado.txt
La opción -P nos da la oportunidad de imprimir páginas salteadas, en este caso las páginas 1, 3, 6, 7, 8, 9 y 10 de listado.txt.

paco@paco-pc:~$ lp -o media=letter listado.txt
La opción -o nos da la posibilidad de elegir el formato de impresión, en este caso letter. Los formatos disponibles son:
  • Letter – US Letter (8.5×11 pulgadas, o 216x279mm)
  • Legal – US Legal (8.5×14 pulgadas, o 216x356mm)
  • A4 – ISO A4 (8.27×11.69 pulgadas, o 210x297mm)
  • COM10 – US #10 Envelope (9.5×4.125 pulgadas, o 241x105mm)
  • DL – ISO DL Envelope (8.66×4.33 pulgadas, o 220x110mm)
  • Transparency – Se usa para imprimir sobre ojas de acetato
  • Upper – Para usar la bandeja superior de papel de la impresora
  • Lower – Para usar la bandeja inferior de papel de la impresora
  • MultiPurpose – Para usar la bandeja multiproposito de la impresora
  • LargeCapacity – Para usar la bandeja de gran capacidad de la impresora

paco@paco-pc:~$ lp -o media=Custom.ANCHOxLARGOmm listado.txt
Con la misma opción podemos escoger un formato personalizado.

paco@paco-pc:~$ lp -o lansdcape listado.txt
Y también imprimir en horizontal o landscape (impresión girada 90º). Las orientaciones especiales se realizan de la siguiente forma:
  • lp -o orientation-requested=3 (0 grados)
  • lp -o orientation-requested=4 (90 grados)
  • lp -o orientation-requested=5 (270 grados)
  • lp -o orientation-requested=6 (180 grados)

paco@paco-pc:~$ lpq
Con lpq podemos ver la cola de impresión mientras existan trabajos pendientes.

paco@paco-pc:~$ lprm numero_de_trabajo
Con lprm podemos cancelar un trabajo de impresión a través de su número de trabajo, el cual obtenemos con lpq.

domingo, 19 de mayo de 2013

Atajos de teclado para el terminal

Resto de entradas con intenciones didácticas en la etiqueta Aprendizaje.

Existen combinaciones de teclas para desplazarse con rapidez por la terminal de comandos que son de gran utilidad. Entiendo que toda ayuda es de agradecer si con ello aprendemos a desenvolvernos con más eficacia en un entorno exclusivo de texto, así que tomemos nota de los siguientes atajos de teclado.

Ctrl + a
Envía el cursor al principio de la línea de comandos.

Ctrl + e
Envía el cursor al final de la línea de comandos.

Ctrl + c
Para matar un proceso.

Ctrl + u
Elimina la línea donde se encuentre el cursor.

Ctrl + w
Elimina la palabra delante del cursor.

Ctrl + l
Limpia la pantalla del terminal.

Ctrl + Alt + F1 (o F2)
Para cambiar de modo gráfico a modo texto (terminal a toda pantalla).

Alt + f
Mueve el cursor una palabra hacia adelante.

Alt + b
Mueve el cursor una palabra hacia atrás.

Shift + Ctrl + c
Para copiar al portapapeles

Shift + Ctrl + v
Para pegar desde el portapapeles

sábado, 18 de mayo de 2013

Guake o la terminal siempre a mano

Espero que estemos empezando a sentirnos a gusto con el terminal de comandos. Como cualquier ayuda es poca esta breve entrada tiene como protagonista a Guake. ¿Y ésto qué es? Pues una utilidad que nos permitirá disponer de nuestro terminal en todo momento, superpuesta a la ventana del programa que estemos manejando. Se le invoca u oculta con solo pulsar una tecla y para instalarlo solo hay que teclear lo siguiente:

paco@paco-pc:~$ sudo aptitude install guake

Al ejecutarlo por primera vez lo tendremos disponible con solo pulsar F12, y lo ocultaremos con la misma tecla, pudiendo repetir la operación cuantas veces queramos mientras dure la sesión. Permite, además, tener varias terminales abiertas a la vez si pinchamos en el botón que tiene abajo a la derecha. Su aspecto, tamaño, grado de transparencia, color y demás se pueden configurar. En Debian Wheezy nos aparecerá en el menú Aplicaciones > Herramientas del sistema.

Vía 120Linux.com.


viernes, 17 de mayo de 2013

Como obtener ayuda del sistema

Resto de entradas con intenciones didácticas en la etiqueta Aprendizaje.

Estamos empezando ya a movernos con cierta asiduidad por el terminal de comandos, así que ha llegado la hora de conocer cómo el propio sistema nos puede prestar ayuda. Hay una serie de órdenes que nos resolverán un buen numero de papeletas y conviene conocerlas. En más de uno habrá que darle al inglés, algo de lo que ya les advertí en otra entrada.

w
Muestra datos de las diferentes sesiones activas.



paco@paco-pc:~$ w
 00:03:27 up 16 min,  2 users,  load average: 0,45, 0,41, 0,33
USER     TTY      FROM   LOGIN@   IDLE   JCPU   PCPU WHAT
paco     tty7         :0           23:47      16:26   36.04s   0.07s  gdm-session-wor
paco     pts/0      :0.0         00:03      0.00s   0.05s     0.00s  w
paco@paco-pc:~$

whoami
Con esto sabremos el nombre del usuario que ha abierto la sesión.



paco@paco-pc:~$ whoami
paco
paco@paco-pc:~$

who
Muestra los usuarios que están conectados en ese momento.



paco@paco-pc:~$ who
paco     tty7          2013-05-16 19:32 (:0)
paco     pts/0        2013-05-16 20:08 (:0)
paco@paco-pc:~$

tty

Muestra el nombre del terminal en uso. 


paco@paco-pc:~$ tty
/dev/pts/0
paco@paco-pc:~$

En mi caso estoy en el terminal 0.


man
Es el manual de instrucciones en línea del sistema. Con él podemos informarnos de la forma de uso de un comando concreto.



paco@paco-pc:~$ man
¿Qué página de manual desea?
paco@paco-pc:~$

Lo habitual es teclear man seguido del comando del que queremos información, separados por un espacio.


whatis
Sirve para buscar información rápida sobre los comandos usando palabras clave.



paco@paco-pc:~$ whatis man
man (1)              - una interfaz de los manuales de referencia electrónicos
man (7)              - macros para formatear páginas del manual
paco@paco-pc:~$

apropos
Busca información rápida en las páginas del manual en línea usando palabras clave.



paco@paco-pc:~$ apropos copy file
cp (1)                             - copy files and directories
cpio (1)                          - copy files to and from archives
git-checkout-index (1)   - Copy files from the index to the working tree
install (1)                       - copy files and set attributes
ntfscp (8)                      - copy file to an NTFS volume.
paxcpio (1)                    - copy file archives in and out
paco@paco-pc:~$

Cuanto más genérica sea la búsqueda más extenso será el resultado que obtengamos y quizá no es eso lo que queremos, con lo que conviene afinar.


info
Parecido a man pero ofreciendo información de ayuda más detallada ( y generalmente en inglés).


whereis
Para localizar el archivo binario (ejecutable en lenguaje Windows), el código fuente o la página del manual de un comando.



paco@paco-pc:~$ whereis cp
cp: /bin/cp /usr/share/man/man1/cp.1.gz
paco@paco-pc:~$

Hemos buscado el binario del comando cp (copy), obteniendo su localización en el sistema de archivos y directorios (/bin/cp) y la de su página en el manual en línea (/usr/share/man/man1/cp.1.gz).


<comando> -- help

La forma más rápida de obtener ayuda sobre un comando y la más utilizada, al menos al principio. Por ejemplo, tecleando cp --help obtendríamos la ayuda relativa al comando cp.

Aprovecho para subrayar que cada uno de estos comandos dispone de numerosas opciones que multiplican sus funcionalidades, pero que describirlas extenderían insufriblemente el post. Recomiendo utilizar <comando> --help para ir conociéndolas.



clear
Limpia la pantalla de la terminal llevando el prompt de comandos al inicio de la ventana.


Con tanta ayuda no es de extrañar que busque un vídeo con esa palabra en su título. Aquí tenemos a los blueseros Ten Years After en vivo con "Help me".




jueves, 16 de mayo de 2013

Tuitentrada: Sustituyendo GNOME 3 por MATE en Debian Wheezy

Instalando impresora Epson Stylus SX130 en Debian Wheezy

Una de las tareas más cansinas para un usuario de GNU/Linux es conseguir que la impresora funcione en la distribución en uso. Y si es una multifunción (impresora + escáner) entonces el problema se duplica. Les voy a explicar como he conseguido que mi Epson Stylus SX130 funcione a pleno rendimiento en mi Debian Wheezy, pero también valdría para Ubuntu u otra distro basada en Debian.

Lo primero es bajarse estos paquetes que contienen los drivers (para arquitectura de 32 bits):

epson-inkjet-printer-201101w_1.0.0-1lsb3.2_i386.deb
iscan_2.29.1-5~usb0.1.ltdl7_i386.deb
iscan-data_1.22.0-1_all.deb

Todos están extraídos de esta página de Epson, pero si los quieren de otro modelo solo tienen que entrar a por ellos y descargarlos (más información aquí).

Después hay que instalar cada uno de los paquetes de esta manera:

paco@paco-pc:~sudo dpkg -i epson-inkjet-printer-201101w_1.0.0-1lsb3.2_i386.deb


paco@paco-pc:~sudo dpkg -i iscan_2.29.1-5~usb0.1.ltdl7_i386.deb


paco@paco-pc:~sudo dpkg -i iscan-data_1.22.0-1_all.deb

También podemos instalarlos desde el entorno gráfico, abriendo el navegador de archivos Nautilus, pinchando en cada uno de ellos con el botón derecho del ratón y haciendo uso del instalador de paquetes deb Gdebi. Pero aconsejo hacerlo a través del terminal.

Si se producen errores por dependencias incumplidas, tecleamos:

paco@paco-pc:~sudo apt-get install -f

Luego tenemos que agregar al usuario (en mi caso, paco) a los grupos scanner y lp.

paco@paco-pc:~sudo adduser paco lp

paco@paco-pc:~sudo adduser paco scanner

Una vez hecho todo esto ya podemos seleccionar la impresora desde el menú Configuración del sistema. Y a correr. No sin antes enlazar un artículo en el que digo cuatro cosas acerca de las impresoras Epson.

Estamos oyendo hablar últimamente de las impresoras 3D. Es hora de ver como trabaja una de ellas.


miércoles, 15 de mayo de 2013

Problema con driver Nvidia en Debian Wheezy solucionado

No saben ustedes la satisfacción que produce hallar solución a problemas que hace unos meses me parecían insuperables y que solo conseguía solventar mediante una reinstalación de todo el sistema. Es lo que tiene haber aprendido, no solo a introducir comandos y manejar opciones, sino a entender explicaciones que tiempo atrás me parecían abstrusas, alambicadas y dirigidas a entidades intelectuales superiores.

Algo como esto he sentido al perder el entorno gráfico de mi Debian Wheezy tras instalar el driver de la tarjeta gráfica Nvidia, buscando disponer de un segundo monitor a través de mi televisor.

He seguido el post de este foro y he instalado el driver requerido, pese a que en los comentarios ya advertían de problemas de compatibilidad con otro driver que trae Debian. Como si de una profecía se tratase, al reiniciar perdí el entorno gráfico, quedando solo una pantalla en negro con el cursor tililante. Hace medio año hubiera sentido ganas de arrojar el ordenador por la ventana y a mi persona a continuación, pero ahora soy capaz de mantener la calma y buscar una solución por la red. Y lo que es mejor, entender lo que se me cuenta. Tal ha sido el caso, gracias al foro esDebian.

Por resumir, si les pasa lo mismo solo tienen que reiniciar el sistema en el modo de compatibilidad (equivalente al "A prueba de fallos" de Windows), así dispondrán de la línea de comandos para teclear órdenes (¿ven ahora para qué sirve dominar el terminal?). Una vez allí tienen que instalar el driver Nvidia, pero vayamos paso a paso.

Primero tenemos que incluir esta línea en el archivo /etc/apt/sources.list. De esta forma Debian buscará en sus repositorios el software que necesitamos:

deb http://ftp.debian.org/debian/ squeeze main contrib non-free

Después actualizamos la lista de paquetes:

sudo aptitude update

Actualizamos también todo el sistema para solventar problemas con dependencias no satisfechas:

sudo aptitude full-upgrade

A continuación vamos a necesitar conocer el kernel que tenemos instalado en el sistema con este comando:

uname -r

A mí me sale el 2.6.32-5-686, de modo que es el que teclearé al instalar el driver, pero que cada uno escriba el resultado que le de el comando uname -r:

sudo aptitude install nvidia-kernel-2.6.32-5-686 nvidia-glx

Ahora modificamos el archivo de configuración /etc/X11/xorg.conf instalando la herramienta nvidia-xconfig:

sudo aptitude install nvidia-xconfig

Si el prompt les devuelve que ya está instalado da lo mismo. A continuación lo ejecutan, así:

sudo nvidia-xconfig

Esto creará un nuevo archivo /etc/X11/xorg.conf con los nuevos parámetros de configuración, guardando el anterior, el que causaba conflicto, con la extensión backup. Teclean exit o reboot para salir del modo texto o reiniciar respectivamente y, tachán, problema resuelto, el entorno gráfico vuelve de donde nunca debió irse. Información más completa sobre este particular en esDebian.

Si quieren además configurar la tarjeta Nvidia desde el entorno gráfico pueden instalarla de la siguiente manera:

sudo aptitude install nvidia-settings

Con tanto driver a uno no le queda más remedio que poner algo relacionado con la conducción, como este vídeo de Rush llamado "Driven".