Actualizar repositorios de una máquina sin acceso a internet | Algo de Linux

jueves, 2 de octubre de 2008

Actualizar repositorios de una máquina sin acceso a internet

Hay varias formas de instalar y actualizar paquetes en un ordenador sin internet. Una de ellas es usar synaptic, marcando los paquetes que deseamos instalar o actualizar y después generando un script que llevamos a otro ordenador con internet para descargar los paquetes que luego instalaremos en nuestro equipo sin internet (Ya veremos cómo hacer ésto en otro post).

Lo que no es sencillo es mantener actualizados los repositorios del ordenador sin conexión a internet para poder descargar software reciente.

A continuación pego un enlace al fichero que contiene los scripts que he usado en ocasiones para tal fin:
http://dl.dropbox.com/u/5004198/actualizarepositorios.tar.gz 



¿Cómo usarlo?
Primero, descargarmos el fichero actualizarepositorios.tar.gz haciendo clic sobre el enlace anterior.
Una vez descargado, lo copiamos a un pendrive (es lo más cómodo) y lo descomprimimos allí:

# tar xfvz actualizarepositorios.tar.gz

Se nos creará una carpeta llamada actualiza_repositorios con dos scripts:
  • exporta_repositorios.sh. Lo usamos en la máquina con acceso a internet.
  • importa_repositorios.sh. Lo usamos en la máquina sin acceso a internet.
Nos situamos en el directorio donde se encuentra montado en pendrive.

Después copiamos el fichero /etc/apt/sources.list de la máquina que no tiene internet a la carpeta actualiza_repositorios. Ésto es importante, porque el script exporta_repositorios busca el fichero sources.list en el mismo directorio donde se encuentra el script.

# cp /etc/apt/sources.list actualiza_repositorios/

Desmontamos el pendrive en el ordenador que no tiene acceso internet y nos lo llevamos al equipo que sí tiene.

Ahora montamos el pendrive en el ordenador con conexión a internet, nos situamos en el directorio actualiza_repositorios y ejecutamos el script exporta_repositorios.sh:

# sh exporta_repositorios.sh

Cuando el script termine, encontraremos en el directorio actualiza_repositorios un fichero llamadorepositoriosact.tar.gz que contiene los índices de los repositorios actualizados.

El siguiente paso será desmontar el pendrive, y montarlo en el equipo que no tiene conexión a internet.

Una vez montado el pendrive en el ordenador sin conexión a internet, nos situamos en el directorio actualiza_repositorios y ejecutamos el script importa_repositorios.sh:

# sh importa_repositorios.sh

Este script copiará los índices de los repositorios actualizados al ordenador sin conexión a internet.

A continuación pego el texto de ambos scripts por si hubiera algún problema para descargarlos:

exporta_repositorios.sh

#!/bin/bash
#
# exporta_repositorios.sh
#
# Ejecutar este script en la máquina con internet.
# Poner el fichero sources.list del ordenador sin internet en el mismo lugar
# que este script.
# El directorio con los índices quedará en la carpeta listas, en el mismo
# lugar que este script.

directorioscript=`pwd`

# Hacemos copia de seguridad de los repositorios de la máquina
mv /etc/apt/sources.list /etc/apt/sources.list.original

if [ -d /var/lib/apt/lists.original ]; then
rm -r /var/lib/apt/lists.original
fi
mv /var/lib/apt/lists /var/lib/apt/lists.original

# Creamos los directorios necesarios para almacenar los índices
mkdir /var/lib/apt/lists
mkdir /var/lib/apt/lists/partial

# Copiamos la lista de repositorios de nuestro ordenador sin internet
if [ -f sources.list ]; then
cp sources.list /etc/apt/
else
echo "Fichero sources.list no encontrado en $directorioscript/"
echo "Recuerde que debe copiar el fichero sources.list de la máquina sin internet en el directorio actualiza_repositorios"
exit
fi

# Actualizamos las listas de paquetes para generar los índices
apt-get update && cd /var/lib/apt/ && tar cvvfz repositoriosact.tar.gz lists && mv repositoriosact.tar.gz $directorioscript/

# Volvemos a dejar los repositorios como estaban en la máquina con acceso a internet
mv /etc/apt/sources.list.original /etc/apt/sources.list
mv /var/lib/apt/lists.original /var/lib/apt/lists
echo "Proceso concluido."
echo "Compruebe que en el directorio $directorioscript/ se encuentra el fichero repositoriosact.tar.gz"


importa_repositorios.sh

#!/bin/bash
#
# importa_repositorios.sh
#
# Ejecutar este script en la máquina sin internet.
# El fichero con los índices estará en la carpeta listas, en el mismo
# lugar que este script y el script exporta_repositorios.sh

# Restauramos los repositorios en la máquina sin internet

if [ ! -f repositoriosact.tar.gz ]; then
echo "El fichero con los índices de los repositorios no existe en: " `pwd`
echo "Asegúrese de ejecutar el script exporta_repositorios.sh en la máquina con acceso a internet."
exit
fi

cp repositoriosact.tar.gz /var/lib/apt/
cd /var/lib/apt/
tar xfvz repositoriosact.tar.gz
echo "Repositorios actualizados"

2 comentarios:

Anónimo dijo...

Amigo: no funciona el link con el script.

Saludos...

Esteban M. Navas dijo...

Tienes el texto de los dos scripts en la página. De todos modos, he subido el archivo a DropBox para que se encuentre disponible.