Entries for Debian

Synaptic: No se pudieron analizar o abrir las listas de paquetes o el archivo de estado

written by uve

1 April 2012

Al abrir Synaptic me he encontrado con el siguiete error:

E: Encountered a section with no Package: header
E: Problem with MergeList /var/lib/apt/lists/archive.ubuntu.com_ubuntu_dists_precise-security_main_binary-i386_Packages
E: No se pudieron analizar o abrir las listas de paquetes o el archivo de estado.
E: _cache->open() failed, please report.

La solución:

$ sudo rm /var/lib/apt/lists/archive.ubuntu.com_ubuntu_dists_precise-security_main_binary-i386_Packages

Full entry >>

Bindings Python para bibliotecas C: Argumentos (Parte 4)

written by uve

28 March 2012

Continuando con el ejemplo de ayer, hoy voy a explicar cómo podemos parsear los parámetros de entrada. El estado actual es que hemos definido unos prototipos y los hemos añadido al módulo. Ahora vamos a darle contenido a las funciones add y hello.

Ejemplo en GitHub: mema_methods.

Full entry >>

Bindings Python para bibliotecas C: Métodos (Parte 3)

written by uve

27 March 2012

Ayer explicaba cómo se monta una estructura básica para crear un módulo. Pero para que el módulo sirva para algo, tendremos que añadir funciones.

Ahora vamos a ver cómo podemos crear nuevas funciones y cómo integrarlas al módulo mema. El objetivo para hoy será crear dos funciones: hello y add.

El resultado debería ser algo similar a lo siguiente:

>>> import mema
>>> mema.hello()
Hello mema!
>>> mema.hello('Vicente')
Hello Vicente!
>>>
>>> from mema import add
>>> add(1, 2)
3
>>> add(400, 4)
404
>>>

Ejemplo en GitHub: mema_methods.

Full entry >>

Preparar un Alix para exposiciones: Gráficos y gestión de energía (Parte 3)

written by uve

26 March 2012

Una vez que tenemos listo todo el tema de gráficos . y automatizado el proceso de arranque, toca empezar con detalles estéticos. Para ello, debemos evitar situaciones cómo un salvapantallas o que el monitor se apague.

Recordad que estamos en un entorno en el que no tenemos teclado ni ratón, por lo que en seguida, el sistema operativo pensará que no hay actividad en el equipo.

Full entry >>

Bindings Python para bibliotecas C: Módulos y compilación (Parte 2)

written by uve

26 March 2012

La semana pasada empecé ha hablar sobre los Bindings en Python. Hoy vamos a ver cómo es una estructura muy básica, cómo compilar y probar que todo funciona.

Un problema que me estoy encontrando, es que el API C de Python ha ido cambiando con las versiones. Entonces, muchos ejemplos que he encontrado no compilan y hay código muy diferente por ahí.

Inicialmente voy a centrarme en Python 2.7 (última versión de la rama 2.x) y si encuentro tiempo, haré lo mismo para Python 3.

Ejemplo en GitHub: mema_bare.

Full entry >>

Bindings Python para bibliotecas C: ¿Qué son? (Parte 1)

written by uve

23 March 2012

Hoy voy a hablar acerca de bindings para Python. Un binding es un módulo Python, escrito en lenguaje C, que permite realizar llamadas a funciones en C desde un script hecho en Python. Se puede ver como un "puente" desde C a Python.

Pueden existir distintos motivos para desear hacer un binding. En principio, puede parecer un poco contraproducente, ya que se pierde portablidad

Entonces, ¿por qué crear un binding? Bien es sabido por todos que C es más eficiente que Python, por tanto, si se trata de una parte crítica de una aplicación, perfectametne se puede hacer el procesamiento en C y dejar Python para la lógica.

Otra razón es aprovechar código existente en C. Como comenté, estoy trabajando en libemqtt, la cuál está escrita en C. Podría hacer una nueva implementación completa en Python, pero teniendo el código disponible, lo lógico es hacer un binding.

Los próximos días intentaré escribir una pequeña guía sobre cómo hacer un binding para esta bibliotecta.

Actualización (27/03/2012): He creado un repositorio en GitHub con los ejemplos que estoy implementando:

https://github.com/menudoproblema/menudoproblema-examples/tree/master/python/bindings

Full entry >>

Preparar un Alix para exposiciones: Automatizando (Parte 2)

written by uve

29 February 2012

Vamos a seguir preparando nuestra Alix. En la última entrega explicamos cómo instalar un servidor gráfico y un escritorio.

Ahora, lo siguiente es ver cómo automatizar ciertas tareas. Recordad que el objetivo es tener este dispositivo de cara al público, por lo que es muy importante que todo esté automatizado. La mayor restricción es que no habrá teclado ni ratón disponible, sólo una pantalla.

Full entry >>

Autoarranque de aplicaciones en LXDE

written by uve

29 February 2012

Hace unos días escribía sobre cómo instalar LXDE sobre Debian e iniciar sesión de forma automática. Ahora voy a tratar de explicar cómo podemos automatizar el arranque de aplicaciones a la hora de cargar el escritorio.

Full entry >>

Montando particiones de una imagen de disco duro

written by uve

26 February 2012

Hace un rato escribía cómo realizar copias de seguridad en una CompactFlash en un fichero de imagen. En alguna ocasión puede ser interesante montar esta imagen para extraer o copiar información. Al no tratarse de una imagen de una partición (es decir, no contiene directamente un sistema de ficheros), es necesario hacer alguna filigrana para poder montar la partición.

Full entry >>

Copias de seguridad de CompactFlash

written by uve

26 February 2012

Estos días he estado trabajando bastante con Alix y conté cómo hacer una instalación de Debian en una CompactFlash. Evidentemente, una vez que la imagen esté lista, el paso lógico es hacer una copia por si es necesario restaurarla en otra tarjeta de memoria.

Para ello, he utilizado dd. Esta herramienta viene en todas las distribuciones de Linux y nos permite hacer lecturas raw sobre dispositivos de bloques. Para ello, sólo hay que decirle de dónde tiene que leer (if - input file) y dónde tiene que escribir (of - output file).

Si no se especifica el número de bloques que se quieren copiar (count), por defecto se copia el fichero completo (tened en cuenta que el Linux, los dispositivos se tratan como ficheros). Además, se puede indicar el tamaño del bloque (bs - block size), para optimizar la velocidad de copia.

Volviendo al tema, para realizar una copia bastará con ejecutar lo siguiente:

$ sudo dd if=/dev/sdc of=Alix.1D.Debian-20120226.img bs=4096

Esto realiza la copia de todo el contenido del dispositivo sdc (en mi caso es el de la CompactFlash) en el fichero Alix.1D.Debian-20120226.img, usando un tamaño de bloque de 4KB.

Para restaurar la copia de la imagen en la tarjeta, es tan sencillo como intercambiar if y of:

$ sudo dd of=/dev/sdc if=Alix.1D.Debian-20120226.img bs=4096

Full entry >>

Activar autologin sin necesidad de XDM, GDM, KDM, etc.

written by uve

16 February 2012

Usualmente, las distribuciones de Linux utilizan un Display Manager, como pueden ser XDM, GDM ó KDM.

Vamos a editar el fichero /etc/rc.local y añadiremos al final la siguiente línea:

su - user -c startx

donde user es el usuario que arrancará la sesión gráfica.

Para desactivar el arranque automático, bastará con comentar o borrar la línea anterior.

Nota importante

Vamos a entender lo que está pasando aquí. Básicamente, con el método anterior antes de que se llegue a llamar a la consola tty1, "startx" es llamado por rc.local. Así que, básicamente mientras estés en el escritorio no estará disponible la consola de inicio de sesión tty1 (la que se obtiene al pulsar Ctrl-Alt-F1).

Para poder acceder a la consola, habrá que cerrar sesión en el escritorio en cuestión y tendremos acceso a tty1. Podremos volver a acceder al entorno gráfico ejecutando "startx" una vez logueados.

Full entry >>

Preparar un Alix para exposiciones: Servidor X (Parte 1)

written by uve

16 February 2012

Estos días he posteado acerca de cómo instalar y configurar Debian en cualquier Alix. Hoy me voy a centrar en un modelo particular Alix.1D, el cuál trae salida VGA, lo cuál lo hace especialmente atractivo para realizar pequeñas exposiciones, pases de diapositivas, museos, etc.

Para ello, partiendo de una instalación básica como la que ya se ha comentado, en esta serie de artículos trataré de describir muchos de los aspectos que se pueden tener en cuenta.

Full entry >>

Invalid MIT-MAGIC-COOKIE-1 key

written by uve

14 February 2012

Haciendo unas pruebas con el servidor X he me encontrado con un mensaje misterioso error: Invalid MIT-MAGIC-COOKIE-1 key. Para solucionarlo he borrado los archivos .Xauthority de mi directorio personal.

rm ~/.Xauthority*

Full entry >>

Instalación de Debian sobre Alix: kernel y gestor de arranque (Parte 2)

written by uve

14 February 2012

Ayer contaba como podemos hacer una instalación básica de Debian sobre Alix. En concreto, faltó la instalación de un kernel y un gestor de arranque para tener un sistema operativo funcional. Cada uno puede elegir el software y las versiones que quiera. Yo en mi caso particular voy a utilizar la versión estable de linux para 486 y Grub2.

Full entry >>

Instalación de Debian sobre Alix: Sistema base (Parte 1)

written by uve

13 February 2012

Alix es un pequeño PC empotrado que utiliza procesadores AMD Geode LX. Estos equipos son muy pequeños y no se calientan, por lo que no es necesaria refrigeración externa (ni siquiera un ventilador). La limitación de la mayoría de los dispositivos Alix es la falta de salida VGA y el dispositivo de almacenamiento: CompactFlash. Por tanto, la instalación típica se hace desde un PC en la tarjeta de memoria y luego Debian arrancará desde la tarjeta de memoria una vez colocada en Alix.

Full entry >>

La teoría es cuando crees saber algo, pero no funciona.
La práctica es cuando algo funciona, pero no sabes por qué.
Los programadores combinan la teoría y la práctica:
Nada funciona y no saben por qué.