Algo de Linux: mayo 2010

lunes, 24 de mayo de 2010

Montar un repositorio trivial para nuestros propios paquetes

En ocasiones hemos creado o bajado un paquete que no se encuentra en los repositorios y que tiene dependencias de otros paquetes.

Al instalarlo mediante dpkg -i paquete.deb nos surgirá el problema de que, como dpkg no se encarga de instalar las dependencias, tendremos que hacer un apt-get -f install para que se instalen dichas dependencias.

Para resolver este problema, podemos montar un repositorio trivial en nuestra máquina, de forma que al instalar uno de nuestros paquetes con apt-get o aptitude, se instalen las dependencias.

La forma más sencilla de hacerlo es usar nuestro servidor web, así que, suponiendo que ya tenemos apache instalado y corriendo, creamos un directorio para nuestros paquetes:

# mkdir /var/www/mirepositorio

Y copiamos en este directorio todos los paquetes que queramos. Por ejemplo:

# cp gpdftk_0.0.36-1_all.deb /var/www/mirepositorio/

Una vez copiados los paquetes, entramos en el directorio y generamos el fichero de índices:

# cd /var/www/mirepositorio
# dpkg-scanpackages . /dev/null>Packages && gzip -c9 Packages>Packages.gz && rm Packages

Como podremos observar, en el mismo directorio, se nos creará un fichero Packages.gz que contendrá el índice de nuestro repositorio.

Cada vez que añadamos nuevos paquetes al repositorio, volveremos a ejecutar el dpkg-scanpackages. Por ejemplo:

# cp mount-systray_0.5.4-1_all.deb /var/www/mirepositorio/


# cd /var/www/mirepositorio

# dpkg-scanpackages . /dev/null>Packages && gzip -c9 Packages>Packages.gz && rm Packages




Por último, no olvidemos añadir a nuestro /etc/apt/sources.list la localización del repositorio. Por ejemplo: Suponiendo que nuestro servidor de paquetes tiene la ip 192.168.1.3, añadiremos la siguiente línea:

deb http://192.168.1.3/mirepositorio /

La estructura de directorios que he creado es muy simple (un solo directorio). Pero, del mismo modo, podría crear diferentes directorios para distintas arquitecturas o incluso para código fuente.

jueves, 20 de mayo de 2010

Desempaquetar y empaquetar paquetes deb

A veces necesitamos desempaquetar un paquete deb para hacerle algún pequeño retoque.

Pues bien, si queremos desempaquetar un paquete .deb, creamos un directorio donde extraerlo y lo extraemos:

$ mkdir paquetedescomprimido
$ dpkg-deb --extract paquete.deb paquetedescomprimido

Con ésto, estaremos extrayendo los ficheros que se instalan en el sistema.

Ahora bien, si queremos además extraer la parte de control del paquete, lo haremos de la siguiente manera:

$ dpkg-deb --control paquete.deb paquetedescomprimido/DEBIAN

Con ésto, estamos extrayendo la información de control del paquete en el directorio paquetedescomprimido/DEBIAN.

Una vez hecho lo anterior, haremos las modificaciones que necesitemos, y, cuando hayamos terminado, lo volvemos a empaquetar:

$ dpkg --build paquetedescomprimido
$ mv paquetedescomprimido.deb paquete.deb

martes, 18 de mayo de 2010

Navegación anónima mediante tor y privoxy en Debian

La combinación tor+privoxy nos permite navegar anónimamente por internet,  mediante una técnica llamada "Onion Routing".

La técnica de "Onion Routing" crea una cadena larga de conexión entre el origen y el destino que pasa por muchos agentes (servidores Tor). Para asegurar la privacidad, las conexiones entre los agentes y nuestro ordenador se realizan encriptadas. Cuando el destino recibe nuestras peticiones lo hace desde el último de los agentes, lo que permite que no se sepa desde qué máquina se ha solicitado la información.

Para usar Tor en Debian, podemos instalarlo directamente desde los repositorios:

# apt-get update && apt-get -y install tor


Al instalarlo, se nos instalará también privoxy. Si no se instalara, lo instalamos:

# apt-get -y install privoxy


Bien, pues ahora ya tenemos Tor instalado y configurado para actuar como cliente, aceptando conexiones desde localhost al puerto 9050 que es lo que necesitamos.

El siguiente paso será modificar la configuración de Privoxy para que dirija todas las comunicaciones a localhost:9050, es decir, a Tor. Para ello, editaremos el fichero de configuración /etc/privoxy/config, añadiendo la siguiente línea al final:

forward-socks4a / localhost:9050 .

Ojo. El punto final también hay que ponerlo.

Bueno, pues con ésto, ya tendríamos tor y privoxy listos. No obstante, es recomendable configurar privoxy para que no registre el tráfico que pasa por él. cosa que podemos hacer comentando la línea que establecen cuál es el fichero de log:

logfile logfile


Como hemos modificado la configuración de privoxy, reinciamos el servicio:

#/etc/init.d/privoxy restart

Para que nos sea más cómodo activar y desactivar la navegación anónima cuando queramos, desde el navegador, podemos instalar  la extensión Torbutton

Esta extensión instala un botón en la barra inferior del navegador con el que podremos activar y desactivar cómodamente la navegación anónima.

Para comprobar que Tor está funcionando correctamente, lo habilitamos en el navegador. Veremos que el indicador de color rojo "Tor deshabilitado" cambia a "Tor habilitado" en color verde. Una vez habilitado, introducimos la siguiente dirección en el navegador y pulsamos enter: https://check.torproject.org/

Si todo funciona correctamente veremos una página con un mensaje como el siguiente y la dirección IP desde la que dice que estamos navegando en estos momentos:

Congratulations. You are using Tor.



En cambio, si deshabilitamos Tor, veremos otro mensaje en el que nos dice algo así y nos muestra nuestra dirección IP pública:

Sorry. You are not using Tor.


Las páginas tardan un poco más en cargarse al usar Tor debido a la técnica usada para conseguir la navegación anónima.

Otra cosa que debemos tener en cuenta al usar Tor es que Privoxy no maneja el tráfico FTP, así que, si tenemos activado tor, las conexiones FTP desde el navegador fallarán.

sábado, 8 de mayo de 2010

Modificar un initrd.img

Estaba actualizando el dvd recopilatorio de herramientas que tengo y me surgió el problema de que tenía dos live-cd que hacían referencia al mismo directorio. Como no podía ponerlos juntos porque había archivos con el mismo nombre, me decidí a modificar el initrd para cambiar el directorio donde buscaba los ficheros uno de los dos.

Para modificar un initrd,tendremos que seguir los siguientes pasos:
  1. Descomprimiremos el initrd. img
  2. Haremos las modificaciones en los ficheros que queramos
  3. Volveremos a crear el initrd.img
Primer paso: Descomprimir el fichero initrd.img


# mkdir tmp
# cp initrd.img ~/tmp
# cd /tmp

~/tmp# mv initrd.img initrd.gz
~/tmp# gunzip initrd.gz

Veremos que dentro del directorio ~/tmp tendremos un fichero initrd. Para extraer los ficheros, usaremos cpio:


~/tmp# mkdir tmp2
~/tmp# cd tmp2
~/tmp/tmp2# cpio -id < ../initrd
55669 blocks

Si hacemos un ls veremos que dentro del directorio tmp2 tendremos todos los directorios y archivos del initd. Por ejemplo:


~/tmp/tmp2# ls
bin  conf  etc init  lib  sbin  scripts  usr

Segundo paso: Hacer las modificaciones que necesitemos.

Tercer paso: Volver a crear el fichero initrd.img


~/tmp/tmp2# find . | cpio --create --format='newc' > ../newinitrd
55669 blocks

Ahora ya tenemos un nuevo initrd llamado newinitrd en el directorio ~/tmp. Lo comprimimos:


~/tmp# gzip newinitrd

Se nos creará un fichero comprimido: newinitrd.gz. Lo renombramos:


~/tmp# mv newinitrd.gz initrd.img

Y listo. Ya tenemos nuestro initrd.img modificado.