martes, 4 de marzo de 2008

* APT-IMAGEN

¿ Quieres instalar algún paquete Debian en un PC sin conexión a internet ?
¿ Quieres actualizar tu Debian y tu conexión es muy lenta ?

En Chile, aún hay mucha gente que no tiene una conexión a internet lo cual hace que la instalación de paquetes o la actualización de su distribución sea mucho más complicada.

Podríamos pensar en bajar el paquete desde otro PC con una buena conexión a internet usando opciones de apt tales como 'apt-get --download-only --reinstall install paquete' lo cual bajará el paquete y las dependencias de éste que aún no estén instaladas en el sistema. Sin embargo, al llevar los paquetes al equipo sin red ( copiándolos desde '/var/cache/apt/archives' a un pendrive, cdrom, etc) podemos encontrarnos con que el estado de los paquetes de nuestro PC no es el mismo que el del equipo remoto, las versiones de los paquetes instalados puede que no sean las mismas. Podría suceder, además que no se hayan bajado todas las dependencias necesarias, ya que en el equipo remoto puede que ya hayan sido instaladas con anterioridad pero en el PC sin red no.
En resumen, podemos encontrarnos con problemas de versiones y dependencias que no nos resultarán muy agradables. Además, podría suceder que el S.O. del PC sin red fuese un Debian GNU/Linux rama ETCH y el remoto fuese de la rama LENNY o SID.

En fin, la instalación offline se hace un tanto complicada, por lo cual desarrollé mi propio script para salir del paso, y facilitar un poco esta tarea.

El script se puede bajar desde aquí .

Requerimientos :
- S. O. Debian/GNU Linux u otro derivado de éste que posea el mismo sistema de paquetes APT.
- Bash 2.0 o superior.

¿ Cómo se usa apt-imagen ?

Supongamos que deseamos instalar los paquetes postfix, lshw y heartbeat en el PC de casa, pero no tenemos internet.
Recuerde que para usar apt-imagen debe hacerlo como superusuario:

Paso 1) Primero creamos el directorio imagen que contendrá toda la información del estado del sistema de paquetes de nuestro debian de casa sin conexión a internet (host1). Esta imagen se creaerá usando la acción 'imagen' de apt-imagen:
(Supongamos que tenemos nuestro script en la carpeta /root )
#cd /root
#sh apt-imagen imagen "/root/apt.img-host-cristian"
Esto creará un directorio imagen '/root/apt.img-host-cristian' conteniendo toda la información de estado del sistema de paquetes de host local.

Paso 2) Debemos copiar el script 'apt-imagen' y el directorio imagen a un pendrive, un cdrom, u otro medio ...

Paso 3) Llevamos esta información a otro equipo (host2) con debian y la copiamos a alguna carpeta, por ejemplo, la carpeta '/root' del equipo remoto.

Paso 4) A continuación, en el host2, actualizamos la lista de paquetes desde los repositorios al directorio imagen del host1:
#cd /root
#sh apt-imagen update "/root/apt.img-host-cristian"

Paso 5) Luego, bajamos desde el host2 los paquetes que luego podremos instalar en el host1, los cuales quedarán guardados en el directorio imagen:
#sh apt-imagen bajar "/root/apt.img-host-cristian" postfix lshw heartbeat

Paso 6) Nos llevamos el nuevo directorio imagen al host1 usando nuestro pendrive u otro medio.

Paso 7) Instalamos los paquetes en nuestro host1 local:

#cd /root
#sh apt-imagen install "/root/apt.img-host-cristian-new" postfix lshw heartbeat

Donde "/root/apt.img-host-cristian-new" es la nueva carpeta imagen con los paquetes incluido que en el Paso 6) transportamos desde el host2 al host1.

Y con esto los paquetes quedarían instalados correctamente.
En el Paso 7) también podríamos haber ejecutado apt-imagen sin indicar ningún paquete, y en este caso el script asumiría que se desea instalar todos los paquetes que estań en el directorio imagen.

Si quisieramos actualizar todos los paquetes del host1 local tendríamos que hacer lo mismo, pero en el Paso 5) no deberíamos indicar ningún paquete, en este caso, el script 'apt-image' asumirá que se quiere actualizar todos los paquetes del sistema ( analogo apt-get upgrade ) de manera que procederá a bajar las versiones actualizadas de todos los paquetes del host1 en el directorio imagen: #sh apt-imagen bajar "/root/apt.img-host-cristian". Bueno, y en el paso siete no deberíamos indicar ningún paquete para actualizarlos todos y así realizar un correcto upgrade del sistema en el host1.

Finalmente, recomiendo, después de haber realizado todos los pasos anteriores borrar o mover los directorios imagen inicial y final y crear uno nuevo como en el Paso 1), y copiarlo a un pendrive para poder llevarlo a todas partes. De esta forma, si estas en un PC con conexión internet y te encuentras con algún paquete interesante y lo quieres instalar en casa, te lo llevas usando 'apt-imagen' sin preocuparte por el tema de las versiones y las dependencias de éste.

Espero que a más de alguno le pueda servir este script, y si tienen algún comentario o reporte de falla favor de escribirme a : cmunox@gmail.com

Saludos, y no olviden debianizarse y mineralizarse ...