diff options
Diffstat (limited to 'doc/offline.sgml')
-rw-r--r-- | doc/offline.sgml | 221 |
1 files changed, 221 insertions, 0 deletions
diff --git a/doc/offline.sgml b/doc/offline.sgml new file mode 100644 index 000000000..0d33caaf4 --- /dev/null +++ b/doc/offline.sgml @@ -0,0 +1,221 @@ +<!doctype debiandoc system> +<!-- -*- mode: sgml; mode: fold -*- --> +<book> +<title>Using APT Offline</title> + +<author>Jason Gunthorpe <email>jgg@debian.org</email></author> +<version>$Id: offline.sgml,v 1.1 1999/02/15 06:38:03 jgg Exp $</version> + +<abstract> +This document describes how to use APT in a non-networked environment, +specificaly a 'sneaker-net' approach for performing upgrades. +</abstract> + +<copyright> +Copyright © Jason Gunthorpe, 1999. +<p> +"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. + +<p> +For more details, on Debian GNU/Linux systems, see the file +/usr/doc/copyright/GPL for the full license. +</copyright> + +<toc sect> + +<chapt>Introduction +<!-- Overview {{{ --> +<!-- ===================================================================== --> +<sect>Overview + +<p> +Normally APT requires direct access to a Debian archive, either from a local +media or through a network. Another common complaint is that a Debian machine +is on a slow link, such as a modem and another machine has a very fast +connection but they are physically distant. + +<p> +The solution to this is to use large removable media such as a Zip disc or a +SuperDisk disc. These discs are not large enough to store the entire Debian +archive but can easially fit a subset large enough for most users. The idea +is to use APT to generate a list of packages that are required and then fetch +them onto the disc using another machine with good connectivity. It is +even Possible to use another Debian machine with APT or to use a completely +different OS and a download tool like wget. + +<p> +This is achived by creatively manipulating the APT configuration file. The +essential premis to tell APT to look on a disc for it's archive files. Note +that the disc should be formated with a filesystem that can handle long file +names such as ext2, fat32 or vfat. + +</sect> + <!-- }}} --> + +<chapt>Using APT on both machines +<!-- Overview {{{ --> +<!-- ===================================================================== --> +<sect>Overview + +<p> +APT being available on both machines gives the simplest configuration. The +basic idea is to place a copy of the status file on the disc and use the +remote machine to fetch the latest package files and decide which packages to +download. The disk directory structure should look like: + +<example> + /disc/ + archives/ + partial/ + lists/ + partial/ + status + sources.list + apt.conf +</example> + +</sect> + <!-- }}} --> +<!-- The configuartion file {{{ --> +<!-- ===================================================================== --> +<sect>The configuration file + +<p> +The configuration file should tell APT to store its files on the disc and +to use the configuration files on the disc as well. The sources.list should +contain the proper sites that you wish to use from the remote machine, and +the status file should be a copy of <em>/var/lib/dpkg/status</em>. Please note, +if you are using a local archive you must use copy URIs, the syntax is identical +to file URIs. + +<p> +<em>apt.conf</em> must contain the necessary information to make APT use the +disc: + +<example> + APT + { + /* This is not necessary if the two machines are the same arch, it tells + the remote APT what architecture the Debian machine is */ + Architecture "i386"; + + Get::Download-Only "true"; + }; + + Dir + { + /* Use the disc for state information and redirect the status file from + the /var/lib/dpkg default */ + State "/disc/"; + State::status "status"; + + // Binary caches will be stored localy + Cache::archives "/disc/archives/"; + + // Location of the source list. + Etc "/disc/"; + }; +</example> + +More details can be seen by examining the apt.conf man page and the sample +configuration file in <em>/usr/doc/apt/examples/apt.conf</em>. + +<p> +On the Debian machine the first thing to do is mount the disc and copy +<em>/var/lib/dpkg/status</em> to it. You will also need to create the directories +outlined in the Overview, <em>archives/partial/</em> and <em>lists/partial/</em> +Then take the disc to the remote machine and configure the sources.list. +On the remote machine execute the following: + +<example> + # export APT_CONFIG="/disc/apt.conf" + # apt-get update + [ APT fetches the package files ] + # apt-get dist-upgrade + [ APT fetches all the packages needed to upgrade your machine ] +</example> + +The dist-upgrade command can be replaced with any-other standard APT commands, +you can even use an APT front end such as <em>gnome-apt</em> [still in +development]. + +<p> +Now the disc contains all of the index files and archives needed to upgrade +the Debian machine. Take the disc back and run: + +<example> + # export APT_CONFIG="/disc/apt.conf" + # apt-get check + [ APT generates a local copy of the cache files ] + # apt-get --no-d -o dir::etc::status=/var/lib/dpkg/status dist-upgrade + [ Or any other APT command ] +</example> + +<p> +It is necessary for proper function to re-specify the status file to be the +local one. This is very important! + +</sect> + <!-- }}} --> + +<chapt>Using APT and wget +<!-- Overview {{{ --> +<!-- ===================================================================== --> +<sect>Overview + +<p> +<em>wget</em> is a popular and portable download tool that can run on nearly +any machine. Unlike the method above this requires that the Debian machine +already has a list of available packages. + +<p> +The basic idea is to create a disc that has only the archive files downloaded +from the remote site. This is done by using the --print-uris option to apt-get +and then preparing a wget script to actually fetch the packages. + +</sect> + <!-- }}} --> +<!-- Operation {{{ --> +<!-- ===================================================================== --> +<sect>Operation + +<p> +Unlike the previous techinque no special configuration files are required. We +mearly use the standard APT commands to generate the file list. + +<example> + # apt-get dist-upgrade + [ Press no when prompted, make sure you are happy with the actions ] + # apt-get -qq --print-uris dist-upgrade > uris + # awk '{print "wget -O " $2 " " $1}' < uris > /disc/wget-script +</example> + +The /disc/wget-script file will now contain a list of wget commands to execute +in order to fetch the necessary archives. This script should be run with the +current directory as the disc's mount point so as to save the output on the +disc. + +<p> +The remote machine would do something like + +<example> + # cd /disc + # sh -x ./wget-script + [ wait.. ] +</example> + +Once the archives are downloaded and the disc returned to the Debian machine +installation can proceed using, + +<example> + # apt-get -o dir::cache::archives="/disc/" dist-upgrade +</example> + +Which will use the already fetched archives on the disc. + +</sect> + <!-- }}} --> +</book> |