Aktionen

Ubuntu Offline Mirror Repository erstellen: Unterschied zwischen den Versionen

Aus znilwiki

KKeine Bearbeitungszusammenfassung
Zeile 1: Zeile 1:
{{Vorlage:AchtungBaustelle}}<br>
<u>'''Changelog:'''</u><br>
* 08.02.2024 erste funktionierende Version
----
==Vorwort==
Wie das so ist habe ich mehrere Anläufe gebaucht bis ich das ganz zum laufen bekommen habe. Unter anderem hatte ich Probleme das mir die Festplatte immer wieder vollgelaufen ist weil er schon vorhandenen Downloads ignorierte, Dinge die nach den Downloads fehlten und wie ich die Quellen auf dem anderen Ubuntu-Servern einstelle.<br>
Klar gibt es viele Anleitungen im Internet, die von mir genutzten habe ich weiter unten auch verlinkt. Aber ohne Anpassungen hatte keine richtig funktioniert.<br>
Die Anleitung unter https://www.linuxtechi.com/setup-local-apt-repository-server-ubuntu/ ist zum Beispiel eigentlich nicht schlecht, die Pfade sind dort aber durcheinander gewürfelt und die Skripte funktionieren nicht wenn man diese einfach nur kopiert. Also habe ich hier meine eigene Version der Anleitung gebaut.<br>
----
----
==Grundinstallation==
==Grundinstallation==
Zeile 5: Zeile 11:
Befolgt die Anleitung bis zu dem Punkt 1.15 '''Automatische Updates deaktivieren'''<br>
Befolgt die Anleitung bis zu dem Punkt 1.15 '''Automatische Updates deaktivieren'''<br>
Achtet darauf das die VM genug Speicherplatz hat. Die obige Anleitung nutzt die ganze Festplatte. Diese lässt sich später (z.B. unter VMware) im laufenden Betrieb erweitern. Die Anleitung dazu findet Ihr auf der gleichen Seite am Ende.<br>
Achtet darauf das die VM genug Speicherplatz hat. Die obige Anleitung nutzt die ganze Festplatte. Diese lässt sich später (z.B. unter VMware) im laufenden Betrieb erweitern. Die Anleitung dazu findet Ihr auf der gleichen Seite am Ende.<br>
<big>'''Ich würde mindestens 400GiB Festplattenplatz empfehlen! Stand 08.02.2024 verbrauchte der Mirror 299GiB, mit Betriebssystem etc. waren dann noch 69GiB frei auf der Festplatte.<br>
{{Hinweis| Ich arbeite hier als '''''root'''''. Mit <code>sudo -i</code> könnte Ihr dauerhaft zum '''''root''''' wechseln. Oder immer schön <code>sudo</code> davor schreiben.}}
{{Hinweis| Ich arbeite hier als '''''root'''''. Mit <code>sudo -i</code> könnte Ihr dauerhaft zum '''''root''''' wechseln. Oder immer schön <code>sudo</code> davor schreiben.}}
----
----
==Apache 2 Webserver==
==Apache 2 Webserver==
Damit später andere Server das Repo nutzen können braucht es einen Webserver.<br>
Damit später andere Server das Repo nutzen können braucht es einen Webserver.<br>
Zeile 27: Zeile 33:
Keine Angst, der lädt nach der Installation noch nicht gleich die Daten herunter:
Keine Angst, der lädt nach der Installation noch nicht gleich die Daten herunter:
  apt install apt-mirror
  apt install apt-mirror
Der Standard-Downloadpfad ist <code>/var/spool/apt-mirror</code><br>
Der Standard-Downloadpfad ist <code>/var/spool/apt-mirror</code> den wir aber ändern.<br>
Wenn wir den ändern wollen so geschieht das in der Datei
Wir bearbeiten die Datei <code>/etc/apt/mirror.list</code>, weiter unten findet Ihr einmal die komplette Datei falls Ihr einfach alles austauschen wollt!<br>
Tipp: {{Key|F9}} löscht Zeilen, {{Key|F10}} fügt die zuvor am Stück gelöschten Zeilen wieder ein.<br>
  nano /etc/apt/mirror.list
  nano /etc/apt/mirror.list
In der Datei sind auch die Paketquellen die er runterladen soll hinterlegt.<br>
In der Datei sind auch die Paketquellen die er runterladen soll hinterlegt.<br>
Zeile 42: Zeile 49:
  #deb http://archive.ubuntu.com/ubuntu jammy-backports main restricted universe multiverse
  #deb http://archive.ubuntu.com/ubuntu jammy-backports main restricted universe multiverse
   
   
  deb-src http://archive.ubuntu.com/ubuntu jammy main restricted universe multiverse
  #deb-src http://archive.ubuntu.com/ubuntu jammy main restricted universe multiverse
  deb-src http://archive.ubuntu.com/ubuntu jammy-security main restricted universe multiverse
  #deb-src http://archive.ubuntu.com/ubuntu jammy-security main restricted universe multiverse
  deb-src http://archive.ubuntu.com/ubuntu jammy-updates main restricted universe multiverse
  #deb-src http://archive.ubuntu.com/ubuntu jammy-updates main restricted universe multiverse
  #deb-src http://archive.ubuntu.com/ubuntu jammy-proposed main restricted universe multiverse
  #deb-src http://archive.ubuntu.com/ubuntu jammy-proposed main restricted universe multiverse
  #deb-src http://archive.ubuntu.com/ubuntu jammy-backports main restricted universe multiverse
  #deb-src http://archive.ubuntu.com/ubuntu jammy-backports main restricted universe multiverse
Zeile 50: Zeile 57:
  # Zabbix main repository
  # Zabbix main repository
  deb https://repo.zabbix.com/zabbix/6.0/ubuntu jammy main
  deb https://repo.zabbix.com/zabbix/6.0/ubuntu jammy main
  deb-src https://repo.zabbix.com/zabbix/6.0/ubuntu jammy main
  # deb-src https://repo.zabbix.com/zabbix/6.0/ubuntu jammy main
  deb [arch=amd64] https://repo.zabbix.com/zabbix-agent2-plugins/1/ubuntu jammy main
  deb [arch=amd64] https://repo.zabbix.com/zabbix-agent2-plugins/1/ubuntu jammy main
  deb-src [arch=amd64] https://repo.zabbix.com/zabbix-agent2-plugins/1/ubuntu jammy main
  # deb-src [arch=amd64] https://repo.zabbix.com/zabbix-agent2-plugins/1/ubuntu jammy main
Wie Ihr sicher bemerkt habt, habe ich alle Source-Code Quellen auskommentiert. Falls Ihr später doch davon etwas brauchen solltet könnte Ihr bei den betreffenden Quellen den Kommentar wieder entfernen.<br>
<br>
Zusätzlich ändern wir den Download-Pfad:<br>
set base_path    /var/www/html/ubuntu
<br>
<br>
<br>
Hier noch einmal die ganze Datei nach den Änderungen, das da viel auskommentiert ist, ist Absicht!:<br>
<source lang="bash">
############# config ##################
#
# set base_path    /var/spool/apt-mirror
#
# 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 base_path    /var/www/html/ubuntu
set nthreads    20
set _tilde 0
#set limit_rate 10K
#
############# end config ##############
# jammy = Ubuntu 22.04 LTS
deb http://archive.ubuntu.com/ubuntu jammy main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu jammy-security main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu jammy-updates main restricted universe multiverse
#deb [arch=amd64] http://archive.ubuntu.com/ubuntu jammy-proposed main restricted universe multiverse
#deb [arch=amd64] http://archive.ubuntu.com/ubuntu jammy-backports main restricted universe multiverse
#deb-src [arch=amd64] http://archive.ubuntu.com/ubuntu jammy main restricted universe multiverse
#deb-src [arch=amd64] http://archive.ubuntu.com/ubuntu jammy-security main restricted universe multiverse
#deb-src [arch=amd64] http://archive.ubuntu.com/ubuntu jammy-updates main restricted universe multiverse
#deb-src [arch=amd64] http://archive.ubuntu.com/ubuntu jammy-proposed main restricted universe multiverse
#deb-src [arch=amd64] http://archive.ubuntu.com/ubuntu jammy-backports main restricted universe multiverse
# Zabbix main repository
deb https://repo.zabbix.com/zabbix/6.0/ubuntu jammy main
#deb-src https://repo.zabbix.com/zabbix/6.0/ubuntu jammy main
deb [arch=amd64] https://repo.zabbix.com/zabbix-agent2-plugins/1/ubuntu jammy main
#deb-src [arch=amd64] https://repo.zabbix.com/zabbix-agent2-plugins/1/ubuntu jammy main
#clean http://archive.ubuntu.com/ubuntu
#clean https://repo.zabbix.com/zabbix/6.0/ubuntu
#clean https://repo.zabbix.com/zabbix-agent2-plugins/1/ubuntu
</source>
----
==Zielordner erstellen==
Der Webserver sollte schon laufen, das Zielverzeichnis fehlt aber noch:<br>
mkdir -p /var/www/html/ubuntu
chown www-data:www-data /var/www/html/ubuntu
----
----
==Post-Skript erstellen==
==Post-Skript erstellen==
Zeile 66: Zeile 128:
</source>
</source>
----
----
==Download starten==
==Download starten==
Das geht per
Das geht per
Zeile 76: Zeile 137:
  273.5 GiB will be downloaded into archive.
  273.5 GiB will be downloaded into archive.
Wenn Ihr das Abrechen wollt um z.B. doch noch an den Repos zu schrauben könnte ihr den Mirror-Cache einfach löschen und neu Anfangen:
Wenn Ihr das Abrechen wollt um z.B. doch noch an den Repos zu schrauben könnte ihr den Mirror-Cache einfach löschen und neu Anfangen:
  rm -R /var/spool/apt-mirror/*
  rm -R /var/www/html/ubuntu*
Neu anfangen heißt dabei alles neu herunterladen ... also um die 300GiB<br>
----
==Fehlende Dateien holen==
Ein Hürde war das der <code>apt-mirror</code> Befehl unter Ubuntu 22.04 leider nicht alles herunterlädt was im Repository hinterlegt sein muss.<br>
Zum Beispiel fehlen die notwendigen <code>cnf</code> Unterverzeichnisse.<br>
Unter https://www.linuxtechi.com/setup-local-apt-repository-server-ubuntu/ findet man ein Skript welches das korrigiert. Das Skript von dort funktioniert so nicht, hier ist meine abgewandelte Version welche auch mit den obigen Pfaden zusammenarbeitet:<br>
nano /root/fix-apt-mirror-errors.sh
<source lang="bash">
#!/bin/bash
# Original von: https://www.linuxtechi.com/setup-local-apt-repository-server-ubuntu/#4_Configure_Apt-Mirror
cd /var/www/html/ubuntu/mirror/archive.ubuntu.com/ubuntu/dists
 
for dist in jammy jammy-updates jammy-security jammy-backports; do
  for comp in main multiverse universe; do
    for size in 48 64 128; do
    wget http://archive.ubuntu.com/ubuntu/dists/$dist/$comp/dep11/icons-${size}x${size}@2.tar.gz -O $dist/$comp/dep11/icons-${size}x${size}@2.tar.gz;
  done
done
done
 
cd /var/tmp
for p in "${1:-jammy}"{,-{security,updates,backports}}/{main,restricted,universe,multiverse};do >&2 echo "${p}"
  wget -q -c -r -np -R "index.html*" "http://archive.ubuntu.com/ubuntu/dists/${p}/cnf/Commands-amd64.xz"
  wget -q -c -r -np -R "index.html*" "http://archive.ubuntu.com/ubuntu/dists/${p}/cnf/Commands-i386.xz"
  wget -q -c -r -np -R "index.html*" "http://archive.ubuntu.com/ubuntu/dists/${p}/binary-i386/"
done
 
cp -av /var/tmp/archive.ubuntu.com/ubuntu/ /var/www/html/ubuntu/mirror/archive.ubuntu.com
</source>
Danach machen wir das Skript ausführbar und starten es einmal:<br>
chmod +x /root/fix-apt-mirror-errors
und ausführen:<br>
/root/fix-apt-mirror-errors.sh
Es wird ein paar Fehlermeldungen geben beim herunterladen die Icons, er wird manche 48, 64 und 128 Auflösungen nicht finden - das ignoriert Ihr einfach.<br>
Am Ende kommt ganz viel Text wenn er die <code>cnf</code>-Ordner kopiert (weil das '''''cp''''' das <code>v</code>-Flag gesetzt hat, also Verbose).<br>
----
==Manuelle Prüfung==
Wenn Ihr nun in einem Webbrowser die IP-Adresse eures eigenen Repo-Servers + <code>/ubuntu</code> eingebt solltet Ihr das Repo sehen können:<br>
----
----
==Linksammlung==
==Linksammlung==

Version vom 8. Februar 2024, 11:43 Uhr

Changelog:

  • 08.02.2024 erste funktionierende Version

Vorwort

Wie das so ist habe ich mehrere Anläufe gebaucht bis ich das ganz zum laufen bekommen habe. Unter anderem hatte ich Probleme das mir die Festplatte immer wieder vollgelaufen ist weil er schon vorhandenen Downloads ignorierte, Dinge die nach den Downloads fehlten und wie ich die Quellen auf dem anderen Ubuntu-Servern einstelle.
Klar gibt es viele Anleitungen im Internet, die von mir genutzten habe ich weiter unten auch verlinkt. Aber ohne Anpassungen hatte keine richtig funktioniert.
Die Anleitung unter https://www.linuxtechi.com/setup-local-apt-repository-server-ubuntu/ ist zum Beispiel eigentlich nicht schlecht, die Pfade sind dort aber durcheinander gewürfelt und die Skripte funktionieren nicht wenn man diese einfach nur kopiert. Also habe ich hier meine eigene Version der Anleitung gebaut.


Grundinstallation

Ihr installiert einen Ubuntu-Server nach dieser Anleitung: Zabbix Server + Agent unter Ubuntu 22.04 LTS installieren
Befolgt die Anleitung bis zu dem Punkt 1.15 Automatische Updates deaktivieren
Achtet darauf das die VM genug Speicherplatz hat. Die obige Anleitung nutzt die ganze Festplatte. Diese lässt sich später (z.B. unter VMware) im laufenden Betrieb erweitern. Die Anleitung dazu findet Ihr auf der gleichen Seite am Ende.
Ich würde mindestens 400GiB Festplattenplatz empfehlen! Stand 08.02.2024 verbrauchte der Mirror 299GiB, mit Betriebssystem etc. waren dann noch 69GiB frei auf der Festplatte.

Important.png
Hinweis: Ich arbeite hier als root. Mit sudo -i könnte Ihr dauerhaft zum root wechseln. Oder immer schön sudo davor schreiben.

Apache 2 Webserver

Damit später andere Server das Repo nutzen können braucht es einen Webserver.
Ich nehme den Apache2:

apt install php libapache2-mod-php

Das installiert diesen inklusive PHP-Unterstützung. PHP wird hier im ersten Moment nicht gebraucht aber ich wollte es für später haben.


==Quellen von Zabbix hinzufügen (bei Bedarf) Ich will darüber auch die Zabbix-Repo-Pakete zur Verfügung stellen.
Also binde ich diese Quellen auch ein:

Für die Version 6.0.x LTS (Support bis 28.02.2027)
wget https://repo.zabbix.com/zabbix/6.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_6.0-3+ubuntu22.04_all.deb
dpkg -i zabbix-release_6.0-3+ubuntu22.04_all.deb
apt update && apt upgrade -y
rm zabbix-release_*

Mirror installieren

Keine Angst, der lädt nach der Installation noch nicht gleich die Daten herunter:

apt install apt-mirror

Der Standard-Downloadpfad ist /var/spool/apt-mirror den wir aber ändern.
Wir bearbeiten die Datei /etc/apt/mirror.list, weiter unten findet Ihr einmal die komplette Datei falls Ihr einfach alles austauschen wollt!
Tipp: F9 löscht Zeilen, F10 fügt die zuvor am Stück gelöschten Zeilen wieder ein.

nano /etc/apt/mirror.list

In der Datei sind auch die Paketquellen die er runterladen soll hinterlegt.
Per Default sind das die für Ubuntu 17.10 (artful)
Das müssen wir ändern! Löscht alle Zeilen unterhalb von

############# end config ##############

und fügt das hier ein für Ubuntu 22.04 (jammy):

# jammy = Ubuntu 22.04 LTS
deb http://archive.ubuntu.com/ubuntu jammy main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu jammy-security main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu jammy-updates main restricted universe multiverse
#deb http://archive.ubuntu.com/ubuntu jammy-proposed main restricted universe multiverse
#deb http://archive.ubuntu.com/ubuntu jammy-backports main restricted universe multiverse

#deb-src http://archive.ubuntu.com/ubuntu jammy main restricted universe multiverse
#deb-src http://archive.ubuntu.com/ubuntu jammy-security main restricted universe multiverse
#deb-src http://archive.ubuntu.com/ubuntu jammy-updates main restricted universe multiverse
#deb-src http://archive.ubuntu.com/ubuntu jammy-proposed main restricted universe multiverse
#deb-src http://archive.ubuntu.com/ubuntu jammy-backports main restricted universe multiverse

Für Zabbix hängen wir noch diese Zeilen mit dran:

# Zabbix main repository
deb https://repo.zabbix.com/zabbix/6.0/ubuntu jammy main
# deb-src https://repo.zabbix.com/zabbix/6.0/ubuntu jammy main
deb [arch=amd64] https://repo.zabbix.com/zabbix-agent2-plugins/1/ubuntu jammy main
# deb-src [arch=amd64] https://repo.zabbix.com/zabbix-agent2-plugins/1/ubuntu jammy main

Wie Ihr sicher bemerkt habt, habe ich alle Source-Code Quellen auskommentiert. Falls Ihr später doch davon etwas brauchen solltet könnte Ihr bei den betreffenden Quellen den Kommentar wieder entfernen.

Zusätzlich ändern wir den Download-Pfad:

set base_path    /var/www/html/ubuntu



Hier noch einmal die ganze Datei nach den Änderungen, das da viel auskommentiert ist, ist Absicht!:

############# config ##################
#
# set base_path    /var/spool/apt-mirror
#
# 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 base_path    /var/www/html/ubuntu
set nthreads     20
set _tilde 0
#set limit_rate 10K
#
############# end config ##############

# jammy = Ubuntu 22.04 LTS
deb http://archive.ubuntu.com/ubuntu jammy main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu jammy-security main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu jammy-updates main restricted universe multiverse
#deb [arch=amd64] http://archive.ubuntu.com/ubuntu jammy-proposed main restricted universe multiverse
#deb [arch=amd64] http://archive.ubuntu.com/ubuntu jammy-backports main restricted universe multiverse

#deb-src [arch=amd64] http://archive.ubuntu.com/ubuntu jammy main restricted universe multiverse
#deb-src [arch=amd64] http://archive.ubuntu.com/ubuntu jammy-security main restricted universe multiverse
#deb-src [arch=amd64] http://archive.ubuntu.com/ubuntu jammy-updates main restricted universe multiverse
#deb-src [arch=amd64] http://archive.ubuntu.com/ubuntu jammy-proposed main restricted universe multiverse
#deb-src [arch=amd64] http://archive.ubuntu.com/ubuntu jammy-backports main restricted universe multiverse

# Zabbix main repository
deb https://repo.zabbix.com/zabbix/6.0/ubuntu jammy main
#deb-src https://repo.zabbix.com/zabbix/6.0/ubuntu jammy main
deb [arch=amd64] https://repo.zabbix.com/zabbix-agent2-plugins/1/ubuntu jammy main
#deb-src [arch=amd64] https://repo.zabbix.com/zabbix-agent2-plugins/1/ubuntu jammy main


#clean http://archive.ubuntu.com/ubuntu
#clean https://repo.zabbix.com/zabbix/6.0/ubuntu
#clean https://repo.zabbix.com/zabbix-agent2-plugins/1/ubuntu

Zielordner erstellen

Der Webserver sollte schon laufen, das Zielverzeichnis fehlt aber noch:

mkdir -p /var/www/html/ubuntu
chown www-data:www-data /var/www/html/ubuntu

Post-Skript erstellen

Damit es am Ende des Downloads keine Fehlermeldung gibt erstellen wir das postmirror.sh-Skript:

nano /var/www/html/ubuntu/var/postmirror.sh
#!/bin/bash -e

## Anything in this file gets run AFTER the mirror has been run.
## Put your custom post mirror operations in here (like rsyncing the installer
## files and running clean.sh automatically)!

Download starten

Das geht per

apt-mirror

und dann warten.
Da kommt drei Zeilen wie folgt:

Processing indexes: [SSSPPP]

273.5 GiB will be downloaded into archive.

Wenn Ihr das Abrechen wollt um z.B. doch noch an den Repos zu schrauben könnte ihr den Mirror-Cache einfach löschen und neu Anfangen:

rm -R /var/www/html/ubuntu*

Neu anfangen heißt dabei alles neu herunterladen ... also um die 300GiB


Fehlende Dateien holen

Ein Hürde war das der apt-mirror Befehl unter Ubuntu 22.04 leider nicht alles herunterlädt was im Repository hinterlegt sein muss.
Zum Beispiel fehlen die notwendigen cnf Unterverzeichnisse.
Unter https://www.linuxtechi.com/setup-local-apt-repository-server-ubuntu/ findet man ein Skript welches das korrigiert. Das Skript von dort funktioniert so nicht, hier ist meine abgewandelte Version welche auch mit den obigen Pfaden zusammenarbeitet:

nano /root/fix-apt-mirror-errors.sh
#!/bin/bash
# Original von: https://www.linuxtechi.com/setup-local-apt-repository-server-ubuntu/#4_Configure_Apt-Mirror
cd /var/www/html/ubuntu/mirror/archive.ubuntu.com/ubuntu/dists

for dist in jammy jammy-updates jammy-security jammy-backports; do
  for comp in main multiverse universe; do
    for size in 48 64 128; do
    wget http://archive.ubuntu.com/ubuntu/dists/$dist/$comp/dep11/icons-${size}x${size}@2.tar.gz -O $dist/$comp/dep11/icons-${size}x${size}@2.tar.gz;
   done
 done
done

cd /var/tmp
for p in "${1:-jammy}"{,-{security,updates,backports}}/{main,restricted,universe,multiverse};do >&2 echo "${p}"
  wget -q -c -r -np -R "index.html*" "http://archive.ubuntu.com/ubuntu/dists/${p}/cnf/Commands-amd64.xz"
  wget -q -c -r -np -R "index.html*" "http://archive.ubuntu.com/ubuntu/dists/${p}/cnf/Commands-i386.xz"
  wget -q -c -r -np -R "index.html*" "http://archive.ubuntu.com/ubuntu/dists/${p}/binary-i386/"
done

cp -av /var/tmp/archive.ubuntu.com/ubuntu/ /var/www/html/ubuntu/mirror/archive.ubuntu.com

Danach machen wir das Skript ausführbar und starten es einmal:

chmod +x /root/fix-apt-mirror-errors

und ausführen:

/root/fix-apt-mirror-errors.sh

Es wird ein paar Fehlermeldungen geben beim herunterladen die Icons, er wird manche 48, 64 und 128 Auflösungen nicht finden - das ignoriert Ihr einfach.
Am Ende kommt ganz viel Text wenn er die cnf-Ordner kopiert (weil das cp das v-Flag gesetzt hat, also Verbose).


Manuelle Prüfung

Wenn Ihr nun in einem Webbrowser die IP-Adresse eures eigenen Repo-Servers + /ubuntu eingebt solltet Ihr das Repo sehen können:


Linksammlung

Erst einmal nur eine Linksammlung:


Loading comments...