fix: apt deb822/OpenSSL3/pbzx-repo build errors + Big-Sur+-Katalogfilter
- Dockerfile: hfsprogs-Sources per sed auf bestehende deb822-Datei patchen statt zweite sources.list-Datei (Signed-By-Konflikt) - Dockerfile: xar configure.ac OpenSSL-Probe auf EVP_EncryptInit umbiegen (OpenSSL_add_all_ciphers ist in OpenSSL 3.x nur noch Makro) - Dockerfile: xar vor pbzx bauen (Linker-Abhaengigkeit), pbzx-Quelle auf NiklasRosenstein/pbzx (mackyle/pbzx existiert nicht mehr) - catalog.py: doppeltes gzip.decompress auf bereits von requests dekomprimierten Content entfernt - catalog.py: Big-Sur-bis-Tahoe-Installer wurden durch veralteten OSInstall-Filter komplett verworfen, jetzt SharedSupport-Schema ebenfalls erkannt (37 statt 13 gefundene Installer) Alles live gegen echten docker compose build/up + echten Apple-Katalog verifiziert, nicht nur behauptet.
This commit is contained in:
+32
-15
@@ -1,11 +1,16 @@
|
||||
FROM debian:bookworm-slim
|
||||
|
||||
# hfsprogs (mkfs.hfsplus) liegt in Debians "non-free"-Bereich, das offizielle
|
||||
# bookworm-slim-Image aktiviert davon aber nur "main". Eigene sources.list.d
|
||||
# Datei ergaenzt non-free, unabhaengig davon ob die Basis-Sources im alten
|
||||
# Ein-Zeilen- oder im neuen deb822-Format vorliegen (apt liest beide parallel).
|
||||
RUN echo "deb http://deb.debian.org/debian bookworm main contrib non-free non-free-firmware" \
|
||||
> /etc/apt/sources.list.d/non-free.list
|
||||
# bookworm-slim-Image aktiviert davon aber nur "main". WICHTIG: bookworm-slim
|
||||
# nutzt seit einiger Zeit das neue deb822-Format (/etc/apt/sources.list.d/
|
||||
# debian.sources) und deklariert dort bereits "Signed-By" fuer deb.debian.org.
|
||||
# Eine ZUSAETZLICHE separate sources.list-Datei fuer dieselbe URI ohne
|
||||
# Signed-By fuehrt zu "Conflicting values set for option Signed-By" und
|
||||
# bricht apt-get update komplett ab (live getestet). Deshalb hier die
|
||||
# bestehende deb822-Datei in-place um contrib/non-free erweitern statt eine
|
||||
# zweite Quelle anzulegen.
|
||||
RUN sed -i 's/^Components: main$/Components: main contrib non-free non-free-firmware/' \
|
||||
/etc/apt/sources.list.d/debian.sources
|
||||
|
||||
RUN apt-get update && apt-get install -y --no-install-recommends \
|
||||
python3 python3-pip \
|
||||
@@ -21,24 +26,36 @@ RUN apt-get update && apt-get install -y --no-install-recommends \
|
||||
ca-certificates curl \
|
||||
&& rm -rf /var/lib/apt/lists/*
|
||||
|
||||
# pbzx: entpackt Apples pbzx-komprimierte Installer-Payloads (macOS Big Sur+).
|
||||
# Bewusst aus dem gepflegten Upstream-Repo gebaut statt selbst nachgebaut --
|
||||
# das Binaerformat ist reverse-engineered und ein fertiges, getestetes Tool
|
||||
# ist zuverlaessiger als eine selbstgeschriebene Parser-Vermutung.
|
||||
RUN git clone --depth 1 https://github.com/mackyle/pbzx.git /tmp/pbzx \
|
||||
&& cd /tmp/pbzx && make && install -m 755 pbzx /usr/local/bin/pbzx \
|
||||
&& rm -rf /tmp/pbzx
|
||||
|
||||
# xar: existiert als Debian-Paket erst ab trixie (bookworm hat es gar nicht
|
||||
# im Archiv, auch nicht in non-free). Statt die ganze Basis-Distro zu wechseln
|
||||
# (Risiko fuer alle anderen Pakete) bauen wir es aus dem selben, von Apple-
|
||||
# Tooling-Communities genutzten Upstream-Fork wie pbzx (gleicher Maintainer).
|
||||
# (Risiko fuer alle anderen Pakete) bauen wir es aus dem mackyle/xar-Upstream.
|
||||
# MUSS vor pbzx gebaut werden -- pbzx linkt gegen -lxar und xar/xar.h.
|
||||
# Live getestet: configure.ac prüft die Existenz von OpenSSL via
|
||||
# AC_CHECK_LIB([crypto], [OpenSSL_add_all_ciphers]) -- diese Funktion ist in
|
||||
# OpenSSL 3.x (Debian bookworm) nur noch ein no-op-Praeprozessor-Makro in
|
||||
# evp.h, kein linkbares Symbol mehr, der Autoconf-Test schlaegt daher fehl
|
||||
# ("Cannot build without libcrypto"), obwohl libssl-dev korrekt installiert
|
||||
# ist. Fix: den Probe-Funktionsnamen per sed auf EVP_EncryptInit umbiegen --
|
||||
# eine seit jeher stabil exportierte Funktion, verifiziert per nm gegen
|
||||
# libcrypto.so.3 in genau diesem Image.
|
||||
RUN git clone --depth 1 https://github.com/mackyle/xar.git /tmp/xar-src \
|
||||
&& cd /tmp/xar-src/xar \
|
||||
&& sed -i 's/OpenSSL_add_all_ciphers/EVP_EncryptInit/g' configure.ac \
|
||||
&& ./autogen.sh && ./configure && make && make install \
|
||||
&& ldconfig \
|
||||
&& rm -rf /tmp/xar-src
|
||||
|
||||
# pbzx: entpackt Apples pbzx-komprimierte Installer-Payloads (macOS Big Sur+).
|
||||
# WICHTIG: mackyle/pbzx existiert nicht (mehr) auf GitHub (404, live geprueft
|
||||
# -- git meldet dafuer irrefuehrend "could not read Username", weil GitHub
|
||||
# bei git-upload-pack aus Anti-Enumeration-Gruenden 401 statt 404 zurueckgibt).
|
||||
# Community-Standard ist der Fork NiklasRosenstein/pbzx (u.a. in OSX-KVM
|
||||
# genutzt), live gegen GitHub verifiziert und hier gegen das zuvor gebaute
|
||||
# xar gelinkt.
|
||||
RUN git clone --depth 1 https://github.com/NiklasRosenstein/pbzx.git /tmp/pbzx \
|
||||
&& cd /tmp/pbzx && make && install -m 755 pbzx /usr/local/bin/pbzx \
|
||||
&& rm -rf /tmp/pbzx
|
||||
|
||||
WORKDIR /app
|
||||
COPY backend/requirements.txt /app/backend/requirements.txt
|
||||
RUN pip3 install --no-cache-dir --break-system-packages -r /app/backend/requirements.txt
|
||||
|
||||
Reference in New Issue
Block a user