ULAnix

Hace ya algún tiempo que la beta #3 de esta distribución LiveCD basada en Debian salió.

Podría decirse que ULAnix es la primera distribución GNU + Linux que nace dentro de una universidad venezolana, Universidad de Los Andes. Aunque muchos afirman que la primera distro venezolana con aval universitario fue Cachapa, no es cierto, Antonio Lopez, el creador de Cachapa, realizó dicho proyecto como una meta personal, posteriormente la Universidad de Carabobo se interesó en Cachapa. Al final, lo importante no es ser el primero, lo importante es que estas distribuciones han sido fruto del trabajo de venezolanos.

ULAnix es una iniciativa del Parque Tecnológico de Mérida.

Básicamente el equipo de trabajo está conformado por los profesores: Gilberto Díaz y Jacinto Dávila, el desarrollo está a cargo del bachiller Jesús Molina.

Si usted desea una copia de esta distribución puede obtenerla desde el repositorio: http://ftp.ula.ve/linux/distribuciones/ulanix/ o desde el mirror que he habilitado en http://ulanix.milmazz.com/.

El equipo de trabajo alrededor de ULAnix agradece que la mayor cantidad de personas se haga con esta distribución, la pruebe e informen los errores que vayan consiguiendo. Aún no existe una página oficial para el proyecto, aunque al parecer se está trabajando en ello, opcionalmente, puede notificar los errores de software en el foro de ULAnux.

Próximamente espero estar probando intensivamente esta distribución y realizar las observaciones que considere pertinentes.

Debian: Bienvenido al Sistema Operativo Universal (Parte II)

Esta serie de anotaciones comenzo con la entrada Debian: Bienvenido al Sistema Operativo Universal (Parte I).

Después de escribir en la tabla de particiones el esquema de particionamiento descrito en la parte anterior, el sistema base Debian comenzo a instalarse. Posterior a la Bienvenida al nuevo sistema Debian, reinicie y comence a configurar el sistema base debian, en la sección de selección de programas Debian escogí la última opción que nos brinda el asistente, selección manual de paquetes, luego configure las fuentes de aptitude y enseguida inicie la instalación de paquetes puntuales, los cuales describiré a continuación, de manera breve.

Como lo que tenía a mano era el CD Debian GNU/Linux testing _Sarge_- Official Snapshot i386 Binary-1, lo primero que hice fue actualizar a Sarge, seguidamente cambie las fuentes del fichero /etc/apt/sources.list a Etch, actualice la lista de paquetes disponibles e inmediatamente hice un aptitude dist-upgrade, el cambio de una rama a otra fué de lo más normal, no genero problema alguno.

Nota: No he descrito el proceso de instalación del sistema base de manera detallada ya que existe suficiente información en el sitio oficial de Debian, si lo desea, puede ver este video tutorial de instalación de Debian Sarge (aprox. 54MB.), en este video se explica como instalar el Entorno de Escritorio predeterminado que ofrece el asistente, no es el caso que explico en esta entrada, puesto que vamos a generar un Entorno de Escritorio de acuerdo a nuestras necesidades particulares.

Si tiene alguna duda acerca de la funcionalidad de un paquete en particular, puede consultar la descripción del mismo al hacer uso del comando aptitude show package-name, en donde package-name es el nombre del paquete en cuestión.

En los siguientes pasos haré uso intensivo de aptitude, anteriormente ya he explicado las ventajas que presenta aptitude sobre los comandos apt-get y sobre la interfaz gráfica Synaptic, puede encontrar mayor información en los artículos:

Sistema X Window

Instalando los componentes esenciales para el Sistema X Window.

# aptitude install x-window-system-core

GNOME

Instalando los componentes esenciales para el entorno de escritorio GNOME.

# aptitude install gnome-core

GNOME Display Manager

Si usted hubiese instalado el paquete x-window-system, metapaquete que incluye todos los componentes para el Sistema X Window, se instalaría por defecto XDM (X Display Manager), normalmente debería recurrir a la línea de comandos para resolver los problemas de configuración de este manejador, mientras que con GDM (GNOME Display Manager) no debe preocuparse por ello, puede personalizarlo o solucionar los problemas sin recurrir a la línea de comandos. De manera adicional, puede mejorar su presentación con la instalación de temas.

# aptitude install gdm gdm-themes

Mensajería Instantánea, IRC, Jabber

GAIM

Todo lo anterior se puede encontrar al instalar GAIM.

# aptitude install gaim gaim-themes
irssi

Si le agrada utilizar IRC modo texto, puede instalar irssi.

# aptitude install irssi
Centericq

Centericq es un cliente de mensajería instantánea multiprotocolo, soporta ICQ2000, Yahoo!, AIM, IRC, MSN, Gadu-Gadu y Jabber.

# aptitude install centericq

Programas para la manipulación de imágenes

GIMP por defecto no puede abrir ficheros SVG, si desea manipularlos desde GIMP y no desde Inkscape puede hacer uso del paquete gimp-svg.

# aptitude install gimp gimp-python gimp-svg inkscape

Navegador Web

Definitivamente Firefox.

# aptitude install firefox firefox-locale-es-es

Creación de CDs y DVDs

# aptitude install k3b cdrdao

Para quienes quieran su version de K3b en español pueden instalar el paquete k3b-i18n, yo no lo considere necesario puesto que aporta 11,5MB, inútiles desde mi punto de vista.

Cliente Bittorrent

No le recomiendo instalar el cliente bittorrent Azureus, consume demasiados recursos, acerca de ello explico brevemente en el artículo Clientes Bittorrent.

# aptitude install freeloader

Lector de feeds

Normalmente utilizo Liferea. También cabe la posibilidad de utilizar el servicio que presta Bloglines.

# aptitude install liferea

Editor

# aptitude install vim-full

Cliente de correo electrónico

Para la fecha, a la rama testing de Debian no ingresa la versión 1.5 del cliente de correo Thunderbird (mi favorito), así que vamos a instalarlo manualmente.

En primer lugar deberá descargar (se asume que la descarga se realizará al escritorio) la última versión del cliente de correo, el paquete empaquetado y comprimido lo encontrará en el sitio oficial de Thunderbird.

Seguidamente, proceda con los siguientes comandos.

# tar -C /opt/ -x -v -z -f ~/Desktop/thunderbird*.tar.gz
# ln -s /opt/thunderbird/thunderbird /usr/bin/thunderbird
Instalar Diccionario en español
wget -c http://downloads.mozdev.org/dictionaries/spell-es-ES.xpi

Aplicaciones → Herramientas del Sistema → Root Terminal. Desde allí procedará a ejecutar el comando thunderbird.

Desde Thunderbird, seleccione la opción Extensiones del menú Herramientas. Seguidamente proceda a dar click en el botón Instalar y posteriormente busque la ruta del paquete que contiene el diccionario.

Thunderbird + GPG = Enigmail

Esta excelente extensión le permitira cifrar y descifrar correos electrónicos, a su vez, le permitirá autenticar usuarios usando OpenPGP.

wget -c http://releases.mozilla.org/pub/mozilla.org/extensions/enigmail/enigmail-0.94.0-mz+tb-linux.xpi

Como usuario normal, proceda a invocar el cliente de correo electrónico Thunderbird, seleccione la opción Extensiones del menú Herramientas y proceda a instalar la extensión en cuestión, similar al proceso seguido para lograr instalar el diccionario.

Reproductor de videos

Aunque existen reproductores muy buenos como el VLC y XINE, mi reproductor favorito es, sin lugar a dudas, MPlayer. La mejor opción es compilarlo, aún en la misma página oficial del proyecto MPlayer lo recomiendan, existe mucha documentación al respecto. Sin embargo, si no tiene tiempo para documentarse puede seguir los siguientes pasos, le advierto que el rendimiento quizá no sea el mismo que al compilar el programa.

# echo "deb ftp://ftp.nerim.net/debian-marillat/ etch main" >> /etc/apt/sources.list
# aptitude update
# aptitude install mplayer-386 w32codecs

Extensiones para Mozilla Firefox

Estas son las que he instalado hasta ahora, siempre uso un poco más, puede encontrarlas en la sección Firefox Add-ons del sitio oficial.

  • Answers
  • del.icio.us
  • FireFoxMenuButtons
  • Colorful Tabs
  • Tab Mix Plus

Gestor de Arranque

Vamos a personalizar un poco el gestor de arranque GRUB.

# aptitude install grub-splashimages
$ cd /boot/grub/splashimages

En este instante le recomiendo escoger alguno de los motivos que incluye el paquete grub-splashimages, una vez hecho esto, proceda a realizar lo siguiente.

$ cd /boot/grub/
# ln -s splashimages/image.xpm.gz  splash.xpm.gz
# update-grub

En donde, evidentemente, debe cambiar el nombre del fichero image.xpm.gz por el nombre de fichero de la imagen que le haya gustado en /boot/grub/splashimages.

Creando listas de reproducción para XMMS y MPlayer

Normalmente acostumbro a respaldar toda la información que pueda en medios de almacenamiento ópticos, sobretodo audio digital, ya sea en ficheros Ogg Vorbis o en MPEG 1 Layer 3. Desde hace poco más de un año hasta la actualidad me he acostumbrado a mantener una estructura lógica, la cual es más o menos como sigue:

/music/<nombre_artista>/<título_album>/<título_pista

Pero hace mucho tiempo no era tan organizado en cuanto a la estructura de los respaldos, entonces, la pregunta en cuestión es, ¿cómo lograr detectar la presencia de ficheros de audio digital almacenados de manera persistente en un dispositivo óptico de manera automática?

Al igual que lo expresado en la entrada Eliminando ficheros inútiles de manera recursiva, haremos uso del comando find.

Antes de entrar en detalle debo aclarar que voy a realizar una búsqueda recursiva de ficheros en el path correspondiente a mi unidad lectora de CDs. Usted debe ajustar el path por uno apropiado en su caso particular.

Si solo desea buscar ficheros MPEG 1 Layer 3:

find /media/cdrom1/ -name \*.mp3 -fprint playlist

Pero si usted acostumbra a almacenar ficheros Ogg Vorbis en conjunto con ficheros MPEG 1 Layer 3, debería proceder así:

find /media/cdrom1/ \( -name \*.mp3 -or -name \*.ogg \) -fprint playlist

El comando anterior también es aplicable para generar listas de reproducción de video digital, en cuyo caso lo único que debe cambiar es la extensión de los ficheros que desea buscar. El fichero que contendrá la lista de reproducción generada en los casos expuestos previamente será playlist.

Reproduciendo la lista generada

Para hacerlo desde XMMS es realmente sencillo, acá una muestra:

xmms --play playlist --toggle-shuffle=on

Si usted no desea que las pistas en la lista de reproducción se reproduzcan de manera aleatoria, cambie el argumento on de la opción --toggle-shuffle por off, quedando como --toggle-shuffle=off.

Si desea hacerlo desde MPlayer es aún más sencillo:

mplayer --playlist playlist -shuffle

De nuevo, si no desea reproducir de manera aleatoria las pistas que se encuentran en la lista de reproducción, elimine la opción del reproductor MPlayer -shuffle del comando anterior.

Si usted desea suprimir la cantidad de información que le ofrece MPlayer al reproducir una pista le recomiendo utilizar alguna de las opciones -quiet o -really-quiet.

Debian: Bienvenido al Sistema Operativo Universal (Parte I)

Desde el día ayer tengo en mi ordenador de escritorio solo Debian, anteriormente tenía las tres versiones actuales de Ubuntu (warty, hoary y breezy), las cuales compartían la misma particion /home, sentía que estaba desperdiciando espacio, aunque siempre trataba de usar las tres versiones de Ubuntu, una buena excusa que encontre para arreglar las cosas fué la noticia en la que se anunciaba que el período de soporte para Ubuntu 4.10 (Warty Hedgehog) estaba llegando a su fín, después del día 30 de Abril de 2006, no se incluirá información acerca de las actualizaciones de seguridad en los paquetes de Ubuntu 4.10.

Esta entrada viene a ser una recopilación de los pasos que he seguido para migrar de Ubuntu a Debian, a manera de recordatorio, espero pueda servirle a alguien más.

¿Por qué Debian?

Los siguientes puntos son solo opiniones personales.

  • El paso de Ubuntu a Debian es poco traumático.
  • Había trabajado con Debian en mi portátil por mucho tiempo.
  • Debian no depende de ninguna compañía ni del financiamiento de un solo hombre, es un trabajo realizado solo por una comunidad de voluntarios.
  • Existe demasiada (y excelente) documentación.
  • Tenía que probar algo nuevo, algo mejor, algunos amigos me convencieron, y aún más después del bautizo que me dio José Parrella en el canal IRC #velug en el servidor freenode.

Primeros pasos

En primer lugar procedí a realizar respaldos de la información almacenada en programas como Mozilla Thunderbird, Liferea, Mozilla Firefox, bases de datos en PostgreSQL, MySQL, entre otros. Este proceso es realmente sencillo.

En todos los programas mencionados anteriormente fué suficiente con copiar la raíz de su directorio correspondiente, por ejemplo:

tar cvzf /path/respaldo/thunderbird.tgz ~/.thunderbird

El comando anterior generará un fichero empaquetado y comprimido en el directorio /path/respaldo/ (por supuesto, la ruta debe adaptarla según sus necesidades), dicho fichero contendrá la configuración personal e información almacenada por el programa Mozilla Thunderbird (según el ejemplo) del usuario en cuestión.

Obteniendo el CD de Debian

Puede conseguir Debian de muchas maneras, yo por lo menos descargue hace mucho tiempo la imagen del CD Debian GNU/Linux testing _Sarge_- Official Snapshot i386 Binary-1 por Bitorrent, aunque también contaba con la imagen del CD de Debian 3.1r2, desgraciadamente no pude encontrarle.

Analizando el esquema de particionamiento

Siempre acostumbro dedicarle un buen tiempo al esquema de particionamiento que utilizaré antes de proceder a instalar una distribución en particular, leyendo el manual de instalación de Debian GNU/Linux 3.1 (le dije que existe una excelente documentación), específicamente en el Apéndice B. Particionado en Debian, tenía pensado hacer lo siguiente:

Partición	Tamaño		Tipo
/		200MB		ext2
/usr		6GB		ext3
/var		500MB		ext2
/tmp		3GB		ext2
/opt		200MB		ext2
swap		1GB		Intercambio
/home		Resto		ext3

Por supuesto, estaba siguiendo las recomendaciones del manual de instalación previamente mencionado, antes de continuar pregunte en el canal IRC #velug del servidor freenode y entre algunos amigos me recomendaron lo siguiente:

Partición	Tamaño		Tipo
/boot		80MB		ext2
/tmp		3GB		ext2
swap		1GB		Intercambio
/		10GB		ext3
/home		Resto		ext3

Algunos seguramente se preguntaran por qué se le ha asignado tanto espacio a la partición /tmp, simplemente porque continúamente estaré haciendo uso de herramientas para la creación de CDs ó DVDs, además de algunos programas multimedia y siempre he configurado mis clientes Bittorrent para que hagan uso de esta partición antes de finalizar la descarga de los ficheros.

Por medidas de seguridad he establecido nodev, nosuid, noexec como opciones de montaje para la partición /tmp y las opciones ro, nodev, nosuid, noexec en la partición /boot.

¿Por qué a la final no he seguido las indicaciones del manual de instalación de Debian GNU/Linux?

Según un comentario que me hizo José Parrella, el cual más o menos decía así: cuando vas a utilizar el sistema Debian GNU/Linux para la casa, es muy probable que las particiones crezcan de manera desproporcionada y sin sentido (de acuerdo al uso que le dé el usuario), debido a esto es díficil adaptarlo a un modelo realmente conocido, entonces, la idea es no desperdiciar espacio alguno.

Resumiendo un poco la opinión de José:

  • No sabemos que vamos a hacer con la máquina.
  • Al no saberlo, no podemos particionarla más allá de lo que la lógica indica (separar /home, o /tmp).
  • Uno sabe que el sistema raíz de Debian, para un usuario en sus cabales (no soy uno de ellos), normalmente no excede los 4.5GB., muy probablemente menos.
  • A menos que sepamos exactamente la funcionalidad principal del Sistema Operativo, no podemos monitorear las particiones /var y /home.
  • La partición /tmp normalmente no debe exceder más de 1GB. de espacio, a menos que se haga uso intensivo de ella como prentendo hacerlo.
  • Si quisieramos un servidor de archivos, dejaríamos /var en la partición raíz y separaríamos /home.
  • Si quisieramos un servidor de bases de datos, dejaríamos /home en la partición raíz y separaríamos /var.

Sus razones me convencieron y desde mi punto de vista tenían lógica, sobretodo para alguien que le gusta hacer pruebas (a veces extremas) directamente desde su ordenador de escritorio.

En la siguiente entrega disertaré acerca del proceso de instalación del sistema base de Debian GNU/Linux y la puesta en marcha de la interfaz gráfica.

Correcciones, críticas constructivas siempre serán bien recibidas.

Breve reseña del FLISOL 2006, Capítulo Mérida-Venezuela

Al llegar a eso de las 9:30 a.m. (hora local) estaban transmitiendo el video Trusted Computing (subtítulos español), un excelente video en donde nos muestran cuan peligroso puede ser la “mala interpretación” que tiene la industria acerca del concepto “Trusted Computing”, modelo en el cual la industria no le permite a los usuarios (comunidad) elegir entre lo que ellos consideran malo o nó, el problema es que ya deciden por tí, simplemente porque la industria no confía en nosotros.

Después de mostrar el video, Hector Colina, uno de los coordinadores del evento, procedió a dar la bienvenida a los asistentes al II Festival Latinoamericano de Instalación de Software Libre, capítulo Mérida, Venezuela. De inmediato, Hector continúo hablando y nos sorprendió con una charla denominada Software Libre y Libre Empresa, en donde nos hablaba de la interesante filosofía detrás del modelo de Software Libre, algunos piensan equivocadamente que bajo el esquema de Software Libre no se es posible generar ganancias, se demostró que es posible hacerlo. También hablo sobre las ventajas técnicas que brinda el Software Libre frente al Software Privativo.

Posteriormente se dió comienzo a las demostraciones de LTSP (Linux Terminal Server Project) por parte de José David Gutierrez, quien también coordinó el evento y es miembro de la Cooperativa AndiNuX, no recuerdo en este instante cuales eran las características que poseía el servidor, pero recuerdo que el cliente sobre el cual se hizo la demostración tenía apenas 40 MB de RAM (sí, leyo bien, 40 MB) y se logró levantar el entorno de escritorio KDE y ejecutar algunas aplicaciones, José comentaba que los requisitos mínimos de memoria RAM eran 16, mientras que lo óptimo erán 32 MB de RAM, así que amigo, si usted esta leyendo esto, no bote su potecito (equipo de bajo recursos de hardware), bajo el esquema de Software Libre podemos recuperarlo, quizá podría donarlo y regalarle una sonrisa a un niño que reciba educación en una escuela con pocos recursos.

Posteriormente comenzaron a colocar algunos videos a los asistentes, entre los cuales recuerdo haber visto Revolution OS, en paralelo, se realizaba el proceso de instalación desde tempranas horas de la mañana, al final de la jornada se lograron contabilizar más de 20 máquinas a las cuales se instaló GNU/Linux, incluyendo potecitos de 32 MB de RAM hasta máquinas de escritorio con procesadores de 64 bits, por supuesto, a una que otra portátil también se le instaló GNU/Linux, además, se regalaron CDs de Debian, Ubuntu, entre otros.

En la tarde el profesor Francisco Palm comenzó su charla Carpintería del Software Libre: un enfoque desde el lenguaje de Programación Python, en ella se nos hace reflexionar acerca de nuestra realidad actual en Venezuela, presentamos poca penetración de internet en nuestra sociedad. Bajo el esquema de Software Privativo, no se le brinda apoyo a la comunidad, no se presenta una innovación alguna.

El profesor Palm también converso sobre puntos interesantes acerca de la Ingeniería de Software Libre, como la Fundación Apache, Debian o Mozilla no presentan certificaciones y no les importa éste hecho en particular, puesto que su desarrollo es robusto, de hecho, muestran como funcionan por dentro. Entre otras cosas bastante interesantes.

Enseguida comenzaron otra charla 2 pupilos del profesor Palm, Diego Díaz y Freddy López, en donde se expuso el Proyecto SIGMA: Soluciones Libres para el mundo Científico, en esta charla pudimos observar una serie de demostraciones del sistema estadistico R. El proyecto SIGMA resulta de una iniciativa de los miembros de la Escuela de Estadística y el Instituto de Estadística Aplicada y Computación (IEAC) de la Universidad de Los Andes.

Sin mucho receso, Leonardo Caballero comenzó su charla acerca de Desarrollo Web con Mozilla FireFox, aca se explicó acerca de las extensiones que resultan muy útiles al desarrollador de páginas web, como por ejemplo, la extensión Web Developer, de manera adicional, se demostró cuan personalizable (desde utilizar temas hasta incluso simular comportarse como otro navegador) puede ser Firefox para un usuario particular, desde extensiones para el clima (ForecastFox) hasta herramientas de blogging.

Particularmente, para el desarrollo web utilizo más extensiones de las que mencionó Leonardo, entre ellas puedo mencionar: CSS Validator, ColorZilla, entre otras. Prefiero no continuar mencionando la lista de extensiones que poseo, se supone que sea una breve reseña, quizá en otro artículo hablaremos acerca de las extensiones de Firefox.

Un poco más tarde, el licenciado Axel Pizzi, quien pertenece a la agencia de traducción y servicios lingüisticos translinguas, conversó acerca del uso de herramientas CAT (Computer aided Translation) bajo el esquema de Software Libre, simplemente se mostraba las bondades de la traducción asistida por computadora, es una manera de traducir contenido en donde el ser humano (traductor) utiliza software diseñado para brindar soporte y facilitar ésta ardua tarea.

Algo nervioso se encontraba Jesús Rivero (no confundir con neurogeek, ok?), pues se estaba haciendo tarde para su charla, Cooperativismo y Software Libre, en donde Jesús mostró como el esquema de desarrollo colaborativo es sumamente útil en las Cooperativas.

Y ya para finalizar la jornada, comence mi charla sobre Desarrolo Web en Python utilizando el framework Django, a manera de introducción, comence a hablar del lenguaje de programación Python, sus bondades, que empresas le utilizan actualmente y que proyectos han desarrollado, entre dicha lista se incluyen las siguientes: Google, Yahoo!, empresas farmacéuticas (AstraZeneca) de gran escala mundial, Industrial Light & Magic (sí, esa misma que está pensando, es la empresa iniciada por George Lucas en el año de 1.975, la encargada de los efectos especiales de la saga “Star Wars”, no solo eso, en su lista se incluyen películas como “Forrest Gump”, “Jurassic Park”, “Terminator 2”, entre otros).

Posteriormente comence a adentrarme ya en el tema que me interesaba, Desarrollo Web, en mi caso particular, hable sobre como utilizar el framework Django, desde la instalación del framework, la instalación de PostgreSQL (recomendada) y del adaptador a dicha base de datos en python, psycopg, hasta la construcción de la aplicación. Para mayor detalle acerca de esta presentación solo esperen un próxima entrada, quisiera ampliar algunos tópicos para dejarlos un poco más claros.

Si desean ver algunas fotos que logré tomar del II Festival Latinoamericano de Instalación de Software Libre (FLISOL), Capítulo Mérida – Venezuela, pueden revisar el set de fotos FLISOL 2006 de mi cuenta en flickr.

Debo confesar que estaba bastante nervioso al principio porque era mi primera charla. Espero que todo haya salido bien y les haya gustado.

Bueno, finalizamos las actividades como a las 7:30 p.m. (hora local), luego de ello ayudamos a los muchachos a acomodar las cosas y guardarlas en las oficinas de Fundacite Mérida.

Desde mi punto de vista, ha sido una grata experiencia, cualquier corrección a la reseña es bienvenida, pido disculpas si he dejado a alguien por fuera, esta reseña no estaba anotada en ningún medio escrito, solo he comenzado a describir las situaciones que recuerdo, lo más seguro es que olvide algún detalle importante, andaba un poco distraído instalando Debian y Ubuntu en el Festival.

Por supuesto, cualquier corrección, crítica constructiva acerca de la charla que dí se los agradecería, todo sea por mejorar dicho material y publicarlo, por supuesto, manteniendo una licencia libre.

Más propuestas para la campaña en contra de la gestión del CNTI

David Moreno Garza (a.k.a. Damog) se ha unido a la campaña que apoya a la Asociación de Software Libre de Venezuela (SoLVe), la cual rechaza (al igual que nosotros) el acuerdo entre IBM Venezuela y el Centro Nacional de Tecnologías de Información (CNTI).

MilMazz apoyo a SoLVe Damog nos sorprende con un script escrito en Perl que genera un botón personalizado con cierto mensaje.

Para la puesta en funcionamiento del script necesitaremos en primera instancia instalar la variante gd2 del módulo en Perl que contiene a la librería libgd, ésta última librería nos permite manipular ficheros PNG.

Tanto en Debian como en su hijo Ubuntu el procedimiento es similar al siguiente:

$ sudo aptitude install libgd-gd2-perl
$ wget http://www.damog.net/files/misc/apoyo-solve-0.1.zip
$ unzip apoyo-solve-0.1.zip
$ cd apoyo-solve-0.1
$ perl apoyo-solve.perl <text>

En donde <text> debe ser reemplazado por su nombre o el de su sitio. Seguidamente proceda a subir la imagen.

Si lo desea, puede ver los diferentes banners de la campaña en contra de la gestión actual del CNTI, únase al llamado de la Asociación de Software Libre de Venezuela (SoLVe).

Los Repositorios

Contenido:

  1. Definición
  2. ¿Cómo funcionan los Repositorios?
  3. ¿Cómo establecer Repositorios?
    1. Los Repositorios Automáticos
    2. Los Repositorios Triviales
  4. ¿Cómo crear ficheros Index?
  5. ¿Cómo crear ficheros Release?
  6. ¿Cómo crear Estanques?
    1. Herramientas
  7. ¿Cómo usar los Repositorios?

Los Repositorios (definición)

Un repositorio es un conjunto de paquetes Debian organizados en un directorio en árbol especial, el cual también contiene unos pocos ficheros adicionales con los índices e información de los paquetes. Si un usuario añade un repositorio a su fichero sources.list, él puede ver e instalar facilmente todos los paquetes disponibles en éste al igual que los paquetes contenidos en Debian.

¿Cómo funcionan los repositorios?

Un repositorio consiste en al menos un directorio con algunos paquetes DEB en él, y dos ficheros especiales que son el Packages.gz para los paquetes binarios y el Sources.gz para los paquetes de las fuentes. Una vez que tu repositorio esté listado correctamente en el sources.list, si los paquetes binarios son listados con la palabra clave deb al principio, apt-get buscará en el fichero índice Packages.gz, y si las fuentes son listadas con las palabras claves deb-src al principio, éste buscará en el fichero indice Sources.gz. Ésto se debe a que en el fichero Packages.gz se encuentra toda la información de todos los paquetes, como nombre, version, tamaño, descripción corta y larga, las dependencias y alguna información adicional que no es de nuestro interés. Toda la información es listada y usada por los Administradores de Paquetes del sistema tales como dselect o aptitude. Sin embargo, en el fichero Sources.gz se encuentran listados todos los nombres, versiones y las dependencias de desarrollo (esto es, los paquetes necesitados para compilar) de todos los paquetes, cuya información es usada por apt-get source y herramientas similares.

Una vez que hayas establecido tus repositorios, serás capaz de listar e instalar todos sus paquetes junto a los que vienen en los discos de instalación Debian; una vez que hayas añadido el repositorio deberás ejecutar en la consola:

$ sudo apt-get update

Ésto es con el fin de actualizar la base de datos de nuestro APT y así el podrá “decirnos” cuales paquetes disponemos con nuestro nuevo repositorio. Los paquetes serán actualizados cuando ejecutemos en consola.

$ sudo apt-get upgrade

¿Cómo establecer Repositorios?

Existen dos tipos de repositorios: los complejos, que es donde el usuario sólo tiene que especificar la ruta base de el repositorio, la distribución y los componentes que él quiera (APT automáticamente buscará los paquetes correctos para la arquitectura correspondiente, si están disponibles), y los más simples, donde el usuario debe especificar la ruta exacta (aqui APT no hará magia para encontrar cuales de los paquetes son los indicados). El primero es más difícil de establecer, pero es más fácil de utilizar, y siempre debería ser usado para repositorios complejos y/o plataformas cruzadas; el último, es más fácil de establecer, pero sólo debería ser usado para repositorios pequeños o de una sola arquitectura.

Aunque no es realmente correcto, aquí llamaré al primero Repositorios Automáticos y al último Repositorios Triviales.

Repositorios Automáticos

La estructura del directorio de un repositorio automático con las arquitecturas estándares de Debian y sus componentes se asemeja mucho a ésto:

(tu repositorio root)
|
+-dists
  |
  |-stable
  | |-main
  | | |-binary-alpha
  | | |-binary-arm
  | | |-binary-...
  | | +-source
  | |-contrib
  | | |-binary-alpha
  | | |-binary-arm
  | | |-binary-...
  | | +-source
  | +-non-free
  |   |-binary-alpha
  |   |-binary-arm
  |   |-binary-...
  |   +-source
  |
  |-testing
  | |-main
  | | |-binary-alpha
  | | |-binary-arm
  | | |-binary-...
  | | +-source
  | |-contrib
  | | |-binary-alpha
  | | |-binary-arm
  | | |-binary-...
  | | +-source
  | +-non-free
  |   |-binary-alpha
  |   |-binary-arm
  |   |-binary-...
  |   +-source
  |
  +-unstable
    |-main
    | |-binary-alpha
    | |-binary-arm
    | |-binary-...
    | +-source
    |-contrib
    | |-binary-alpha
    | |-binary-arm
    | |-binary-...
    | +-source
    +-non-free
      |-binary-alpha
      |-binary-arm
      |-binary-...
      +-source

Los paquetes libres van en el directorio main; los que no son libres van en el directorio non-free y los paquetes libres que dependen de los que no son libres van en el directorio contrib.

Existen también otros directorios poco comunes que son el non-US/main que contienen paquetes que son libres pero que no pueden ser exportados desde un servidor en los Estados Unidos y el directorio non-US/non-free que contiene paquetes que tienen alguna condición de licencia onerosa que restringe su uso o redistribución. No pueden ser exportados de los Estados Unidos porque son paquetes de software de cifrado que no están gestionados por el procedimiento de control de exportación que se usa con los paquetes de main o no pueden ser almacenados en servidores en los Estados Unidos por estar sujetos a problemas de patentes.

Actualmente Debian soporta 11 tipos de arquitecturas; en éste ejemplo se han omitido la mayoría de ellas por el bien de la brevedad. Cada directorio binary-* contiene un fichero Packages.gz y un fichero opcional Release; cada directorio fuente contiene un fichero Sources.gz y también contiene un fichero opcional Release.

Nota que los paquetes no tienen que estar en el mismo directorio como los ficheros índices, porque los ficheros índices contienen las rutas a los paquetes individuales; de hecho, podrían estar ubicados en cualquier lugar en el repositorio. Ésto hace posible poder crear estanques.

Somos libres de crear tantas distribuciones como componentes y llamarlos como queramos; las que se usan en el ejemplo son, justamente las usadas en Debian. Podríamos, por ejemplo, crear las distribuciones current y beta (en vez de stable, unstable y testing, y que los componentes sean foo, bar, baz y qux (en lugar de main, contrib y non-free).

Ya que somos libres de llamar los componentes como queramos, siempre es recomendable usar las distribuciones estándar de Debian, porque son los nombres que los usuarios de Debian esperan.

Repositorios Triviales

Los repositorios triviales, consisten en un directorio raíz y tantos sub-directorios
como deseemos. Como los usuarios tienen que especificar la ruta a la raíz del repositorio
y la ruta relativa entre la raíz y el directorio con los ficheros indices en él, somos libres de hacer lo que queramos (inclusive, colocar todo en la raíz del repositorio; entonces, la ruta relativa simplemente sería /. Se parecen mucho a ésto:

(your repository root)
|
|-binary
+-source

¿Cómo crear ficheros Index?

dpkg-scanpackages es la herramienta con la que podemos generar el fichero Packages y con la herramienta dpkg-scansources creamos los ficheros Sources. Ellos pueden enviar sus salidas a stout; por consiguiente, para generar ficheros comprimidos, podemos usar una cadena de comandos como ésta:

$ dpkg-scanpackages arguments | gzip -9c > Packages.gz

Las dos herramientas trabajan de la misma manera; ambas toman dos argumentos (en realidad son más, pero aquí no hablaremos de eso; puedes leerte las páginas del manual si quieres saber más); el primer argumento es el directorio en cual están los paquetes, y el segundo es el fichero predominante. En general no necesitamos los ficheros predominantes para repositorios simples, pero como éste es un argumento requerido, simplemente lo pasamos a /dev/null. dpkg-scanpackages escanea los paquetes .deb, sin embargo, dpkg-scansources escanea los ficheros .dsc, por lo tanto es necesario colocar los ficheros .orig.gz, .diff.gz y .dsc juntos. Los ficheros .changes no son necesarios. Así que, si tienes un repositorio trivial como el mostrado anteriormente, puedes crear los dos ficheros indice de la siguiente manera:

$ cd my-repository
$ dpkg-scanpackages binary /dev/null | gzip -9c > binary/Packages.gz
$ dpkg-scansources source /dev/null | gzip -9c > source/Sources.gz

Ahora bien, si tienes un repositorio tan complejo como el mostrado en el primer ejemplo, tendrás que escribir algunos scripts para automatizar éste proceso. También puedes usar el argumento pathprefix de las dos herramientas para simplificar un poco la sintaxis.

¿Cómo crear ficheros Release?

Si quieres permitirle a los usuarios de tu repositorio usar el pinning con tu repositorio, entonces deberás incluir un fichero Release en cada directorio que contenga un fichero Index. (Puedes leer más acerca del pinning en el COMO APT). Los ficheros Release son ficheros de texto simple y cortos que tienen una forma muy parecida a la que sigue:

Archive: archivo
Component: componente
Origin: TuCompañia
Label: TuCompañia Debian repositorio
Architecture: arquitectura
Archive:
El nombre de la distribución de Debian. Los paquetes en éste directorio pertenecen a (o estan diseñados para), por ejemplo, stable, testing o unstable.
Component:
Aquí van los componentes de los paquetes en el directorio, por ejemplo, main, non-free o contrib.
Origin:
El nombre de la persona que hizo los paquetes.
Label:
Algunas etiquetas adecuadas para los paquetes de tu repositorio. Usa tu imaginación.
Architecture:
La arquitectura de lo paquetes en éste directorio, como i386 por ejemplo, sparc o fuente. Es importante que se establezcan Architecture y Archive de manera correcta, ya que ellos son más usados para hacer pinning. Los otros, sin embargo, son menos importantes en éste aspecto.

¿Cómo crear estanques?

Con los repositorios automáticos, distribuir los paquetes en los diferentes directorios puede tornarse rápidamente en una bestia indomable, además también se gasta mucho espacio y ancho de banda, y hay demasiados paquetes (como los de la documentación, por ejemplo) los cuales son los mismos para todas las arquitecturas.

En éstos casos, una posible solución es un estanque. Un estanque es un directorio adicional dentro del directorio raíz del repositorio, que contiene todos los paquetes (los binarios para todas las arquitecturas, distribuciones y componente y todas las fuentes). Se pueden evitar muchos problemas, a través de una combinación inteligente de ficheros predominantes (tema que no se toca en éste documento) y de scripts. Un buen ejemplo de un reposotorio “estancado” es el propio repositorio de Debian.

Los estanques sólo son útiles para repositorio grandes. Nunca he hecho uno y no creo que lo haga en un futuro cercano y ésa es la razón por la cual no se explica como hacerlo aquí. Si tu crees que esa sección debería ser añadida siéntete libre de escribir una y contáctame luego.

Herramientas

Existen varias herramientas para automatizar y facilitar la creación de ficheros Debian. A continuación son listados los más importantes:

apt-ftparchive
Es la línea de comandos de la herramienta usada para generar los ficheros indice que APT utiliza para accesar a la fuente de una distribución.
apt-move
Es usado para mover una colección de ficheros paquetes de Debian a un fichero jerárquico como el usado en el fichero oficial Debian. Éste es parte del paquete apt-utils.

¿Cómo usar los repositorios?

Usar un repositorio es muy sencillo, pero ésto depende de el tipo de repositorio que hayas creado, ya sea binario o de fuentes, automático o trivial. Cada repositorio ocupa una línea en el fichero sources.list. Para usar un repositorio binario solo tenemos que usar deb al principio de la línea y para usar un repositorio de
fuentes, en vez de deb, sólo tenemos que agregrar deb-src. Cada línea tiene la siguiente sintaxis:

deb|deb-src uri distribución [componente1] [componente2] [...]

El URI es el Identificador Universal de Recursos de la raíz del repositorio, como por ejemplo: ftp://ftp.tusitio.com/debian, http://tusitio.com/debian, o, para ficheros locales, file::///home/joe/mi-repositorio-debian/. Donde la barra inclinada es opcional. Para repositorios automáticos, tienes que especificar la distribución y uno o más componentes; la distribución no debe terminar con una inclinada.

A continuación unos ejemplos de repositorios:

deb ftp://sunsite.cnlab-switch.ch/mirror/debian/ unstable main contrib non-free
deb-src ftp://sunsite.cnlab-switch.ch/mirror/debian/ unstable main contrib non-free
deb file:///home/aisotton/rep-exact binary/
deb-src file:///home/aisotton/rep-exact source/

Donde los dos primeros se corresponden con repositorios de tipo Automático y los dos últimos Triviales.

Lista de paquetes en la distribución estable de Debian.

Lista de paquetes en la distribución testing de Debian

Lista de paquetes en la distribución inestable de Debian

Artículo original Debian Repository HOWTO por Aaron Isotton

El fichero sources.list

La mayoría de los entusiastas de sistemas Linux, tarde o temprano llegan a toparse con ésta interrogante. En una forma bastante general, podríamos definir a éste fichero como la lista de recursos de paquetes que es usada para localizar los ficheros del sistema de distribución de paquetes usado en el sistema. Este fichero de control está ubicado en la carpeta /etc/apt/ de nuestro sistema. El fichero es un simple documento de texto sencillo que puede ser modificado con cualquier editor de textos.

Dentro de éste fichero nos vamos a encontrar una serie de líneas, que no son más que las procedencias de los recursos ubicados en los repositorios que elijamos. Éstas líneas de procedencias tienen una forma general que es: tipo, uri, distribución y complementos.

Entonces, las formas generales de las líneas de procedencias sería así:

deb uri distribución [componente1] [componente2] [...]
deb-src uri distribución [componente1] [componente2] [...]

¿Qué debo saber sobre el sources.list?

Debemos tener en cuenta varios aspectos sobre éste fichero tan importante. Por ejemplo, hay algo que muchos no saben e ignoran, y es que ésta lista de procedencias está diseñada para soportar cualquier número y distintos tipos de procedencias, por supuesto, la demora del proceso de actualización de la base de datos del APT va a ser proporcional al número de procedencias, ya que mientras más procedencias, mayor es la cantidad de paquetes a añadir a la base de datos, y también va a durar un poco más de tiempo, dependiendo de nuestra velocidad de conexión.

El fichero lista una procedencia por línea, con la procedencia de mayor prioridad en la primera línea, como por ejemplo, cuando tenemos los paquetes en discos CD-ROM, entonces ubicamos éste de primero. Como ya mencioné, el formato de cada línea es:

tipo  uri  distribución complementos

Donde:

tipo

Determina el formato de los argumentos, que pueden ser de dos tipos: deb y deb-src. El tipo deb hace referencia a un típico archivo de Debian de dos niveles, que son distribución y componente, sin embargo, el tipo deb-src hace referencia al código fuente de la distribución y tiene la misma sintaxis que las de tipo deb. Las líneas de tipo deb-src son necesarias si queremos descargar un índice de los paquetes que tienen el código fuente disponible, entonces de ésta forma obtendremos los códigos originales, más un fichero de control, con extensión .dsc y un fichero adicional diff.gz, que contiene los cambios necesario para debianizar el código.

uri

Identificador Universal de Recursos, ésto es, el tipo de recurso de la cual estamos obteniendo nuestros paquetes. Pero ¿Cuáles son los tipos de uri que admite nuestra lista de procedencias? A continuación hago mención
de las más populares, por así decirlo:

CD-ROM:

El cdrom permite a APT usar la unidad de CD-ROM local. Se puede usar el programa apt-cdrom para añadir entradas de un cdrom al fichero sources.list de manera automática, en modo consola.

FTP:
Especifica un servidor FTP como archivo.
HTTP:
Especifica un servidor HTTP como archivo.
FILE:
Permite considerar como archivo a cualquier fichero en el sistema de ficheros. Esto es útil para particiones montadas mediante NFS (sistema de ficheros usado para montar particiones de sistemas remotos) y réplicas locales.
distribución

Aquí especificamos la distribución en la cual estamos trabajando, bien sea Debian, Ubuntu, Kubuntu, Gnoppix,Knoppix y otras, basadas en sistemas Debian GNU/Linux. distribución también puede contener una variable, $(ARCH), que se expandirá en la arquitectura de Debian usada en el sistema (i386, m68k, powerpc,…). Esto permite que sources.list no sea dependiente de la arquitectura del sistema.

Por lo general esta característica sólo es importante si se especifica una ruta completa, de lo contrario APT generará automáticamente la uri con la arquitectura actual del sistema.

componentes

Los componentes son los tipos de repositorios clasificados según las licencias de los paquetes que contienen. Dentro de los componentes tenemos main, contrib y non-free, para usuarios Debian; sin embargo para usuarios Ubuntu, por ejemplo, también existen universe, multiverse restricted. Ahora la decisión de cuales repositorios utilizar, eso va más allá de lo pueda ser explicado acá, ya que eso le concierne a su persona.

Entonces, la forma de una línea de procedencias quedaría algo así:

# deb http://security.ubuntu.com/ubuntu breezy-security main restricted
# deb-src http://security.ubuntu.com/ubuntu breezy-security main restricted

Ahora bien, se preguntarán ¿Por qué el carácter # (almohadilla) al principio de la línea? Bueno, la respuesta es muy simple. Éste caracter se utiliza para indicarle al APT cuando ignorar, por así decirlo, las líneas que contengan dicho caracter al principio, pues lo que hace en realidad es tomarlas como comentarios de lenguaje y simplemente no las interpreta, por lo tanto, si queremos que el APT tome o no en cuenta una línea de procedencias, entonces quitamos o añadimos el caracter, respectivamente.

Nota del autor: Algunas partes de este artículo fueron tomadas del manual de Debian.

Seleccionando el mejor mirror para debian

El día de ayer decidí instalar Debian Sarge en uno de los ordenadores de casa, la instalación base de maravilla, luego procedi a levantar el entorno gráfico de GNOME haciendo uso de aptitude, deje de lado muchas aplicaciones que no voy utilizar extensivamente. Mientras intento solucionar un problemita con el sonido me dispuse a indagar acerca de los repositorios que ofrece Debian.

Leyendo la lista de mirrors en el sitio oficial de Debian se me ocurrio que debia existir una manera de medir la rapidez de cada uno de ellos, quizá para muchos esto no es nuevo, para mí si lo es, recien comienzo con esta distro, aunque aún mantengo Ubuntu (no se preocupen mis dos o tres lectores que seguiré escribiendo acerca de esta excelente distro). Bueno, he hecho uso de apt-spy, este paquete hace una serie de pruebas sobre los mirrors de debian, midiendo la su ancho de banda y su latencia.

El paquete apt-spy por defecto reescribe el fichero /etc/apt/sources.list con los servidores con los resultados más rápidos.

Para instalarlo simplemente hacer lo siguiente:

# aptitude install apt-spy

Leyendo el manual de esta aplicación se puede observar que existe la opción de seleccionar a cuales mirrors se les harán las pruebas de
acuerdo a su localización geográfica.

Por ejemplo:

# apt-spy -d stable -a South-America -o mirror.txt

Lo anterior genera un fichero fichero, cuyo nombre será mirror.txt, la opción -a indica un área, esta opción acepta los valores siguientes: Africa, Asia, Europe, North-America, Oceania y South-America, aunque es posible definir sus propias áreas. La opción -d indica la distribución, esta opcion acepta los valores siguiente: stable, testing o unstable.

He obtenido como resultado lo siguiente:

milmazz@nautilus:~$ cat mirror.txt
deb http://ftp.br.debian.org/debian/ stable main
deb-src http://ftp.br.debian.org/debian/ stable main
deb http://security.debian.org/ stable/updates main

También he realizado una segunda prueba.

# apt-spy -d stable -e 10 -o mirror.txt

Obteniendo como respuesta lo siguiente:

milmazz@nautilus:~$ cat mirror.txt
deb http://ftp.tu-graz.ac.at/mirror/debian/ stable main
deb-src http://ftp.tu-graz.ac.at/mirror/debian/ stable main
deb http://security.debian.org/ stable/updates main

La opción -e es para detener el análisis después de haber completado 10 (o el número entero indicado como parámetro en dicha opción) servidores.

Me he quedado con los mirrors de Brazil (los mostrados en la primera prueba) por su cercanía geográfica, los del segundo análisis resultan ser de Austria y entran en la categoría de mirrors secundarios.