From 851b6a097165af4d51c0db01b5e05256e5006896 Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Sun, 7 Apr 2024 11:00:48 +0200 Subject: Adding upstream version 2.6.1. Signed-off-by: Daniel Baumann --- doc/offline.dbk | 248 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 248 insertions(+) create mode 100644 doc/offline.dbk (limited to 'doc/offline.dbk') diff --git a/doc/offline.dbk b/doc/offline.dbk new file mode 100644 index 0000000..2ad1d98 --- /dev/null +++ b/doc/offline.dbk @@ -0,0 +1,248 @@ + + %aptent; + %aptverbatiment; + %aptvendor; +]> + + + +Using APT Offline + + + + + + Jason Gunthorpejgg@debian.org + + + +Version &apt-product-version; + + + +This document describes how to use APT in a non-networked environment, +specifically a 'sneaker-net' approach for performing upgrades. + + + +1999Jason Gunthorpe + + +License Notice + +"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 systems, see the file +/usr/share/common-licenses/GPL for the full license. + + + + + +Introduction + +
Overview + +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. + + +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 easily 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. Let remote +host mean the machine downloading the packages, and target +host the one with bad or no connection. + + +This is achieved by creatively manipulating the APT configuration file. The +essential premise to tell APT to look on a disc for it's archive files. Note +that the disc should be formatted with a filesystem that can handle long file +names such as ext2, fat32 or vfat. + +
+ +
+ +Using APT on both machines + +
Overview + +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: + + + /disc/ + archives/ + partial/ + lists/ + partial/ + status + sources.list + apt.conf + +
+ +
The configuration file + +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 /var/lib/dpkg/status from +the target host. Please note, if you are using a local +archive you must use copy URIs, the syntax is identical to file URIs. + + +apt.conf must contain the necessary information to make +APT use the disc: + + + APT + { + /* This is not necessary if the two machines are the same arch, it tells + the remote APT what architecture the target 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 locally + Cache::archives "/disc/archives/"; + Cache "/tmp/"; + + // Location of the source list. + Etc "/disc/"; + }; + + +More details can be seen by examining the apt.conf man page and the sample +configuration file in +/usr/share/doc/apt/examples/apt.conf. + + +On the target machine the first thing to do is mount the disc and copy +/var/lib/dpkg/status to it. You will also need +to create the directories outlined in the Overview, +archives/partial/ and +lists/partial/. Then take the disc to the +remote machine and configure the sources.list. On the remote +machine execute the following: + + + # 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 the target machine ] + + +The dist-upgrade command can be replaced with any other standard APT commands, +particularly dselect-upgrade. You can even use an APT front end such as +dselect. However this presents a problem in communicating +your selections back to the local computer. + + +Now the disc contains all of the index files and archives needed to upgrade the +target machine. Take the disc back and run: + + + # export APT_CONFIG="/disc/apt.conf" + # apt-get check + [ APT generates a local copy of the cache files ] + # apt-get --no-d -o dir::state::status=/var/lib/dpkg/status dist-upgrade + [ Or any other APT command ] + + +It is necessary for proper function to re-specify the status file to be the +local one. This is very important! + + +If you are using dselect you can do the very risky operation of copying +disc/status to /var/lib/dpkg/status so that any selections you made on the +remote machine are updated. I highly recommend that people only make +selections on the local machine - but this may not always be possible. DO NOT +copy the status file if dpkg or APT have been run in the mean time!! + +
+ +
+ +Using APT and wget + +
Overview + +wget 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. + + +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. + +
+ +
Operation + +Unlike the previous technique no special configuration files are required. We +merely use the standard APT commands to generate the file list. + + + # 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 + + +Any command other than dist-upgrade could be used here, including +dselect-upgrade. + + +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. + + +The remote machine would do something like + + + # cd /disc + # sh -x ./wget-script + [ wait.. ] + + +Once the archives are downloaded and the disc returned to the Debian machine +installation can proceed using, + + + # apt-get -o dir::cache::archives="/disc/" dist-upgrade + + +Which will use the already fetched archives on the disc. + +
+ +
+ +
-- cgit v1.2.3