Usando Apt en modo Offline

Jason Gunthorpe <jgg@debian.org> "Traducido" Gonzalo Rivero <sfish@spymac.com>

Abstract

Este documento describe como usar APT en un ambiente no-red, específicamente una aproximación a "red-silenciosa" para ejecutar actualizaciones.

Copyright Copyright (C) Jason Gunthorpe, 1999. "APT" and this document are free software; you can redistribute them and/or modify them under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. For more details, on Debian GNU/Linux systems, see the file /usr/doc/copyright/GPL for the full license.

1. Introducción

1.1 Overview

Normalmente APT requiere acceso directo a un archivo Debian, de un medio local o a través de la red. Otra demanda común es una máquina Debian en un enlace lento, como un modem y otra máquina con una conexión rápida, pero físicamente distantes. La solución a esto es usar un medio removible grande como un disco Zip o un ?SuperDisc. Estos discos no son lo suficientemente grandes para almacenar el archivo Debian completo, pero pueden guardar un subconjunto lo suficiemente largo para la mayoría de los usuarios. La idea es usar APT para generar una lista de los paquetes requeridos y descargarlos en el disco usando otra máquina con buena conectividad. Es aún posible usar otra máquina Debian con APT o usar un SO completamente diferente y una herramienta de descargas como wget.

Esto es realizado manipulando creativamente el archivo de configuración de APT. La premisa esencial es decirle a APT que mire en un disco para su 'archivo de archivos'. Note que el disco debe estar formateado con un sistema de archivos que pueda manejar nombres largos, como ext2, fat32 o vfat.

2. Usando APT en ambas máquinas

2.1 Overview

Con APT disponible en ambas maquinas se tiene la configuración más simple. La idea básica es poner una copia del archivo de status en el disco y usar la máquina remota para obtener los últimos archivos de paquete y decidir que paquetes bajar. La estructura de directorios del disco debe verse como:

2.2 El archivo de configuración

El archivo de configuración debe decirle a APT que almacene sus archivos en el disco y que use los archivos de configuración también. El archivo sources.list debe contener los sitios apropiados de donde quiere bajar de la máquina remota, y el archivo de status debe ser una copia de /var/lib/dpkg/status. Por favor note, si está usando un archivo local, debe usar "copy URIs", la sintaxis es idéntica a los "file URIs". apt.conf debe contener la información necesaria para que APT use el disco:

Se pueden encontrar más detalles viendo y examinando la página de manual de apt.conf y el archivo de configuración de ejemplo en /usr/doc/apt/examples/apt.conf .

En la máquina Debian remota lo primero que hay que hacer es montar el disco y copiar /var/lib/dpkg/status a él. Tambiéen necesitará crear los directorios listados en Overview: archives/partial/ y lists/partial/ . Entonces se puede llevar el disco la máquina remota y configurar el sources.lists. En la máquina remota, ejecutar lo siguiente:

root@cccp# export APT_CONFIG="/disc/apt.conf"

root@cccp# apt-get update

APT trae los archivos de paquetes

root@cccp# apt-get dist-upgrade

APT trae todos los paquetes necesarios para actualizar la computadora

El comando dist-upgrade puede ser reemplazado por cualquier comando estandar de APT, particularmente dselect-upgrade. Tambien puede usar un front-end de APT como dselect. Como sea, esto presenta un problema al comunicar las selecciones de nuevo a la computadora local. Ahora el disco contiene todo el índice de archivos y los archivos necesarios para actualizar la máquina Debian. Traiga el disco de nuevo y ejecute:

# export APT_CONFIG="/disc/apt.conf"

# apt-get check

APT genera una copia local de los archivos cache

# apt-get --no-d -o dir::etc::status=/var/lib/dpkg/status dist-upgrade

o cualquier otro comando de apt

Es necesario que funcione apropiadamente la re-especificación del archivo status para ser el local. ¡Muy importante! Si está usando dselect, puede hacer la muy arriesgada operación de copiar disc/status a /var/lib/dpkg/status para que cada selección hecha en la máquina remota sea actualizada. Es altamente recomendable que la persona solo haga las selecciones en la máquina local - pero esto no siempre es posible. ¡¡NO copie el archivo status si dpkg o APT se ejecutaron en el medio tiempo!!

3. Usando APT y wget

3.1 Overview

wget es una herramienta de descargas popular y portable que puede correr en prácticamente cualquier máquina. Distinto del método anterior, requiere que la máquina Debian ya tenga una lista de paquetes disponibles.

La idea básica es crear un disco que solo tenga los archivos bajados de un sitio remoto. Esto es hecho usando la opción --print-uris y apt-get para prepar un script para que wget baje los paquetes.

3.2 Operación

Distinto de la técnica anterior, no se requieren archivos de configuración especiales. Simplemente usamos comandos APT standard para generar la lista de archivos.

# apt-get dist-upgrade presione no cuando pregunte, asegurese que es feliz con las acciones

# apt-get -qq --print-uris dist-upgrade > uris

# awk '{print "wget -O " $2 " " $1}' < uris> /disc/wget-script

Se puede usar cualquier otro comando además de dist-upgrade aquí, incluyendo dselect-upgrade.

El archivo /disc/wget-script ahora contiene una lista de comandos wget que se ejecutan para descargar los archivos necesarios. Este script debe ser ejecutado en el directorio actual del punto de montaje del disco para almacenar la salida en el disco. En la máquina remota hacer algo como:

# cd /disc

# sh -x ./wget-script

esperar . . .

Cuando los archivos son descargados y el disco vuelve a la máquina: La idea básica es crear un disco que sólo tenga los archivos bajados de un sitio remoto. Esto es hecho usando la opción --print-uris y apt-get para prepara un script para que wget baje los paquetes.

Cuando los archivos son descargados y el disco vuelve a la máquina Debian, la instalación puede proceder usando:

# apt-get -o dir::cache::archives="/disc" dist-upgrade

Que usará los archivos ya descargados en el disco.