User Tools

Site Tools


linux:repomirror

This is an old revision of the document!


Mirror a repository

When running a Debian system (Debian, Ubuntu, Cumulus, …) without internet connection, it cannot receive upgrades with apt update && apt upgrade -y
But with any Debian based system that is online, it is possible to download the required packages and dependencies (!). With only a very few systems at the same patchlevel, it might be quicker to just download the required packages as in KVM/ QEMU Extend a virtual disk. But, when the systems are at different patch levels or to ensure a system can be recovered from an image after a disaster it might be valuable to have a full repository of the used distribution.

Install the required software to mirror a repository

apt install apt-mirror -y

This contains everything needed to replicate a repository I am using the fictitious distribution FreeDebian - replce it with the actually required distro. It created /etc/apt/mirror.list that needs to be amended. We need only a few active lines, but I left some commented defaults, just for information what it sets.

############# config ##################
#
set base_path    /var/spool/apt-mirror/freedebian
#
# set mirror_path  $base_path/mirror
# set skel_path    $base_path/skel
# set var_path     $base_path/var
# set cleanscript $var_path/clean.sh
# set defaultarch  <running host architecture>
# set postmirror_script $var_path/postmirror.sh
# set run_postmirror 0
set nthreads     20
set _tilde 0
#
############# end config ##############
 
# if only one architecture (i386, amd64, ...) is required, add it at the end of the leading deb. The example shows that for 64-bit x86 architecture
# for multiples (but not all available) issue a line for each 
# for all available architectures, just use one line with deb (without -extension)
 
# Source repositories
deb-amd64 [signed-by=/etc/apt/trusted.gpg.d/freedebian.gpg] https://deb.freedebian.org/freedebian unstable main contrib non-free
deb-src-amd64 [signed-by=/etc/apt/trusted.gpg.d/freedebian.gpg] https://fdeb.freedebian.org/freedebian unstable main contrib non-free
 
clean http://deb.freedebian.org/freedebian

Create the directory for the repositories

mkdir /var/spool/apt-mirror/freedebian

Start the replication with

apt-mirror

or as background task with

apt-mirror &

When the replication is finished, the whole directory should be packed and moved to the offline system for publication.

tar -czPf freedebian.tar.gz /var/spool/apt-mirror/freedebian/

Create a repository server on the offline network

On the target network with a fresh Debian installation run tasksel and select the web server. That will install apache2 with a standard, non-ssl web site active, with the files at /var/www/html/

Unpack the archive created online:

tar -xvzPf freedebian.tgz 

link the repository to the web site:

ln -s /var/spool/apt-mirror/freedebian/deb.freedebian.org/repo /var/www/html/repo

Modify sources.list and install updates

On the clients that should use the repository modify /etc/apt/sources.list, replacing the URI of the source repository with the IP of the server installed in the step before. Ensure to use http (or configure SSL on the server).

deb [arch=amd64] http://192.168.100.41/repo FreeDebian main updates non-free
deb-src [arch=amd64] http://192.168.100.41/repo FreeDebian main updates non-free

Update apt and upgrade the client device:

apt update && apt dist-upgrade 

Done.

linux/repomirror.1677921427.txt.gz · Last modified: 2023/03/04 09:17 by olaf