diff --git a/Dockerfile b/Dockerfile index 0b621bf..dd67332 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,14 +1,22 @@ 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 + RUN apt-get update && apt-get install -y --no-install-recommends \ python3 python3-pip \ util-linux \ gdisk \ hfsprogs \ dmg2img \ - xar \ cpio \ xz-utils liblzma-dev \ + libxml2-dev libssl-dev zlib1g-dev \ + autoconf automake libtool pkg-config \ git build-essential \ ca-certificates curl \ && rm -rf /var/lib/apt/lists/* @@ -21,6 +29,16 @@ 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). +RUN git clone --depth 1 https://github.com/mackyle/xar.git /tmp/xar-src \ + && cd /tmp/xar-src/xar \ + && ./autogen.sh && ./configure && make && make install \ + && ldconfig \ + && rm -rf /tmp/xar-src + WORKDIR /app COPY backend/requirements.txt /app/backend/requirements.txt RUN pip3 install --no-cache-dir --break-system-packages -r /app/backend/requirements.txt diff --git a/README.md b/README.md index d49e4bd..1c47579 100644 --- a/README.md +++ b/README.md @@ -69,6 +69,14 @@ Block-Device. Wenn du das falsche Geraet auswaehlst, sind die Daten weg. Vor dem Start immer pruefen, welcher Stick tatsaechlich gemeint ist (Groesse und Modell in der GUI vergleichen). +## Build-Hinweis (hfsprogs / xar) +`hfsprogs` liegt in Debians non-free-Bereich (Dockerfile aktiviert das +gezielt ueber eine eigene sources.list.d-Datei), `xar` gibt es in +`bookworm` ueberhaupt nicht als Paket — das wird deshalb aus dem +Upstream-Repo (`mackyle/xar`, selber Maintainer wie das schon genutzte +`pbzx`) selbst gebaut. Macht den ersten Build minimal langsamer, aber +zuverlaessiger als ein Distro-Wechsel. + ## Voraussetzungen auf dem Host - Docker + Docker Compose - Linux (getestet gegen die Grundannahmen von `lsblk`/`/dev`/`udev`; auf