Lokales Repository für Systeme ohne Internetverbindung
![]() |
Baustelle: Dieser Artikel ist eine Baustelle. Das heißt, jemand hat sich dieses Artikels angenommen und überarbeitet ihn gerade. |
Das Internet ist heutzutage allgegenwärtig. Dennoch gibt es hin und wieder Fälle, in denen man Systeme ohne Internetverbindung hat. Vielleicht in einem abgeschotteten Sicherheitsbereich - irgendwo in einem Keller in den kein Internet zu bringen ist oder nur ein Bereich unter fremder Hoheit, der für einen selbst kein Internet zulässt. Auch wenn man auf Schiffen unterwegs ist, hat man üblicherweise nur sehr schmalbandiges Internet zur Verfügung, um ein paar Textmails zu schreiben. Möglichkeiten sind einige denkbar. Wenn dort Standard-Software aus Debian-Paketarchiven installiert werden soll, dann braucht es die Möglichkeit, diese Software dorthin zu bringen.
Verschiedene Möglichkeiten zur Offline Installation
Es gibt hier grundsätzlich verschiedene Methoden, um die Pakete auf den Rechner zu bekommen:
- Die Pakete und deren Abhängigkeiten gezielt herunterladen
- Den kompletten Mirror spiegeln, evtl. mit Ausnahmen
- Debian Datenträger (DVD, Blueray) erzeugen
Methode 1 - Pakete gezielt inkl. Abhängigkeiten herunterladen soll hier außen vor gelassen werden. Dies würde erfordern, dass man die Liste der Pakete, die man installieren möchte vorab kennt. Wer so etwas möchte, findet einen passenden Script-Schnipsel unter [1]. Hier soll aber ein lokales Paketarchiv geschaffen werden, mit dem man auf den normalen Pool von Paketen zugreifen können soll, und diese nach Bedarf installieren können soll. D. h. hier wird nur auf Methode 2 eingegangen.
Debian bietet weiterhin auch noch die Möglichkeit zum erstellen von Medien für die Offlineinstallation. Das wären dann aktuell ca. 25 DVD-Medien oder 5 Blue-Ray-Medien. Auch das Thema behandelt dieser Artikel nicht.
Einen Mirror herunterladen
Ein Mirror enthält alle Pakete für die gewählten Optionen hinsichtlich CPU-Architektur, Debian-Distribution und Sektionen. Es gibt verschiedene Werkzeuge, die dafür verwendet werden, z. B. ftpsync [2] oder debmirror [3]. ftpsync synchronisiert einen vollständigen Debian-Mirror mit allen Daten und Releases eines offiziellen Debian Spiegelservers. debmirror lädt nur einen partielles Archiv. Hier werden wir deswegen letzteres verwenden, weil das viel weniger Daten sind.
Systemvoraussetzungen
Diese Anleitung benötigt folgende Voraussetzungen:
- Ein installiertes Debian Bookworm
- Eine halbwegs schnelle Internetleitung: Mit einer 16 MBit Internetleitung ist der Download des Standardumfanges idealerweise nach ca. 15 Stunden erledigt.
- Der Festplattenspeicherplatz für das Standardscript benötigt ca. 100 GB Speicher. Das kann je nach Paketauswahl deutlich mehr werden. Ich empfehle eine sehr großzügige Reserve (500 GB - 1 TB), bis Ihr wisst, wieviel Speicherplatz Eure Konfiguration benötigt. Hinweise zu den Speicherplatzanforderungen eines Mirrors findet Ihr unter [4]
Schnellstart für Ungeduldige
Schnellstart für Eilige:
- debmirror-Paket installieren (Siehe nächster Punkt)
- reduziertes Script unten herunterladen und ausführen
- sources.list anlegen für das lokale Paketarchiv
Installation der benötigten Pakete
Zunächst wird das Paket debmirror installiert:
apt install debmirror
Das Standardscript
Das folgende ist das Standardscript für den Download der Daten.
#!/bin/bash mkdir -p ./repo debmirror --keyring=/usr/share/keyrings/debian-archive-keyring.gpg \ --getcontents \ --method=http \ --arch=amd64 \ --dist=bookworm,bookworm-updates \ --nosource \ --i18n \ --host=ftp.de.debian.org \ ./repo
Optionen zur Softwareauswahl
Sektionen einschränken
Standardmässig lädt debmirror alle verfügbaren Sektionen herunter: main,contrib,non-free und non-free-firmware. Wenn Ihr das nicht wollt, könnt Ihr das über den Schalter --section konfigurieren. Wenn Ihr unsicher seid, belasst die Einstellung, wie sie ist.
Beispiel
debmirror ... --sections=main,contrib ...
Diese Angabe lädt nur Pakete der Sektionen main und contrib herunter; non-free und non-free-firmware werden nicht heruntergeladen.
CPU-Architekturen einschränken
Die weitverbreiteteste CPU-Architektur ist derzeit amd64. Deswegen wurde die im Standardscript voreingestellt. Andere Bedürfnisse könnt Ihr mit --arch konfigurieren. Das bedeutet, dass Ihr ggf. deutlich mehr Speicherplatz bereitstellen müsst. Wenn Ihr unsicher seid, belasst es bei amd64.
Beispiel
debmirror ... --arch=amd64,i386 ...
Diese Angabe lädt sowohl alle Pakete der amd64-Architektur, als auch alle Paket der i386-Architektur.
Quellpakete herunterladen
Im Standardscript oben sind die Quellpakete mit --nosource abgewählt. Wenn Ihr die Quellpakete haben wollt, dann entfernt die --nosource Option. Wenn Ihr unsicher seid, verzichtet auf die Quellen.
Ausschlüsse von Paketen
Man kann auch einzelne Pakete vom Download ausschliessen. Das geht mit der --exclude Option. Möchte ich beispielsweise das Spiel "0 AD" ausschließen, kann ich folgende Schalter setzen:
debmirror ... --exclude 0ad --exclude 0ad-data
Das Spiel "0 AD" ist auf zwei Debianpaketen aufgeteilt. Deswegen müssen beide Pakete ausgeschlossen werden. Unten Im Abschnitt Resourcen ist eine Skriptvariante enthalten, die zahlreiche Ausschlüsse definiert und damit das lokale Paketarchiv um rund 30 GB verkleinert. Wenn Ihr unsicher seid, verwendet das unten aufgeführte Script für das reduzierte Paketarchiv. Ihr werdet die Pakete kaum vermissen.
Das Paketarchiv konfigurieren
Nachdem das Herunterladen fertig ist, könnt Ihr das Paketarchiv zu Eurem Rechner transportieren und dort entweder auf die interne Festplatte kopieren oder auf einem externen Datenträger belassen und bei Bedarf einhängen. Für die Anleitung gehe dich davon aus, dass das heruntergeladene Paketarchiv unter dem Pfad /usbdisk/repo eingehängt ist.
Jetzt muss das Paketarchiv dem System noch bekannt gemacht werden in der Datei /etc/apt/sources.list:
deb file:/usbdisk/repo stable main contrib non-free non-free-firmware
Das sollte der einzige Eintrag in dieser Datei sein. Wenn Ihr bei debmirror Auschlüsse von Sektionen definiert habt, dann dürfen diese ausgeschlossenen Sektionen hier natürlich auch nicht auftauchen.
Jetzt kann man testen ob das Paketarchiv funktioniert:
- apt update sollte ohne Fehlermeldungen durchlaufen
- apt-cache show nmap sollte die Paketbeschreibung des Netzwerkscanners nmap anzeigen
Damit seid Ihr fertig und Ihr könnt Euer Paketrepository jetzt nutzen.
Resourcen
Debmirror Script mit Paketausschlüssen
Das folgende debmirror Script enthält die folgenden Ausschlüsse:
- Viele große Spiele
- Alle Debug-Pakete, d. h. Pakete die auf -dbg enden
- Einzelne sehr große Pakete bzw. Paketgruppen:
- acl2 - eine LISP-Programmiersprache
- festvox - Samples für Sprachsynthese
- gis-api-doc - API-Dokumentation für das QGIS Projekt
- texlive-latex-extra-doc - Texlive Zusatzdokumentation
- libreoffice-dev-doc - Libre Office Entwicklerdokumentation
- texlive-fonts-extra - Texlive Zusatzschriftarten
#!/bin/bash for item in 0ad 0ad-data 0ad-data-common 7kaa 7kaa-data acl2 acl2-books acl2-books-certs acl2-books-source acl2-doc acl2-infix acl2-infix-source acl2-source asc asc-data asc-music ascd ascdc ascii ascii2binary asciijump asclock asclock-themes berusky2 berusky2-data binutils-aarch64-linux-gnu-dbg binutils-alpha-linux-gnu-dbg binutils-arc-linux-gnu-dbg binutils-arm-linux-gnueabi-dbg binutils-arm-linux-gnueabihf-dbg blobwars blobwars-data boswars boswars-data cdcd-dbg cython3-dbg dvdbackup-dbg extremetuxracer extremetuxracer-data festvox-kallpc16k festvox-kallpc8k festvox-kdlpc16k festvox-kdlpc8k festvox-suopuhe-lj fillets-ng flare-game flightgear foobillardplus foobillardplus-data freeciv freeciv-client-extras freeciv-client-gtk3 freeciv-client-qt freeciv-client-sdl freeciv-server freeorion freeorion-data frozen-bubble frozen-bubble-data graphicsmagick-dbg grub-coreboot-dbg grub-efi-amd64-dbg gtkpod-dbg ktuberling libadns1-dbg libao-dbg libc6-dbg libdkim1d-dbg libflickcurl0-dbg libftdi1-dbg libiptcdata0-dbg libitpp8v5-dbg liblua5.1-0-dbg liblua5.3-0-dbg libnet1-dbg libnl-3-200-dbg libpcre3-dbg libpsm-infinipath1-dbg libreoffice-dev-doc libvpb-dbg libxdg-basedir1-dbg libxmlrpc-epi0-dbg lincity-ng marsshooter marsshooter-data mecab-utils megaglest mono-dbg neverball nexuiz-data openarena openjdk-17-dbg python3-gdbm-dbg python3-tk-dbg scorched3d scorched3d-data scummvm stretchplayer-dbg supertux supertux-data supertuxkart supertuxkart-data syslog-ng-dbg tanglet texlive-fonts-recommended-doc texlive-latex-base-doc texlive-latex-extra-doc texlive-latex-recommended-doc texlive-metapost-doc trackballs trackballs-data valgrind-dbg warmux warmux-data warmux-servers warzone2100 warzone2100-data wesnoth wesnoth-core wesnoth-music widelands widelands-data xmoto zaz asciiart asciidoc asciidoc-base asciidoc-common asciidoc-dblatex asciidoc-fop asciidoc-tests asciidoctor asciidoctor-doc asciinema binutils-hppa-linux-gnu-dbg binutils-hppa64-linux-gnu-dbg binutils-i686-gnu-dbg binutils-i686-kfreebsd-gnu-dbg binutils-i686-linux-gnu-dbg binutils-ia64-linux-gnu-dbg binutils-m68k-linux-gnu-dbg binutils-mips64el-linux-gnuabi64-dbg binutils-mipsel-linux-gnu-dbg binutils-multiarch-dbg binutils-powerpc-linux-gnu-dbg binutils-powerpc64-linux-gnu-dbg binutils-powerpc64le-linux-gnu-dbg binutils-riscv64-linux-gnu-dbg binutils-s390x-linux-gnu-dbg binutils-sh4-linux-gnu-dbg binutils-sparc64-linux-gnu-dbg binutils-x86-64-kfreebsd-gnu-dbg binutils-x86-64-linux-gnu-dbg binutils-x86-64-linux-gnux32-dbg libbinutils-dbg libctf-nobfd0-dbg libctf0-dbg libgprofng0-dbg binutils-mips-linux-gnu-dbg binutils-mips64-linux-gnuabi64-dbg binutils-mips64-linux-gnuabin32-dbg binutils-mips64el-linux-gnuabin32-dbg binutils-mipsisa32r6-linux-gnu-dbg binutils-mipsisa32r6el-linux-gnu-dbg binutils-mipsisa64r6-linux-gnuabi64-dbg binutils-mipsisa64r6-linux-gnuabin32-dbg binutils-mipsisa64r6el-linux-gnuabi64-dbg binutils-mipsisa64r6el-linux-gnuabin32-dbg libboolstuff-0.1-0-dbg btanks btanks-data ceph-base-dbg ceph-common-dbg ceph-immutable-object-cache-dbg ceph-mds-dbg ceph-mgr-dbg ceph-mon-dbg ceph-osd-dbg cephfs-mirror-dbg libcephfs2-dbg librados2-dbg libradosstriper1-dbg librbd1-dbg librgw2-dbg libsqlite3-mod-ceph-dbg radosgw-dbg rbd-fuse-dbg rbd-mirror-dbg rbd-nbd-dbg libclutter-imcontext-0.1-0-dbg coinor-libipopt1v5-dbg connectagram connectagram-data connectome-workbench-dbg cube2 cube2-server cube2-data cube2font cupt-dbg davegnukem davegnukem-data davegnukem-datasrc libdb5.3-dbg dibbler-client-dbg dibbler-relay-dbg dibbler-server-dbg doomsday doomsday-common doomsday-data doomsday-server libdotconf0-dbg libedac1-dbg libenca-dbg endless-sky endless-sky-data endless-sky-high-dpi enigma enigma-data enigma-doc festvox-hi-nsk festvox-italp16k festvox-itapc16k festvox-mr-nsk festvox-te-nsk festvox-ca-ona-hts festvox-czech-dita festvox-czech-krb festvox-czech-machac festvox-czech-ph festvox-ru festvox-suopuhe-common festvox-suopuhe-mv festvox-us-slt-hts fillets-ng-data fillets-ng-data-cs fillets-ng-data-nl flightgear-data-ai flightgear-data-all flightgear-data-base flightgear-data-models flowgrind-dbg freeciv-client-gtk freeciv-data freeciv-ruleset-tools freecol freedink freedink-engine freedink-data freedink-dfarc freedink-dfarc-dbg freedroidrpg freedroidrpg-data lib32stdc++6-11-dbg libstdc++6-11-dbg libx32stdc++6-11-dbg lib32stdc++6-12-dbg libstdc++6-12-dbg libx32stdc++6-12-dbg gcompris-qt gcompris-qt-data gigalomania gigalomania-data gnumach-image-1.8-486-dbg gnumach-image-1.8-xen-486-dbg libperformance0.5-dbg grub-efi-ia32-dbg grub-emu-dbg grub-ieee1275-dbg grub-pc-dbg grub-xen-dbg libgsl-dbg hedgewars hedgewars-data hylafax-client-dbg hylafax-server-dbg libivykis0-dbg libkrb5-dbg ktuberling-data libapache2-mod-ldap-userdir-dbg libcerf1-dbg libkibi-dbg liboobs-1-5-dbg librep-dbg libspf2-2-dbg libxdmcp6-dbg libxxf86vm1-dbg lincity-ng-data linux-image-6.1.0-27-amd64-dbg linux-image-6.1.0-27-cloud-amd64-dbg linux-image-6.1.0-27-rt-amd64-dbg linux-image-6.1.0-29-amd64-dbg linux-image-6.1.0-29-cloud-amd64-dbg linux-image-6.1.0-29-rt-amd64-dbg linux-image-amd64-dbg linux-image-cloud-amd64-dbg linux-image-rt-amd64-dbg lordsawar lordsawar-data liblua5.4-0-dbg lugaru lugaru-data lxappearance-dbg lxappearance-obconf-dbg lxinput-dbg mecab mecab-ipadic mecab-ipadic-utf8 mecab-jumandic mecab-jumandic-utf8 mecab-naist-jdic mecab-naist-jdic-eucjp megaglest-data mit-scheme-dbg libmonoboehm-2.0-1-dbg libmonosgen-2.0-1-dbg mono-runtime-dbg moonshot-gss-eap-dbg moonshot-trust-router-dbg mp3splt-dbg naev naev-data nam-dbg libnabrit-dbg neverball-common neverball-data nexuiz nexuiz-server nexuiz-music nexuiz-textures ns2-dbg openarena-server openarena-085-data openarena-088-data openarena-data openarena-081-maps openarena-081-misc openarena-oacmp1 openarena-081-players openarena-081-players-mature openarena-081-textures openclonk openclonk-data libopencsg1-dbg pdfcube-dbg libpetsc-complex3.18-dbg libpetsc-real3.18-dbg libpetsc64-complex3.18-dbg libpetsc64-real3.18-dbg pidgin-mra-dbg pidgin-nateon-dbg plee-the-bear plee-the-bear-data plume-creator-dbg libpsurface-dbg psychtoolbox-3-dbg pushover pushover-data python3-gi-dbg libpython3-all-dbg libpython3-dbg python3-all-dbg python3-dbg libpython3.11-dbg python3.11-dbg qgis-api-doc redeclipse redeclipse-common redeclipse-server redeclipse-data librsskit0d-dbg librtfilter1-dbg scummvm-data scummvm-tools starfighter starfighter-data stimfit-dbg structure-synth-dbg systempreferences.app-dbg tanglet-data tclcl-dbg libtelepathy-farstream3-dbg texlive-pictures-doc texlive-fonts-extra texlive-fonts-extra-doc texlive-fonts-extra-links texlive-humanities-doc texlive-pstricks-doc texlive-publishers-doc texlive-science-doc tftp-hpa-dbg torcs torcs-data trigger-rally trigger-rally-data trousers-dbg ufoai ufoai-common ufoai-misc ufoai-server ufoai-tools ufoai-data ufoai-maps ufoai-textures ufoai-music ufoai-sound unagi-dbg unidic-mecab liburfkill-glib0-dbg ussp-push-dbg libustr-1.0-1-dbg libapache2-mod-ruwsgi-dbg libapache2-mod-uwsgi-dbg uwsgi-dbg libvdk2-dbg vsftpd-dbg warzone2100-music wesnoth-1.16 wesnoth-1.16-core wesnoth-1.16-data wesnoth-1.16-did wesnoth-1.16-dm wesnoth-1.16-dw wesnoth-1.16-ei wesnoth-1.16-httt wesnoth-1.16-l wesnoth-1.16-low wesnoth-1.16-music wesnoth-1.16-nr wesnoth-1.16-server wesnoth-1.16-sof wesnoth-1.16-sota wesnoth-1.16-sotbe wesnoth-1.16-thot wesnoth-1.16-tools wesnoth-1.16-trow wesnoth-1.16-tsg wesnoth-1.16-ttb wesnoth-1.16-utbs xen-hypervisor-4.17-amd64-dbg xen-utils-4.17-dbg xmoto-data zaz-data alien-arena alien-arena-server cytadela cytadela-data cytadela-dbg festvox-don festvox-en1 festvox-us1 festvox-us2 festvox-us3 festvox-rablpc16k festvox-rablpc8k frogatto pidgin-skype-dbg xserver-xorg-video-ivtv-dbg alien-arena-data festvox-ellpc11k frogatto-data sauerbraten sauerbraten-server ; do excludes="$excludes --exclude $item" done mkdir -p ./repo debmirror $excludes \ --keyring=/usr/share/keyrings/debian-archive-keyring.gpg \ --getcontents \ --method=http \ --arch=amd64 \ --dist=bookworm,bookworm-updates \ --nosource \ --i18n \ --host=ftp.de.debian.org \ ./repo
Anmerkungen
- ↑ Github Scriptschnipsel: Debianpaket inkl. Abhängigkeiten herunterladen
- ↑ ftpsync Tarball
- ↑ Das Paket debmirror ist als Debianpaket im Standardrepository verfügbar.debmirror Paket
- ↑ https://www.debian.org/mirror/size.de.html Debian -- Spiegel-Größe