Category: linux


Linux+ (62)

Hoy acaban de colgar online el nuevo número (62) de la revista Linux+ , los interesados podéis visitar la página de descarga :) :
http://lpmagazine.org/es/numero-on-line

Quedan pendientes algunos artículos que escribiré en cuanto acabe la época de exámenes:

  • Desarrollo web (libre) con HaXe (habrá más de un artículo)
  • Ética Hacker (habrá más de un artículo)
  • Más trucos para SAGE (y comentarios destructivos hacia Matlab y Octave)
  • Algunas idas de olla sobre política, últimamente me estoy quemando mucho viendo algunas cosas.

Si me dejo alguno después de exámenes, recordádmelo (si queréis, claro xD).

Linux+ online :)

Hoy he recibido un newsletter indicando que se puede descargar gratuítamente una versión online de Linux+ (número 61, en pdf), hay algunos artículos interesantes así que la recomiendo: http://lpmagazine.org/es/numero-on-line .

Los que más me han interesado son:

  • Make: compilación inteligente
  • Interfaces gráficas con SDL
  • Programando con inteligenia (artificial)

Ubuntu 9.10, desencanto total

Después del episodio que sufrí con el software científico vienen más problemas, Ubuntu últimamente no da pie con bola, ¿qué pasa en Canonical? Por un lado he notado que el sistema anda algo más lento que antes, no es que vaya lento, pues tengo un buen equipo, pero puedo asegurar que el rendimiento es menor. Por otro lado estoy sufriendo problemas algo más importantes y que me inquietan un poco, ciertos atajos de teclado no funcionan (aunque están configurados correctamente), por ejemplo, si quiero bloquear la pantalla con la combinación Ctrl+Alt+L me resulta imposible.

A eso debo añadir que aunque ha mejorado en el aspecto de la hibernación (antes no podía y ahora sí), ha empeorado en cuestiones de seguridad. Me explico, cuando suspendo o hiberno el sistema no necesito introducir mi clave una vez vuelvo a trabajar con él… supongo que se podrá hacer un apaño para arreglarlo, pero la configuración que han dejado por defecto no me gusta en absoluto. ¿Qué pasa si me roban el portátil en un despiste mientras lo tengo en suspenso? Pues que se puede acceder a toda mi información sin ningún esfuerzo, independientemente de que tenga cifrado el disco con una clave de tropecientos mil bits, seguridad zero.

En cuanto tenga algo de tiempo libre me paso a otra distro, las que estoy considerando: Debian (que ya la sé manejar y tiene un equipo más profesional que Ubuntu trabajando en ella, además siempre puedo usar el repo sid ;) ), Fedora (Los chicos de Redhat siempre mantienen a la última sus distros con un montón de novedades intersantes) y Arch (ésta última supone mucho trabajo… pero también supone mucho aprendizaje). Descarto Gentoo por falta de tiempo. A ver qué acabo usando.

Linux Magazine edición comunidad

Linux Magazine ha liberado su número 53 bajo licencia Creative Commons By-Nc-Nd (supongo que la versión 3.0 ya que no indican cuál de ellas), para los que la queráis descargar lo podéis hacer desde ésta página:

http://www.linux-magazine.es/Readers :

Los números no están completos pero no por ello dejan de tener cierto interés, de momento solo hay dos números publicados como Edición Comunidad, pero supongo que iran lanzando más números de ahora en adelante.

Saludos!

Skype 4.1 sobre Wine

Ésta mañana ha sido la primera vez en mi vida que he probado Skype. Dado que no tengo ni Windows ni Mac OS X en ninguno de mis ordenadores.. (solo GNU/Linux) la cosa no ha sido tan fácil como desearía… siempre con lo de la falta de soporte :s .

Es cierto que hay una versión para Ubuntu 8.04 (y para otras distros también)( … pero yo tengo Ubuntu 9.04 y hay incompatibilidades con algunos paquetes.. y tampoco tenía ganas de andar “guarreando” (aunque al final lo haya hecho pero de otra manera.. que considero menos peligrosa para el sistema). Además, por lo que tengo entendido la versión para Linux no es la 4… ni tansiquiera llega a la 3, es la 2 y seguramente no se puede utilizar todo el potencial de Skype.
La solución pasaba por instalarlo con el instalador de Windows sobre Wine … pero aunque conseguía instalar correctamente Skype, éste acababa por no funcionar cuando iniciaba su ejecución. Se limitaba a abrir la ventana principal y acto seguido aparecía un error relacionado con la imposibilidad de encotrar un recurso… que todavía no sé cual es.
Por suerte han lanzado la última actualización de Wine (la 1.1.28) que combinada con la configuración que seguidamente indicaré, ha conseguido que pueda utilizar Skype. ¿Qué se tiene que hacer? Pues ir a la configuración de Wine, y en la pestaña gráficos, en el primer marco que se llama configuración de ventanas tenemos que marcar todas las casillas y indicar las dimensiones del escritorio virtual (yo he puesto las dimensiones acordes a la resolución de mi pantalla).
Con ésto Skype funcionará (almenos sobre Ubuntu 9.04) .. sí, aparecerá un error cada vez que iniciemos el programa.. pero funcionará igual :D . (No he probado el soporte para las webcams ni la mayoría de opciones… puede que haya alguna opción del programa que lo deje tieso).
Espero que le haya servido a alguien :p , ¡Saludos!
P.D.:
Skype es de código cerrado y posiblemente está plagado de errores de seguridad, por otro lado a ésto le tenemos que añadir los errores que surgirán de su uso combinado con Wine… y los posibles errores que tal vez no sean errores… no es que tenga ganas de pensar en conspiranoias, pero siempre cabe la posibilidad de que haya puertas traseras intencionadas sin que tengamos forma de descubrirlo.

Actualización: he añadido enlaces a traducciones de los tres primeros Documentos de Halloween.

Navegando por internet buscando información sobre Mono (lo que en realidad buscaba era un benchmark comparativo entre Mono y Java) he acabado encontrando unos documentos bastante interesantes elaborados por ciertos ingenieros de Microsoft que datan del año 1998 (almenos el primero, no sé de qué años son los siguientes). Estos documentos son llamados los Documentos de Halloween y tratan sobre las estrategias que planeaba seguir Microsoft para luchar contra el movimiento del Open Source ( o Software libre ).

Es interesante ver como desde Microsoft veían este movimiento, cómo pensaban atajarlo y la evolución que ha tenido todo este mundillo desde el año 1998, la verdad es que las cosas han empeorados para el gigante del software.

Aquí os dejo una traducción al castellano del primer documento (de hecho es el primero que he encontrado):

Y aquí un enlace a los documentos completos (comentados por Eric S. Raymond) (en inglés):

http://www.catb.org/~esr/halloween/

Por si alguien lo duda, parece ser que estos documentos son reales, Microsoft confirmó que esos documentos habían sido redactados en su seno. Sé que es un asunto antiguo y medio olvidado, pero como yo tenía por aquel entonces unos 10 añitos, era improbable que me hubiera enterado de algo en esa época de mi vida.

Un cabo suelto que me queda es leer un escrito de Eric S. Raymond (fue él quien publicó los Documentos de Halloween) , en la traducción se enlaza a un texto en inglés (pero han traducido el título como Cuidando la Noósfera), en cambio en la Wikipedia (en el artículo de Eric S. Raymond) lo traducen como Colonizando la Noosfera y en su página particular de la Wikipedia Colonizando la Noosfera se enlaza a una traducción que lleva por título Cultivando la Noosfera, parece que nadie se pone de acuerdo pero almenos no tendré que hacer el esfuerzo de leer en inglés, buscando en google y altavista con el primer nombre que encontré, obtuve que no había ni una sola traducción (de hecho la he encontrado sobre la marcha mientras escribía este post).

Ayer al mediodía estaba yo pensando en cambiar a ext4 todas las particiones del disco duro de mi PC (por el momento uso ext3). Ya lo había hecho con la partición /home pero quería hacer lo mismo con /boot y con / para acelerar la carga del sistema, y la carga, instalación y actualización de aplicaciones. Lo difícil del asunto es que para poder arrancar con un sistema de ficheros ext4 necesito utilizar grub2 ya que el gestor de arranque grub no soporta ext4.

Bueno, ¿Qué hice?, pues ni corto ni perezoso hice un aptitude install grub2 . ¿Resultado? Al reiniciar se cargaba el gestor de arranque (grub2) pero ninguna de las entradas del menú funcionaba. Todas ellas me daban un código de error 11 (no me hagáis recordar qué texto aparecía ahora…).

Ahora viene cuando uno tiene que solucionar la cagada que ha hecho (tardé mucho más de lo que tardaréis vosotros si seguís mi consejo, pues probé muuchas cosas.. ). Lo primero es disponer de una LiveCD con GNU/Linux, el cd de instalación de Ubuntu, o una knoppix pueden ir bien. Arrancamos el cd y abrimos un terminal.

Una vez hemos abierto el terminal nos logueamos como root , se puede hacer con el comando su, el comando sudo -s y el comando sudo bash … ¿quien da más? ¿conocéis más formas (no valen formas excesivamente rocambolescas) ? Ahora viene la secuencia importante de comandos (Primeramente prepararemos un entorno para acceder al sistema instalado, y luego desde allí operaremos)

  • cd /media
  • mkdir rescate
  • mount /dev/sdaX rescate (donde X es el número de partición donde tenemos montado normalmente el directorio / , hay que tener en cuenta que yo pongo sda porque uso discos SATA , pero si usais el típico ATA , muchos lo conocéis por IDE, debéis usar hda)
  • mount --bind /dev /media/rescate/dev
  • mount --bind /proc /media/rescate /proc
  • chroot /media/rescate (Aquí cambiamos el directorio raíz de trabajo.. ahora hemos ingresado en el sistema que tenemos instalado, pero al tanto, todavía no tenemos la partición /boot cargada.. )
  • mount -t ext3 /dev/sdaX /boot (Éste paso sólo es necesario si el directorio /boot lo teníamos en otra partición , como antes, X indica el número de la partición en la que están los ficheros de /boot y podría ser que usárais hda en vez de sda)
  • cd /boot
  • mv grub grub.old
  • aptitude purge grub2 (Nos deshacemos del grub2 que tanto nos ha molestado)
  • aptitude install grub (Volvemos con nuestro viejo “amigo”)
  • grub-install /dev/sda (otra vez, podría ser /dev/hda , ésto puede que tarde un poco, es probable que os salga algun error relacionado con /dev/pty .. no pasa naaada, simplemente no ha podido crear un log de las operaciones)
  • update-grub (esto volverá a generar el directorio grub en /boot y la lista de sistemas operativos y núcleos en el fichero menu.lst)
  • Ahora solo nos queda reiniciar y disfrutar nuevamente de nuestro grub totalmente funcional… un consejo, borrad el directorio /boot/grub.old si os funciona todo, ocupa espacio innecesario, antes lo he dejado por si mi solución no os funciona.

Espero que si alguien tiene mi mismo problema ésto le pueda servir :)   , un saludo.

He estado peleándome con las fuentes de Google Gears y por fín he conseguido generar una versión de Gears para Linux 64 bits :) . Mal comienzo… “Muchos” (desde luego no más de los que estáis leyendo esto) estaréis pensando… ¿Qué es Gears?

Gears es una extensión creada por google para varios navegadores que permite trabajar con aplicaciones web en modo offline (o acelerar la carga de ciertas partes de la página para mejorar la  experiencia del usuario… que marketinera me ha salido esta última frase… :p) (para Firefox está en forma de extensión/complemento, para otros navegadores.. no sé exactamente que “forma” toma).

Información sobre esta extensión hay a montones por internet, al final del artículo os dejo referencias, así que no me entretendré en explicar lo que otros ya han escrito.. (y mucho mejor de lo que llegaría a hacerlo yo). Entonces.. ¿Por qué escribo esto? Pues bien, resulta que Gears no está disponible oficialmente para las versiones de 64 bits de Linux, sólo hay algunas versiones no oficiales… bastante desactualizadas (en estos momentos tienen hasta la 4.9 y la última versión lanzada por google es la 5.4.2) .

Pero… yo he parcheado un poco el código fuente disponible en los repositorios svn, he compilado y finalmente he conseguido una versión funcional para mi navegador de 64 bits. El problema… la versión que he compilado es la 5.6.0, una versión que no ha sido lanzada todavía, así que es posible que tenga algun bug que otro.

Podeis bajarlo de aquí: Google Gears para Linux 64 bits

En breve modifico este artículo y cuelgo el proceso que he seguido (He hecho unas cuantas trampas… :p) (Me he dejado las notas y hasta que no las recupere no podré describirlo suficientemente bién, aunque había algun que otro post en foros de internet, estos se referían a versiones “antiguas” y tampoco dan explicaciones completas)

Proceso:

Antes que nada me he pasado por los foros de Google y visité una discusión que trataba el tema, en ella se mostraban diferentes (en realidad sólo 2), el parche que apliqué yo está basado en el primero de los que se exponen (modificado, pues el parche se hizo para una versión bastante antigua).

Pues bién, el primer paso consiste en descargar el código del svn con el siguiente comando (yo trabajé con la revisión 3093):
svn checkout http://gears.googlecode.com/svn/trunk/ gears-read-only

Una vez hecho esto modificaremos el fichero gears/tools/config.mk cambiando la línea
ARCH = i386 por
ARCH = x86_64
,

la línea
MODE = dbg por
MODE = opt ,
y la línea
COMPILE_FLAGS = -c -o $@ -fPIC -fmessage-length=0 -Wall -Werror $(COMPILE_FLAGS_$(MODE)) por
COMPILE_FLAGS = -c -o $@ -fPIC -fmessage-length=0 -Wall $(COMPILE_FLAGS_$(MODE))
éste último cambio lo hacemos por que si no los warnings no nos dejarán compilar (ya advertí que seguramente tiene algun que otro error escondido la versión que compilé).

Pasemos al siguiente fichero, el cambio se hace por que los punteros en sistemas de 64 bits son más grandes. Abrimos el fichero gears/localserver/firefox/async_task_ff.cc y cambiamos la siguiente línea:
OnListenerEvent(msg_code, reinterpret_cast<int>(msg_param)); por ésta otra:
OnListenerEvent(msg_code, reinterpret_cast<long>(msg_param));

Aquí es donde yo empecé a aplicar mis propios cambios (que son una tontería, pero permitieron que consiguiera compilar).

En los siguientes ficheros:

  • third_party/googleurl/src/url_parser.cc
  • gears/base/common/http_utils.cc
  • gears/geolocation/backoff_manager.cc

añadiremos la línea (al principio de todo):
#include <stdlib.h>

En los siguientes:

  • third_party/jsoncpp/json_reader.cc
  • third_party/jsoncpp/json_value.cc
  • gears/base/common/string16.h
  • gears/base/common/http_utils.cc

añadiremos la línea (al principio de todo):
#include <string.h>

Y por último, en el fichero gears/base/common/str_utils.cc añadiremos la línea:
#include <limits.h>

Para continuar tendremos que instalar los paquetes de desarrollo de Firefox 3 y del Xulrunner 1.9, yo desde mi Ubuntu 8.10 lo hice así:
aptitude install xulrunner-dev firefox-dev

Ésto lo hacemos para tener las librerías de 64 bits que utilizaremos para reemplazar las de 32 bits que hay en el código que nos hemos bajado y así poder enlazar correctamente los binarios que deseamos obtener. Estos ficheros los sustituiremos por la versión instalada en nuestro sistema:

  • third_party/gecko_1.9/linux/gecko_sdk/lib/libxpcom.so
  • third_party/gecko_1.9/linux/gecko_sdk/lib/libxpcomglue.a
  • third_party/gecko_1.9/linux/gecko_sdk/lib/libxpcomglue_s.a
  • third_party/gecko_1.9/linux/gecko_sdk/lib/libnspr4.so
  • third_party/gecko_1.9/linux/gecko_sdk/bin/xpidl
  • third_party/gecko_1.9/linux/gecko_sdk/bin/xpt_link

Pero el trabajo no se acaba aquí, continuemos. Nos movemos al siguiente directorio:
third_party/gecko_1.9/linux/gecko_sdk/bin
y ejecutamos los siguientes comandos:
chmod +x xpidl
chmod +x xpt_link

El siguiente paso es el más lento de todos (y el más sencillo), tecleamos en la línea de comandos dentro del directorio gears :
make BROWSER=FF3

Una vez hecho esto ya casi estaremos. Creamos un directorio fuera del que creó svn al descargar las fuentes, le llamaremos XPI . Entramos en él y ejecutamos el siguiente comando para descargar el paquete actual de Gears (para 32 bits):
wget http://dl.google.com/gears/current/gears-linux-opt.xpi

Lo descomprimimos (en realidad es un zip normal y corriente):
unzip gears-linux-opt.xpi

Ahora tendremos que modificar algunos ficheros, sustituir otros, comprimir… y ya estaremos! Abrimos el fichero install.rdf y modificamos las siguientes líneas:
<!– Prevent this XPI from being installed on the wrong platform. –>
<em:targetPlatform>Linux_x86-gcc3</em:targetPlatform>
<!– Ubuntu Edgy Eft requires “linux-gnu” for the OS_TARGET prefix. –>
<em:targetPlatform>linux-gnu_x86-gcc3</em:targetPlatform>

por éstas otras:
<!– Prevent this XPI from being installed on the wrong platform. –>
<em:targetPlatform>Linux_x86_64-gcc3</em:targetPlatform>
<!– Ubuntu Edgy Eft requires “linux-gnu” for the OS_TARGET prefix. –>
<em:targetPlatform>linux-gnu_x86_64-gcc3</em:targetPlatform>

Entramos en el subdirectorio components . Allí sustituiremos los ficheros gears.xpt y libgears.so (el fichero libgears_ff2.so no lo tocaremos por que no hemos compilado nada para Firefox 2, aun así, si queréis tenerlo, simplemente tenéis que cambiar FF3 por FF2 en el make anterior) por las nuevas versiones que habremos generado, que se encontrarán en el directorio
gears/bin-opt/linux-x86_64/ff3/

Una vez hecho esto comprimimos otra vez el directorio (si os ha quedado el .xpi de google anterior dentro, quitadlo de allí) . Notad que tenéis que comprimirlo con el formato zip (ninguno otro servirá). Al fichero resultante le ponéis la extensión xpi y por fin podréis instalarla y provarla!! ;)

Referencias:

Buenas, esta mañana he programado un pequeño programa que sirve para comprovar cuanto tarda la librería jpeg en cargar las imágenes jpeg contenidas en un directorio (analizándolo recursivamente). Hace tiempo que no programaba nada, y la verdad es que me ha sentado bién, lo colgaré por si a alguien le interesa. Se puede aprender algo del código.. aunque poco:

  • Como recorrer una estructura de directorios en entornos UNIX-like (por ejemplo GNU/Linux) y distinguir las entradas de éste (para saber si son ficheros normales, directorios, enlaces…)
  • Como cargar en memoria imágenes jpeg con las librerías libjpeg, que por lo general están muy mal documentadas en internet.

Empezemos: para comenzar, deberemos instalar en nuestro sistema las librerías libjpeg (así como los archivos de cabecera para poder incluírlos en nuestro código fuente, en sistemas debian el paquete es algo así como libjpeg-dev, en Ubuntu Hardy el paquete se llama libjpeg62-dev).

Nota 1: en el código fuente no he incluído comprovación alguna para que se distingan las imágenes jpeg de las imágenes que no lo son, se debería hacer alguna comprovación sobre el nombre, por ejemplo. No lo he hecho porque no me hacía falta (sí, he hecho el programa para algo útil, aunque no lo parezca, era algo así como un benchmark)

Nota 2: no he incluído ninguna comprovación en el código para que trate los archivos que enlazan a otros, no me hacía falta de la misma forma que antes, en todo caso, si buscáis en google el nombre de las funciones que he utilizado para hacer la distinción de ficheros y directorios os aparecerá el nombre de la función que indica si estamos tratando con enlaces. Por otro lado, si imprimimos por pantalla en modo octal el entero que pasamos como argumento a esa función, veremos que corresponde a los permisos del fichero, y nosotros mismos podríamos programar una función que nos indicara que tipo de entrada estamos tratando.

Nota 3: xD, no, no hay nota n . Bueno, ahora en serio, para compilar el código se tiene que pasar el argumento -ljpeg al gcc (bueno, he presupuesto que utilizamos gcc, los que lo quieran hacer con otro compilador se tendrán que espavilar, si es que a alguien le interesa hacer esto, jejeje).

Finalmente os muestro el código :) (puede que en los días siguientes pula un poco el código y los comentarios, que son un poco chapucheros) :

#include  //
#include   // estructura stat
#include     // mkdir, chdir
#include     // dirent

#include      // para fopen
#include     // para malloc
#include     // strcmp
#include 

Este es un pequeño post que no pretende aportar mucho a la comunidad.. ya que lo que colgaré se puede encontrar muy fácilmente con Google, pero me importa más bien poco, más que nada lo colgaré para acordarme yo :) .

Primero de todo.. ¿Por qué querríamos cambiar la MAC de nuestro dispositivo de red? Pues porque existen sitios donde sólo se pueden conectar ciertas máquinas autorizadas.. las cuales son distinguidas por los routers a través de su dirección MAC… y a veces nos gustaría conectarnos a dichas redes. Es por eso que tendremos que falsificar la MAC de nuestro dispositivo de alguna manera (por lo general cambiándola por la mac de algun dispositivo que sepamos que está autorizado… y sobretodo, desconectado en el momento de nuestra conexión).

En este post me centraré en sistemas GNU/Linux, utilizando el programa macchanger. Si trabajamos desde Ubuntu o Debian, para instalar el programa será tan fácil como escribir

aptitude install macchanger

o bién

apt-get install macchanger

Si trabajamos desde cualquier otra distribución… ni idea, yo lo que recomiendo es buscar el típico tarball de código fuente y ejecutar los también típicos comandos make y make install.

A lo que vamos, antes que nada, deberíamos desactivar la red con el comando siguiente:

/etc/inid.d/networking stop

o bién con:

ifdown dispositivo [el dispositivo puede ser: eth0, eth1, wlan0...]

Después de eso, deberíamos guardar la mac original del dispositivo, por si acaso. Para hacer eso simplemente hace falta ejecutar el comando ifconfig y se nos mostrará la mac asociada a cada dispositivo de red. Dicho todo esto, pasemos a la acción (desde root) con el siguiente comando:

macchanger --mac XX:XX:XX:XX:XX:XX dispositivo

donde XX:XX:XX:XX:XX:XX es la mac que queremos establecer para nuestro dispositivo, así de simple :D .

Por si alguien tiene curiosidad sobre por qué he escrito esto, bueno, diremos simplemente que lo estoy utilizando en la universidad para conectarme a través de la red cableada con mi portátil :) . (Espero que no aparezca nadie que me quiera sancionar por esto, xD.

Bueno, hasta otra :) .

Powered by WordPress | Theme: Motion by 85ideas.