Aug 1, 2009

Sushi, huh?: Descargando paquetes para GNU/Linux sin internet



El sistema GNU/Linux se hace año a año cada vez mas conocido entre usuarios de internet y no es raro que de búsqueda en búsqueda nos encontremos con alguna pagina que mencione al pingüino. A su vez no es raro que un usuario que solo a visto Windows toda su vida le de curiosidad por probar el nuevo sistema operativo, y todos los programas que están disponibles para el. En un caso normal(con conexión a Internet), el usuario solo nesecitaria saber que tiene que abrir un programa llamado synaptic, aptitude, rpmdrake, yast, etc. o el que venga con la distribución elegida, seleccionar el programa que quiere instalar y darle al botón de instalar. ¿Pero que pasa cuando el usuario no dispone de conexión a Internet? El usuario recién llegado podría pensar, basándose en tu anterior experiencia con los sistemas Windows, que con bajar el archivo con el nombre del programa y de extencion .deb o .rpm(de acuerdo a la distro elegida), bastara para instalar el programa, pero la manera de instalar programas en GNU/Linux es completamente diferente.

Los paquetes de instalación en el pingüino están pensados para:

  1. que los módulos y librerías(parecidas a las .dll's de Windows) que utiliza un programa también pueda utilizarlo otro programa y de esta manera evitar consumir mas espacio en disco y evitar que los programadores tengan que reescribir una funcionalidad que ya existe.
  2. que al instalar un nuevo programa, este no pise algún archivo que otros programas podrían estar utilizando, por ende estos programas que dependían de esa librería/modulo dejarían de funcionar. Imaginen que ese archivo que pisa el nuevo programa forma parte del sistema base, entonces el sistema se volvería inestable, errático, o dejaría de funcionar.
  3. que los paquetes de instalación que contienen estos programas ocupen muy poco espacio dentro de los servidores que los contienen. Esto es también muy bueno para el usuario porque solo descarga lo mínimo necesario.
A veces este programa se divide en varios paquetes que a su vez estos paquetes se vuelven a dividir en mas paquetes, formando lo que se llama un árbol de dependencias.


El usuario solo a querido instalar el programa A pero a tenido que descargar e instalar 12 paquetes adicionales, de esto normalmente se encargarían los administradores de paquetes como synaptic, aptitude, rpmdrake, yast, etc. los encargados de resolver la maraña de paquetes pero estos solo funcionan en GNU/Linux y requieren conexión a Internet. ¿Entonces que tal si pudiéramos utilizar un programa que brinde una experiencia similar a la que brindan estos programas? ¿Que pudiéramos llevarlo en un pendrive? ¿Que pudiéramos descargar todo lo que necesitamos en unos pocos clicks? ¿Que sea realmente fácil de usar para un usuario que recién comienza con GNU/Linux? Y lo mas importante, ¿que funcione en Windows? Por estas mismas razones es que he decidido crear Sushi, huh?. Sushi, huh? no es un programa dedicado a los usuarios con experiencia, gurus, desarrolladores, élites, ni nada por el estilo, si no a los usuarios que recién llegan a GNU/Linux, al usuario que lo quiere todo fácil y en un click, sin usar la consola, sin usar un lenguaje complicado, con la mayor abstracción posible y que soporte las distros mas completas y populares. Sushi, huh? se encuentra actualmente en su versión 0.5.2 en estado Beta pero lo suficientemente estable y usable, como para un uso diario. Actualmente solo hay soporte para Mandriva, openSUSE, Ubuntu, Debian y Fedora. Sushi, huh? ya viene empaquetado junto con Python para funcionar bajo Windows XP, sistema con el que mas comúnmente nos encontraremos dentro de un cyber, o tener instalado Python, el cual viene pre instalado bajo cualquier distribución de GNU/Linux decente. Ademas Sushi, huh? no es solo para actualizaciones como se a mensionado en otras paginas, es una suit completa, util tambien para bajar paquetes de repositorios normales, para que luego no tengas que descargar un DVD de 4GB. Sushi, huh? tampoco es un software de origen español es Argentino, le joda a quien le joda, pero no me opongo si algun español quiere trabajar en el proyecto :). Dentro de la carpeta ./sushi-huh/src, bajo Windows hacemos doble click en en sushi-huh.bat, y en GNU/Linux abrimos una consola y escribimos python sushi_huh.py.
Sushi, huh? es realmente muy fácil de configurar, nos pedirá que le ingresemos la distribución, versión, release, y en algunos casos, el espejo desde donde bajara los paquetes. Para configurar Sushi, huh? necesitamos estar conectados a Internet.
Luego seleccionamos las secciones que queremos habilitar
Y ya estamos listos para usar Sushi, huh?
Antes de descargar cualquier paquete es recomendable sincronizar Sushi, huh? con su distribución desde su computadora. Aunque la sincronizacion no es obligatoria, es recomendable ralizarla para evitar que Sushi, huh? descargue paquetes basura, o sea paquetes que ya se encuentran disponibles en su distribución.
Las opciones disponibles son:
  1. Transferir los paquetes disponibles desde el pendrive hasta la computadora. Ya habiendo descargado los paquetes en el cyber y estando de vuelta en casa, esta opción nos permite enviar de una tacada todos los archivos desde el pendrive hasta el home del usuario(una carpeta oculta llamada .sushi-huh). Esta opción en mucho mas rápida que la clásica opción de copiar y pegar.
  2. Chequear los paquetes corruptos. Esta opción viene desactivada por defecto debido a que puede llegar a tardar mucho tiempo porque realiza un chequeo a bajo nivel, a partir de los paquetes transferidos a la computadora. Los paquetes corruptos los elimina del disco y los anota dentro de la lista de pendientes.
  3. Chequea los paquetes ya descargados. Busca dentro de la carpeta .sushi-huh dentro de tu home todos los paquetes y los agrega a la lista de descargados. Los repositorios deben tener la misma estructura de carpetas que la soportada por la versión actual. Para su seguridad, todavía no hay planes de cambiar esta estructura, la cual no es compatible con versiones anteriores(< 0.4.0)
  4. Configuración automática del administrador de paquetes. Esta opción actualizara o agregara los repositorios descargados a synaptic, aptitude, rpmdrake, yast, etc. de acuerdo a la distribución elegida.
  5. Chequear las dependencias disponibles. Esta opción es la mas importante y debe ser ejecutada antes de realizar cualquier descarga. Sushi, huh? chequea todas las dependencias disponibles y las anota dentro de un archivo llamado provides.lst dentro de la carpeta settings. Con esta lista Sushi, huh? sabe que paquetes descargar y cuales no, evitando descargar paquetes innecesarios.
Una vez realizados estos pasos ya podra descargar todos los paquetes que desee. En el ejemplo se muestra a Sushi, huh? descargando el juego de carreras Vdrift.


Espero que esta información les haya sido de utilidad. Se aceptan todo tipo de comentarios. Y si esta información les resulto útil entonces hagan copy & paste (no espamico) a todos aquellos sitios que crean que puede ser de utilidad.

11 comments:

  1. Oh que bueno, eso simpificará mucho las cosas en cada distro. Te felicito.

    ReplyDelete
  2. se ve bien, se ve muy bien. Como recomendación, podrías ponerlo en un server y hacerlo público, de esa forma no es necesario que el usuario instale software, y pueda obtener los paquetes y librerías.

    ReplyDelete
  3. Muchas gracias.

    La verdad es que había pensado en partir Sushi, huh? y hacerlo mitad software descargable y mitad pagina web pero el problema radica en que el procesamiento de los datos, ejemplo resolución de dependencias, tendría que hacerse dentro de los servers de sourceforge, y eso significa hacer un uso intensivo de los mismos y no estoy seguro de que sourceforge lo permita.

    Ademas habría que manejar parte de las acciones mediante una jvm, la cual no siempre viene instalada dentro de un WinXP de la computadora de un cyber.

    En todo caso habría que habría que seguir perfeccionando mas el código, y aun tengo algunos ases bajo la manga ;)

    ReplyDelete
  4. problema al ejecutar python sushi_huh.py

    /media/disk/sushi-huh/src# python sushi_huh.py
    Your IP is 127.0.1.1

    Calling webbrowser...
    Webbrowser ready.

    If the webbrowser wasn't appear but you are sure is available,
    open the webrowser and then copy & paste this url:

    http://localhost:7874/

    No protocol specified

    (gnome-www-browser:4597): Gtk-WARNING **: cannot open display: :0.0

    ReplyDelete
  5. Perdón, tengo Debian Lenny

    ReplyDelete
  6. >No protocol specified

    >(gnome-www-browser:4597): Gtk-WARNING **: cannot open display: :0.0

    Ese mensage aparese por lo general cuando ejecutas Sushi, huh? como root.
    Abri el nevegador web que estes usando y escribi:

    http://localhost:7874/

    ReplyDelete
  7. Vale, tienes razón, siempre lo ejecutaba como root, como usuario si me entra, gracias

    ReplyDelete
  8. Te felicito por el programa, pero no entiendo por que dices que te niegas a que un español ayude al desarrollo de programa.

    ¿No mataría esto el espíritu del software libre? En fin, es cosa tuya.

    ReplyDelete
  9. ???
    Y yo cuando dije eso?
    Cualquiera es libre de participar en el desarrollo del programa.

    ReplyDelete
  10. Hola, tu proyecto me parece estupendo, pero cuando trato de ingresar desde Windows, aparece esto:
    Traceback (most recent call last):
    File "F:\sushi-huh\src\il_cuore\lib\sushi_huh_PyHP.py", line 99, in __init__
    exec(python_script, globals(), locals())
    File "", line 33, in
    ImportError: No module named sushi_huh_INIFile

    No se a que se deba el error.

    ReplyDelete
    Replies
    1. Ya no trabajo en Sushi, huh?, actualmente estoy trabajando en Webcamoid y Carnival-LiveCam. Ya pasaron más de 3 años y necesitaría varios meses (y hasta casi un año) para ponerlo al día, y prefiero destinar ese tiempo a mis otros proyectos.

      Delete