diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-05-05 18:07:13 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-05-05 18:07:13 +0000 |
commit | 636c7dc17286d93d788c741d15fd756aeda066d5 (patch) | |
tree | e7ae158cc54f591041a061b9865bcae51854f15c /doc/offline.dbk | |
parent | Initial commit. (diff) | |
download | apt-upstream/1.8.2.3.tar.xz apt-upstream/1.8.2.3.zip |
Adding upstream version 1.8.2.3.upstream/1.8.2.3upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'doc/offline.dbk')
-rw-r--r-- | doc/offline.dbk | 248 |
1 files changed, 248 insertions, 0 deletions
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 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" + "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [ +<!ENTITY % aptent SYSTEM "apt.ent"> %aptent; +<!ENTITY % aptverbatiment SYSTEM "apt-verbatim.ent"> %aptverbatiment; +<!ENTITY % aptvendor SYSTEM "apt-vendor.ent"> %aptvendor; +]> + +<book lang="en"> + +<title>Using APT Offline</title> + +<bookinfo> + +<authorgroup> + <author> + <personname>Jason Gunthorpe</personname><email>jgg@debian.org</email> + </author> +</authorgroup> + +<releaseinfo>Version &apt-product-version;</releaseinfo> + +<abstract> +<para> +This document describes how to use APT in a non-networked environment, +specifically a 'sneaker-net' approach for performing upgrades. +</para> +</abstract> + +<copyright><year>1999</year><holder>Jason Gunthorpe</holder></copyright> + +<legalnotice> +<title>License Notice</title> +<para> +"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. +</para> +<para> +For more details, on Debian systems, see the file +/usr/share/common-licenses/GPL for the full license. +</para> +</legalnotice> + +</bookinfo> + +<chapter id="ch1"><title>Introduction</title> + +<section id="s1.1"><title>Overview</title> +<para> +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. +</para> +<para> +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 <emphasis>remote +host</emphasis> mean the machine downloading the packages, and <emphasis>target +host</emphasis> the one with bad or no connection. +</para> +<para> +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. +</para> +</section> + +</chapter> + +<chapter id="ch2"><title>Using APT on both machines</title> + +<section id="s2.1"><title>Overview</title> +<para> +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: +</para> +<screen> + /disc/ + archives/ + partial/ + lists/ + partial/ + status + sources.list + apt.conf +</screen> +</section> + +<section id="s2.2"><title>The configuration file</title> +<para> +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 <emphasis>/var/lib/dpkg/status</emphasis> from +the <emphasis>target host</emphasis>. Please note, if you are using a local +archive you must use copy URIs, the syntax is identical to file URIs. +</para> +<para> +<emphasis>apt.conf</emphasis> must contain the necessary information to make +APT use the disc: +</para> +<screen> + 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/"; + }; +</screen> +<para> +More details can be seen by examining the apt.conf man page and the sample +configuration file in +<emphasis>/usr/share/doc/apt/examples/apt.conf</emphasis>. +</para> +<para> +On the target machine the first thing to do is mount the disc and copy +<emphasis>/var/lib/dpkg/status</emphasis> to it. You will also need +to create the directories outlined in the Overview, +<emphasis>archives/partial/</emphasis> and +<emphasis>lists/partial/</emphasis>. Then take the disc to the +remote machine and configure the sources.list. On the remote +machine execute the following: +</para> +<screen> + # 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 ] +</screen> +<para> +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 +<emphasis>dselect</emphasis>. However this presents a problem in communicating +your selections back to the local computer. +</para> +<para> +Now the disc contains all of the index files and archives needed to upgrade the +target machine. Take the disc back and run: +</para> +<screen> + # 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 ] +</screen> +<para> +It is necessary for proper function to re-specify the status file to be the +local one. This is very important! +</para> +<para> +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!! +</para> +</section> + +</chapter> + +<chapter id="ch3"><title>Using APT and wget</title> + +<section id="s3.1"><title>Overview</title> +<para> +<emphasis>wget</emphasis> 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. +</para> +<para> +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. +</para> +</section> + +<section id="s3.2"><title>Operation</title> +<para> +Unlike the previous technique no special configuration files are required. We +merely use the standard APT commands to generate the file list. +</para> +<screen> + # 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 +</screen> +<para> +Any command other than dist-upgrade could be used here, including +dselect-upgrade. +</para> +<para> +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. +</para> +<para> +The remote machine would do something like +</para> +<screen> + # cd /disc + # sh -x ./wget-script + [ wait.. ] +</screen> +<para> +Once the archives are downloaded and the disc returned to the Debian machine +installation can proceed using, +</para> +<screen> + # apt-get -o dir::cache::archives="/disc/" dist-upgrade +</screen> +<para> +Which will use the already fetched archives on the disc. +</para> +</section> + +</chapter> + +</book> |