User Tools

Site Tools


linux:repomirror

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 Repository for offline systems. 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.txt · Last modified: 2023/03/04 09:21 by olaf