Buscar e instalar software que no está en los repositorios de Debian, desde Debian
Como todos sabemos, uno de los mayores logros de Debian es su sofisticado y completo sistema gestor de paquetes .deb, que cubre un amplio espectro de soluciones a diferentes necesidades mediante programas como dpkg, dselect, aptitude, synaptic, apt o alien. Ha contribuido tanto al éxito de la distribución que a veces uno olvida que existen alternativas menos conocidas, no basadas en los archivos deb, pero que también permiten instalar software de modo avanzado desde Debian. Su rango de acción empieza allí donde acaba el de los programas citados anteriormente: Las "colecciones temáticas" de software libre fuera de los repositorios en los que se ofrece lo último de lo último antes de que sea empaquetado y entre en Sid.
1 - Obtener nuevos módulos de PERL
Empezaremos con un comando que nos permite acceder a más de 50.000 paquetes adicionales y viene instalado por defecto. Para usarlo simplemente abriremos un terminal y escribiremos: cpan
Esto nos abrirá una interfaz especial con CPAN, una extensa colección gratuita de software con más de 300 mirrors dedicado específicamente a módulos y extensiones de PERL. Las opciones de la interfaz nos recordarán inmediatamente a las de apt-get y su uso es de hecho bastante similar
cpan [1]> reload index
cpan [1]> upgrade (actualiza todos los módulos*)
cpan [1]> clean
cpan [1]> install un_modulo
Muchos de los módulos estarán ya empaquetados en debian, pero podemos consultar las últimas novedades disponibles y obtener una breve descripción con:
> install Text::Glob (si no lo tenemos instalado ya)
> recent
Como cualquier gestor de paquetes avanzado cpan también maneja las dependencias, y nos preguntará si queremos instalarlas también junto al módulo.
---- Unsatisfied dependencies detected during ----
---- BIN/un_modulo-0.4.tar.gz ----
otro::Modulo [requerido]
Shall I follow them and prepend them to the queue of modules we are processing right now? [yes] Luego descarga, compila e instala todo lo necesario automáticamente desde la red. Lo descargado estará en la carpeta oculta ~/.cpan, aunque podemos especificar otro directorio corriendo 'o conf init' en modo manual.
Cpan es bastante interactivo y pregunta al usuario siempre que haya varias opciones disponibles. Por ejemplo diferencia entre las dependencias que se necesitan sólo durante la compilación (y pueden ser eliminadas posteriormente) y aquellas que se necesitarán durante el uso normal del modulo, dejando al usuario la decisión de instalarlas permanentemente o eliminarlas una vez acabada la función para ahorrar espacio. También preguntará si deseamos actualizar un módulo a una versión superior. Para salir de cpan escribiremos q.
mi/path/mi_dependencia-0.8.tar.gz is just needed temporarily during building or testing. Do you want to install it permanently? [yes]- Hay que recordar que actualizar o toquetear mucho nuestro Perl puede tener consecuencias desagradables para el resto de la distro, ya que Debian requiere tener un Perl correctamente instalado y operativo para funcionar correctamente.
2 - Obtener nuevos paquetes y funciones estadísticas para GNU-R
El almacén de módulos para GNU-R se llama CRAN, allí encontraremos las últimas funciones disponibles para éste programa estadístico. Debian incorpora actualmente 160 paquetes opcionales con extensiones de R (podemos verlos con apt-cache search r-cran*) pero instalar un módulo nuevo desde R que no esté incluido aún es realmente sencillo, basta con abrir un terminal de R (con el comando de bash R) y teclear.
> update.packages()
> install.packages()
Se abrirá una ventana que nos permitirá elegir un mirror de CRAN para esa sesión y luego otra con un listado de todas las bibliotecas disponibles donde podremos elegir una de ellas para instalarla*. Si no somos root se nos sugerirá un directorio personal alternativo en nuestro home en donde descargar el material, generalmente un subdirectorio de ~/R. El programa se encargará limpiamente del resto incluida la compilación e instalación del paquete y sus dependencias.
- Si deseamos instalar varios paquetes simultáneamente también podemos simplemente pasarle la lista como un vector estándar: install.packages(c(paquete1,paquete2,paquete3,paquete4))
Es importante recordar que los paquetes instalados no estarán disponibles hasta que sean cargados con el comando library(nombre_del_paquete) en R. Una vez hecho ésto podrá detectarlo y ya podremos trabajar con el o acceder a su documentación.
3 - Safari de huevos de serpiente
Llegado a éste punto la cosa empieza a ponerse algo rara, vamos con la tienda de quesos en la que podremos agenciarnos un buen número de huevos de Python...
Un huevo de python (archivo .egg) es al lenguaje Python lo que un paquete .deb a Debian, conteniendo módulos adicionales para dicho lenguaje y su documentación. Salvando la diferencia de que éste lugar no ofrece archivos tar.gz y que los huevos se autocompilan (para instalarlos basta ejecutarlos en una shell como cualquier script de bash) la "tienda de quesos" o Python Package Index es equivalente en todo a las demás colecciones y permite descargar más de 13000 programas* o subir nuestros propios módulos de python en forma de huevo.
Un buen modo de acceder a pypi desde Debian es con el comando:
$ pypibrowser
que nos permitirá examinar, buscar y filtrar las extensiones disponibles para Python. Para ello tendremos que instalar previamente el paquete .deb del mismo nombre.

Conexión a pypi, cpan y cran desde gnome.
4 - Obtener programas y extensiones para Haskell y Ruby
El repositorio para programas de Haskell se denomina Hackage, mientras que el de Ruby se denomina rubygems. Para interactuar con hackage desde Debian tenemos disponible el paquete .deb cabal-install que nos proporciona el comando cabal. Su uso desde un terminal es bastante intuitivo y más o menos similar a cpan o apt*, para no extenderme mucho simplemente pondré algunos ejemplos:
$ cabal update (actualiza la lista de paquetes disponibles)
$ cabal list (muestra todos los paquetes disponibles)
$ cabal list desktop (busca dentro de la lista de paquetes aquellos que tienen la palabra clave de ejemplo "desktop", obtendríamos:
* gnome-desktop
Synopsis: Randomly set a picture as the GNOME desktop background
Default available version: 1.0.0.0
Installed versions: [ Unknown ]
License: GPL$ cabal install bio (instala el paquete de bioinformatica bio)
$ cabal info york-lava (muestra información más extensa sobre el paquete para describir circuitos york-lava)
Una caracteristica curiosa es que todo lo que instalemos quedará bajo el directorio ~/.cabal pero ordenado de un modo similar al sistema de ficheros de Debian, con sus correspondientes subdirectorios bin o lib.
Interacionar con rubygems es muy similar, para ello debemos instalar el paquete deb rubygems y escribir en un terminal el comando gem con las correspondientes opciones. Se usa de modo similar a cabal

Conexión a hackage y rubygems y aspecto de un archivo dtx.
- Hackage es bastante reciente y su gestión de dependencias no es óptima, al menos me ha fallado a menudo al usarlo desde Debian
5 - El repositorio de TEX
No deberíamos acabar sin mencionar a uno de los repositorios más famosos tanto por tamaño como por razones históricas: CTAN, que recoge todo lo relacionado con la galaxia TeX, metafont y planetas asociados. Este repositorio fue el primero en aparecer y sirvió como modelo al resto, de ahí la similaridad que presenta su nombre con el de otros repositorios, sin embargo lo trato en último lugar porque no presenta un sistema para conectarlo directamente a nuestro sistema. De hecho esto es bastante innecesario porque Tex es tan complejo que se distribuye regularmente como una mini-distro (texlive) que a todos los efectos incluye a todos los paquetes del repositorio disponibles para linux. De todos modos la lista de repositorios no quedaría realmente completa si no lo mencionáramos.
- La tradición de distribuir tex de éste modo partió de la iniciativa de los miembros de asociaciones como la TeX Users Group que regularmente distribuye el contenido de todo el repositorio para las diferentes arquitecturas en forma de DVD entre sus socios.
CTAN tiene sus propios modos de hacer las cosas y es interesante comentarlos brevemente; de entrada los programas se escriben y compilan desde el propio lenguaje. A menudo una vez descargado y abierto el tar.gz, en vez del clásico makefile encontraremos simplemente un archivo con extensión .dtx, que es el formato nativo de latex para los paquetes. Lo único que deberemos hacer en esos casos para instalarlo es correr ese archivo con Latex lo cual generará a la vez la documentación* y las fuentes, incluyendo archivos pdf, archivos de estilo .sty y cualquier otra cosa que necesite el programa y luego mover los archivos obtenidos a donde tex pueda encontrarlos (generalmente algún subdirectorio de /usr/share/texmf).
La documentación en el formato .dvi.gz es bastante habitual, el visor nativo xdvi es capaz de descomprimirlos al vuelo y volver a comprimirlos posteriormente sin necesidad de nuestra intervención. Por lo que respecta a los pdf es obligatorio que puedan ser generados desde las fuentes, así que a menudo sólo aparecen tras correr el .dtx. En cualquier caso dtx tiende a ser abandonado poco a poco y cada vez es más frecuente encontrar archivos .tex, makefiles, ejecutables .py, etc... dentro de los paquetes de CTAN
Al igual que en el caso de gnu-r para poder usar los paquetes debemos cargarlos previamente en el preámbulo del archivo .tex (con \usepackage(paquete1,paquete2 ... ) y vigilar el órden en que los cargamos porque no todos son compatibles entre sí.
6 - Otros
Existen otros repositorios similares a los anteriores pero que no están integrados con Debian, por citar algunos tenemos a humps (repositorio de Ocaml), CEAN (extensiones para erlang) o CCAN (específica de C).
Todos estos repositorios son de uso público y normalmente admiten no solo descargar sino también subir nuestros propios trabajos personales para compartirlos con otros usuarios de los programas. Para ello usaremos paquetes como libpan-uploader-perl para cpan, comandos como cabal upload para hackage o tendremos que registrarnos en la web, leer los requisitos de formato para los paquetes y subirlos desde allí como en el caso de pypi o ctan. En todos los casos serán examinados y aprobados antes de decidir si se incorporan a sus respectivos repositorios.
Buenas!
Muchas gracias pvaldes por la información. Desconocía la existencia de todos, excepto del CPAN. Me parece que la tienda de quesos va a tener nuevo cliente :-)
Salud,
barbolbin.
Me alegro de que te sea útil Barbolbin, un saludo.
Muchas gracias por este artículo, con el cual me has mostrado cosas que por completo ignoraba. Así que ahora te culpo porque pasaré menos tiempo alejado de mi equipo, y más tiempo leyendo y probando lo mostrado por ti, grrrr.
Un abrazo,
Sidd.
Muy buena informacion que desconocia por completo. Muchas gracias por ella
Están muy bien estás colecciones, la única que conocía era la de perl.

Puede que a partir de ahora me divierta a ratos con Hackage.
Gracias a todos por los comentarios
Están muy bien estás colecciones, la única que conocía era la de perl.
Puede que a partir de ahora me divierta a ratos con Hackage.
si te apetece jugar con haskell quizás quieras correr
cabal install cheatsheet, crea un pdf con una chuleta resumen de las principales características del lenguaje haskell
[...]si te apetece jugar con haskell quizás quieras correr
cabal install cheatsheet, crea un pdf con una chuleta resumen de las principales características del lenguaje haskell
Gracias, la verdad es que al principio las cheatsheet vienen muy bien, una vez tuve un directorio entero con aproximadamente 50 cheatsheets
.