===== 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 [[linux:aptoffline|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
# 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.