From 6e2c92acad25224e0bb83db06553120e5b29d10b Mon Sep 17 00:00:00 2001 From: mstoeck3 Date: Wed, 29 Apr 2026 16:40:38 +0200 Subject: [PATCH 1/7] Add Flatpak packaging alongside existing Snap MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Introduces org.sleuthkit.Autopsy.yaml (flatpak-builder manifest) and supporting files to produce a distributable .flatpak bundle without Flathub involvement, mirroring how the Snap is released as a GitHub Release asset. Key design choices: - Runtime: org.freedesktop.Platform//25.08 + openjdk17 SDK extension - All 5 forensics libs (libewf-legacy, libafflib, libvmdk, libvhdi, libvslvm) and testdisk built from source with release tarballs - Sleuth Kit built offline: all 13 Maven deps + case-uco deps declared as manifest sources with verified SHA256 checksums - Autopsy ant build-zip requires --share=network (NetBeans platform download is too large to pre-bundle); resulting bundle installs offline - TSK_HOME stub persisted to /app/tsk-build/ so the autopsy module can find the TSK JARs across module boundaries - Requires ≥20 GB free disk space on the build machine Remaining open issue: the Autopsy ZIP extraction step ran out of space in the previous test run; fixed by extracting to /app/ directly instead of /tmp/ (which has limited space in the flatpak overlay). Co-Authored-By: Claude Sonnet 4.6 --- .github/workflows/build-flatpak.yml | 62 +++++ .gitignore | 5 + flatpak/README.md | 103 ++++++++ flatpak/autopsywrapper.sh | 4 + flatpak/org.sleuthkit.Autopsy.desktop | 10 + flatpak/org.sleuthkit.Autopsy.metainfo.xml | 57 ++++ org.sleuthkit.Autopsy.yaml | 288 +++++++++++++++++++++ 7 files changed, 529 insertions(+) create mode 100644 .github/workflows/build-flatpak.yml create mode 100644 flatpak/README.md create mode 100644 flatpak/autopsywrapper.sh create mode 100644 flatpak/org.sleuthkit.Autopsy.desktop create mode 100644 flatpak/org.sleuthkit.Autopsy.metainfo.xml create mode 100644 org.sleuthkit.Autopsy.yaml diff --git a/.github/workflows/build-flatpak.yml b/.github/workflows/build-flatpak.yml new file mode 100644 index 00000000000..7c3fe932b71 --- /dev/null +++ b/.github/workflows/build-flatpak.yml @@ -0,0 +1,62 @@ +name: Build Flatpak Bundle + +# Mirrors the Snap distribution model: builds on deliberate tags and on-demand. +# On a tag push: the .flatpak bundle is attached to the GitHub Release. +# On workflow_dispatch: the bundle is uploaded as a workflow artifact. +on: + push: + tags: + - 'autopsy-*' + workflow_dispatch: + +jobs: + build: + name: Build Flatpak bundle + runs-on: ubuntu-latest + + steps: + - name: Checkout source + uses: actions/checkout@v4 + + - name: Install Flatpak and flatpak-builder + run: | + sudo apt-get update + sudo apt-get install -y flatpak flatpak-builder + + - name: Add Flathub remote (provides runtime and SDK) + run: | + flatpak remote-add --user --if-not-exists \ + flathub https://dl.flathub.org/repo/flathub.flatpakrepo + + - name: Install Flatpak runtime and SDK + run: | + flatpak install --user --noninteractive \ + org.freedesktop.Platform//24.08 \ + org.freedesktop.Sdk//24.08 \ + org.freedesktop.Sdk.Extension.openjdk17//24.08 + + - name: Build Flatpak + run: | + flatpak-builder \ + --user \ + --force-clean \ + --repo=repo \ + build-dir \ + org.sleuthkit.Autopsy.yaml + + - name: Create single-file bundle + run: flatpak build-bundle repo autopsy.flatpak org.sleuthkit.Autopsy + + - name: Upload bundle as release asset + if: startsWith(github.ref, 'refs/tags/') + uses: softprops/action-gh-release@v2 + with: + files: autopsy.flatpak + + - name: Upload bundle as workflow artifact + if: github.event_name == 'workflow_dispatch' + uses: actions/upload-artifact@v4 + with: + name: autopsy-flatpak + path: autopsy.flatpak + retention-days: 14 diff --git a/.gitignore b/.gitignore index 65e308fc6d4..75acf2253e3 100755 --- a/.gitignore +++ b/.gitignore @@ -114,3 +114,8 @@ hs_err_pid*.log /Tools/autopsy-mcp-stdio/dist/ .claude + +# Flatpak build artifacts +build-dir/ +.flatpak-builder/ +*.flatpak diff --git a/flatpak/README.md b/flatpak/README.md new file mode 100644 index 00000000000..cc5d68acd36 --- /dev/null +++ b/flatpak/README.md @@ -0,0 +1,103 @@ +# Autopsy Flatpak + +Packages Autopsy as a distributable Flatpak bundle (`.flatpak` file) for direct installation on +Linux systems. The bundle is self-contained and can be installed and run fully offline once built. + +## Distribution + +This package targets direct distribution (not Flathub). The `.flatpak` bundle is attached as a +release asset to GitHub Releases, similar to how the Snap is distributed. + +## Prerequisites (build machine) + +- `flatpak` and `flatpak-builder` installed +- Flathub remote added (provides the runtime and SDK): + ```sh + flatpak remote-add --if-not-exists flathub https://dl.flathub.org/repo/flathub.flatpakrepo + ``` +- `org.freedesktop.Platform//25.08`, `org.freedesktop.Sdk//25.08`, and + `org.freedesktop.Sdk.Extension.openjdk17//25.08` installed: + ```sh + flatpak install flathub org.freedesktop.Platform//25.08 org.freedesktop.Sdk//25.08 \ + org.freedesktop.Sdk.Extension.openjdk17//25.08 + ``` +- Internet access during the build (needed for downloading the NetBeans platform and Autopsy + Maven dependencies; the resulting bundle installs and runs offline) +- **≥ 20 GB of free disk space** on the build machine — the NetBeans platform download, the + Autopsy compilation, and the intermediate flatpak overlay together require significant space + +## Build + +From the repository root: + +```sh +flatpak-builder --force-clean build-dir org.sleuthkit.Autopsy.yaml +``` + +Build time is typically 15–30 minutes (dominated by the NetBeans platform download and Autopsy +compilation). All Sleuth Kit Maven dependencies are pre-declared in the manifest with verified +SHA256 checksums and need no network access. The Autopsy `ant build-zip` step does require +network to download the NetBeans platform (~100 MB) and Autopsy's own dependency tree. + +## Bundle and install + +```sh +# Create a single-file distributable bundle +flatpak build-bundle ~/.local/share/flatpak/repo autopsy.flatpak org.sleuthkit.Autopsy + +# Install from the bundle (no network needed) +flatpak install --user autopsy.flatpak + +# Run +flatpak run org.sleuthkit.Autopsy +``` + +## CI / GitHub Actions + +`.github/workflows/build-flatpak.yml` builds the bundle automatically on tag pushes +(`autopsy-*`) and on manual dispatch. The resulting `autopsy.flatpak` is attached to the +GitHub Release when triggered by a tag. + +## Design decisions + +### Runtime +`org.freedesktop.Platform//25.08` with `org.freedesktop.Sdk.Extension.openjdk17` — avoids +bundling a full JRE by using the SDK extension mechanism. JDK 17 is required by Autopsy. + +### Network during build +The manifest sets `build-args: [--share=network]` globally. This is necessary because: +- Autopsy's `ant build-zip` downloads the Apache NetBeans platform at build time +- Pre-bundling all NetBeans modules individually would be impractical (hundreds of JARs) + +All Sleuth Kit Maven dependencies (13 JARs) ARE pre-bundled in the manifest with SHA256 +checksums, so the Sleuth Kit module builds fully offline. + +### Permissions +`--device=all` is required for forensics work (raw block device access). Users may additionally +need to run Autopsy with appropriate OS group membership (e.g., `disk` group) to access local +disks in the `/dev/` directory. + +### Hugepages (Solr) +Flatpak cannot grant access to `/sys/kernel/mm/hugepages`. Solr runs without hugepages, which +is a performance trade-off only (not a functional blocker). + +## Known limitations + +Inherited from Autopsy's Linux support: +- Recent Activity module is non-functional +- LEAPP processors are non-functional +- HEIF image processing is unavailable +- Video thumbnails are unavailable + +## Module build order + +1. `openjdk` — installs JDK 17 from the SDK extension into `/app/jdk` +2. `ant` — installs Apache Ant 1.10.15 into `/app/ant` +3. `libewf` (legacy) — E01 forensics image support +4. `libafflib` — AFF forensics format support +5. `libvmdk` — VMware disk image support +6. `libvhdi` — VHD disk image support +7. `libvslvm` — LVM volume support +8. `testdisk` — provides `photorec` (required by `unix_setup.sh`) +9. `sleuthkit` — native TSK libraries + Java bindings (offline Maven build) +10. `autopsy` — Autopsy itself, built from local source via `ant build-zip` diff --git a/flatpak/autopsywrapper.sh b/flatpak/autopsywrapper.sh new file mode 100644 index 00000000000..9227671f0a2 --- /dev/null +++ b/flatpak/autopsywrapper.sh @@ -0,0 +1,4 @@ +#!/bin/bash +# Ensure Autopsy's tmp dir exists before launch (mirrors Snap wrapper behaviour). +mkdir -p "${XDG_RUNTIME_DIR:-/tmp}/autopsy-tmp" +exec /app/autopsy/bin/autopsy "$@" diff --git a/flatpak/org.sleuthkit.Autopsy.desktop b/flatpak/org.sleuthkit.Autopsy.desktop new file mode 100644 index 00000000000..24b16dd58b2 --- /dev/null +++ b/flatpak/org.sleuthkit.Autopsy.desktop @@ -0,0 +1,10 @@ +[Desktop Entry] +Name=Autopsy +Comment=A graphical interface to The Sleuth Kit and other digital forensics tools. +GenericName=DFIR Tool +Exec=org.sleuthkit.Autopsy +Icon=org.sleuthkit.Autopsy +Type=Application +Categories=Science;Security; +Keywords=autopsy;sleuth;kit;dfir;forensics; +StartupNotify=true diff --git a/flatpak/org.sleuthkit.Autopsy.metainfo.xml b/flatpak/org.sleuthkit.Autopsy.metainfo.xml new file mode 100644 index 00000000000..a2b0297b961 --- /dev/null +++ b/flatpak/org.sleuthkit.Autopsy.metainfo.xml @@ -0,0 +1,57 @@ + + + org.sleuthkit.Autopsy + CC0-1.0 + Apache-2.0 + Autopsy + Extensible digital forensics platform + +

+ Autopsy® is the premier open source forensics platform which is fast, + easy-to-use, and capable of analyzing all types of mobile devices and + digital media. Its plug-in architecture enables extensibility from + community-developed or custom-built modules. Autopsy evolves to meet the + needs of hundreds of thousands of professionals in law enforcement, + national security, litigation support, and corporate investigation. +

+

+ Note: Due to the system access necessary for Autopsy to perform forensics + work, this Flatpak uses --device=all to access block devices. Raw disk + access may additionally require running with appropriate OS permissions + (e.g., membership in the disk group). +

+

Known limitations on Linux compared to Windows:

+
    +
  • Recent Activity module is non-functional
  • +
  • LEAPP processors are non-functional
  • +
  • HEIF image processing is unavailable
  • +
  • Video thumbnails are unavailable
  • +
+
+ https://www.autopsy.com/ + https://github.com/sleuthkit/autopsy/issues + https://github.com/sleuthkit/autopsy + + Science + Security + + + forensics + dfir + sleuthkit + disk + + + + Autopsy case dashboard + + + + + +

Current development build from the develop branch.

+
+
+
+ +
diff --git a/org.sleuthkit.Autopsy.yaml b/org.sleuthkit.Autopsy.yaml new file mode 100644 index 00000000000..bfe6e1a6295 --- /dev/null +++ b/org.sleuthkit.Autopsy.yaml @@ -0,0 +1,288 @@ +# Flatpak manifest for Autopsy digital forensics platform. +# Build with: flatpak-builder --force-clean build-dir org.sleuthkit.Autopsy.yaml +# Bundle with: flatpak build-bundle ~/.local/share/flatpak/repo autopsy.flatpak org.sleuthkit.Autopsy +# Install with: flatpak install --user autopsy.flatpak +# Run with: flatpak run org.sleuthkit.Autopsy +# +# Note: Hugepages for Solr (/sys/kernel/mm/hugepages) are not accessible in Flatpak's +# sandbox. Solr runs without hugepages, which is a performance trade-off, not a blocker. +# Users needing raw block-device access should run: flatpak run --device=all org.sleuthkit.Autopsy + +id: org.sleuthkit.Autopsy +runtime: org.freedesktop.Platform +runtime-version: '25.08' +sdk: org.freedesktop.Sdk +sdk-extensions: + - org.freedesktop.Sdk.Extension.openjdk17 +command: /app/autopsy/bin/autopsywrapper.sh + +build-options: + # --share=network allows the autopsy module's ant build-zip to download the NetBeans + # platform and Maven deps at build time. Acceptable since this is a non-Flathub package. + build-args: + - --share=network + env: + JAVA_HOME: /usr/lib/sdk/openjdk17/jvm/openjdk-17 + PATH: /usr/lib/sdk/openjdk17/bin:/app/ant/bin:/usr/bin:/bin + +finish-args: + - --device=all + - --filesystem=home + - --filesystem=/media:ro + - --filesystem=/mnt:ro + - --filesystem=/run/media:ro + - --share=network + - --share=ipc + - --socket=x11 + - --socket=pulseaudio + - --env=jdkhome=/app/jdk + - --env=JAVA_HOME=/app/jdk + - --env=SOLR_JAVA_HOME=/app/jdk + - --env=LD_LIBRARY_PATH=/app/lib + - --env=SOLR_LOGS_DIR=/var/data/autopsy/solr/logs + - --env=SOLR_PID_DIR=/var/data/autopsy/solr/logs + +modules: + + - name: openjdk + buildsystem: simple + build-commands: + - /usr/lib/sdk/openjdk17/install.sh + sources: [] + + - name: ant + buildsystem: simple + sources: + - type: archive + url: https://archive.apache.org/dist/ant/binaries/apache-ant-1.10.15-bin.tar.gz + sha256: 71334d7e5d98cfe53d6c429a648a5021137a967378667306c5f613dff5180506 + build-commands: + - mkdir -p /app/ant + - cp -rp . /app/ant/ + + # libewf-legacy provides the API (libewf_handle_read_random) expected by both + # sleuthkit 4.15.0 and testdisk 7.2. The newer experimental libewf removed that API. + - name: libewf + buildsystem: autotools + config-opts: + - --enable-python=no + - --enable-static=no + sources: + - type: archive + url: https://github.com/libyal/libewf-legacy/releases/download/20140816/libewf-20140816.tar.gz + sha256: 6b2d078fb3861679ba83942fea51e9e6029c37ec2ea0c37f5744256d6f7025a9 + + - name: libafflib + buildsystem: simple + sources: + - type: archive + url: https://github.com/sshock/AFFLIBv3/archive/refs/tags/v3.7.22.tar.gz + sha256: 67481fc520ff927bf61aea0bf2d660feb73e24cc329335bebb064f8f12115dcb + build-commands: + - autoreconf -i + - ./configure --prefix=/app --enable-static=no + - make -j$(nproc) + - make install + + - name: libvmdk + buildsystem: autotools + config-opts: + - --enable-static=no + sources: + - type: archive + url: https://github.com/libyal/libvmdk/releases/download/20240510/libvmdk-alpha-20240510.tar.gz + sha256: 985966c252cb9cf252e594830f0889f7b74250604b1d5705c799b120e66b9b9c + + - name: libvhdi + buildsystem: autotools + config-opts: + - --enable-static=no + sources: + - type: archive + url: https://github.com/libyal/libvhdi/releases/download/20251119/libvhdi-alpha-20251119.tar.gz + sha256: 026cc41e506bef433999090a777519a3cb471510dc352fa44d6867cf6a0e7990 + + - name: libvslvm + buildsystem: autotools + config-opts: + - --enable-static=no + sources: + - type: archive + url: https://github.com/libyal/libvslvm/releases/download/20240504/libvslvm-experimental-20240504.tar.gz + sha256: 7217676f74ba145f9c2ba6b1c6296d7fa041c2ab2673d34dc06b53511aa65833 + + - name: testdisk + buildsystem: autotools + sources: + - type: archive + url: https://www.cgsecurity.org/testdisk-7.2.tar.bz2 + sha256: f8343be20cb4001c5d91a2e3bcd918398f00ae6d8310894a5a9f2feb813c283f + + - name: sleuthkit + buildsystem: simple + sources: + - type: git + url: https://github.com/sleuthkit/sleuthkit.git + tag: sleuthkit-4.15.0 + # ivy bootstrap JAR — placed in ANT_HOME/lib so init-ivy can load it without downloading + - type: file + url: https://repo1.maven.org/maven2/org/apache/ivy/ivy/2.5.0/ivy-2.5.0.jar + sha256: 2f4c835b52311df922f8a8eb057843de5485088b234ccd03e478b9066b5e6bfc + dest-filename: ivy-2.5.0.jar + # Maven dependencies pre-placed in bindings/java/lib/ for offline Ant build (-Doffline=true) + - type: file + url: https://repo1.maven.org/maven2/joda-time/joda-time/2.13.1/joda-time-2.13.1.jar + sha256: a9be47b46390f7a6dabacc7c055b4feb6fb8f2225477a7270a8233b296e26677 + dest: bindings/java/lib + dest-filename: joda-time-2.13.1.jar + - type: file + url: https://repo1.maven.org/maven2/com/google/guava/guava/33.4.0-jre/guava-33.4.0-jre.jar + sha256: b918c98a7e44dbe94ebd9fe3e40cddaadb5a93e6a78eb6008b42df237241e538 + dest: bindings/java/lib + dest-filename: guava-33.4.0-jre.jar + - type: file + url: https://repo1.maven.org/maven2/com/google/guava/failureaccess/1.0.2/failureaccess-1.0.2.jar + sha256: 8a8f81cf9b359e3f6dfa691a1e776985c061ef2f223c9b2c80753e1b458e8064 + dest: bindings/java/lib + dest-filename: failureaccess-1.0.2.jar + - type: file + url: https://repo1.maven.org/maven2/org/apache/commons/commons-lang3/3.17.0/commons-lang3-3.17.0.jar + sha256: 6ee731df5c8e5a2976a1ca023b6bb320ea8d3539fbe64c8a1d5cb765127c33b4 + dest: bindings/java/lib + dest-filename: commons-lang3-3.17.0.jar + - type: file + url: https://repo1.maven.org/maven2/commons-validator/commons-validator/1.9.0/commons-validator-1.9.0.jar + sha256: c3c14748e2d78db58df88808740711bd643b32c45ffa7b8a739f00fb467cd7d7 + dest: bindings/java/lib + dest-filename: commons-validator-1.9.0.jar + - type: file + url: https://repo1.maven.org/maven2/com/google/code/gson/gson/2.12.1/gson-2.12.1.jar + sha256: ebee13d5fb7477cd7f1cc010e0c356df8ca80709715248da97f79e35ccb4fbec + dest: bindings/java/lib + dest-filename: gson-2.12.1.jar + - type: file + url: https://repo1.maven.org/maven2/junit/junit/4.13.2/junit-4.13.2.jar + sha256: 8e495b634469d64fb8acfa3495a065cbacc8a0fff55ce1e31007be4c16dc57d3 + dest: bindings/java/lib + dest-filename: junit-4.13.2.jar + - type: file + url: https://repo1.maven.org/maven2/io/github/java-diff-utils/java-diff-utils/4.12/java-diff-utils-4.12.jar + sha256: 9990a2039778f6b4cc94790141c2868864eacee0620c6c459451121a901cd5b5 + dest: bindings/java/lib + dest-filename: java-diff-utils-4.12.jar + - type: file + url: https://repo1.maven.org/maven2/org/xerial/sqlite-jdbc/3.49.1.0/sqlite-jdbc-3.49.1.0.jar + sha256: 5c8609d2ca341deb8c6f71778974b5ba4995c7d32d7c7c89d9392a3e72c39291 + dest: bindings/java/lib + dest-filename: sqlite-jdbc-3.49.1.0.jar + - type: file + url: https://repo1.maven.org/maven2/org/postgresql/postgresql/42.7.5/postgresql-42.7.5.jar + sha256: 69020b3bd20984543e817393f2e6c01a890ef2e37a77dd11d6d8508181d079ab + dest: bindings/java/lib + dest-filename: postgresql-42.7.5.jar + - type: file + url: https://repo1.maven.org/maven2/com/mchange/c3p0/0.12.0/c3p0-0.12.0.jar + sha256: 4d85a7d4643a22df7e9e21a159e022de462530727443ec83d190321eb305851d + dest: bindings/java/lib + dest-filename: c3p0-0.12.0.jar + - type: file + url: https://repo1.maven.org/maven2/com/mchange/mchange-commons-java/0.4.0/mchange-commons-java-0.4.0.jar + sha256: fd88e385a38df7701177b076e35048a841dc5df1118c6b2d860bba08c41bc0b6 + dest: bindings/java/lib + dest-filename: mchange-commons-java-0.4.0.jar + - type: file + url: https://repo1.maven.org/maven2/com/zaxxer/SparseBitSet/1.3/SparseBitSet-1.3.jar + sha256: f76b85adb0c00721ae267b7cfde4da7f71d3121cc2160c9fc00c0c89f8c53c8a + dest: bindings/java/lib + dest-filename: SparseBitSet-1.3.jar + # case-uco sub-module uses older gson 2.8.5 and junit 4.12 with their own lib/ dir + - type: file + url: https://repo1.maven.org/maven2/com/google/code/gson/gson/2.8.5/gson-2.8.5.jar + sha256: 233a0149fc365c9f6edbd683cfe266b19bdc773be98eabdaf6b3c924b48e7d81 + dest: case-uco/java/lib + dest-filename: gson-2.8.5.jar + - type: file + url: https://repo1.maven.org/maven2/junit/junit/4.12/junit-4.12.jar + sha256: 59721f0805e223d84b90677887d9ff567dc534d7c502ca903c0c2b17f05c116a + dest: case-uco/java/lib + dest-filename: junit-4.12.jar + - type: file + url: https://repo1.maven.org/maven2/org/hamcrest/hamcrest-core/1.3/hamcrest-core-1.3.jar + sha256: 66fdef91e9739348df7a096aa384a5685f4e875584cce89386a7a47251c4d8e9 + dest: case-uco/java/lib + dest-filename: hamcrest-core-1.3.jar + build-options: + env: + JAVA_HOME: /usr/lib/sdk/openjdk17/jvm/openjdk-17 + # Points ivy.home to /app/ant so init-ivy finds ivy.jar in /app/ant/lib/ + IVY_HOME: /app/ant + build-commands: + - cp ivy-2.5.0.jar /app/ant/lib/ivy.jar + - ./bootstrap + # --enable-offline makes the Makefile pass -Doffline=true to Ant, skipping Maven downloads. + # JARs pre-placed in bindings/java/lib/ (via sources above) are used instead. + - ./configure --prefix=/app --enable-java --enable-offline + # Redirect default-jar-location away from /usr/share/java (read-only in SDK) to the + # same lib/ dir that already contains all pre-placed Maven JARs. + - sed -i "s|location=\"/usr/share/java\"|location=\"$(pwd)/bindings/java/lib\"|" bindings/java/build.xml + - make -j$(nproc) + - make install + # Create TSK_HOME stub: Autopsy's build.xml (getTSKJars target) expects the source-tree + # layout of sleuthkit (bindings/java/dist/, case-uco/java/dist/, bindings/java/lib/). + # Since the build dir is gone after this module, we persist these artifacts to /app/tsk-build/. + - mkdir -p /app/tsk-build/bindings/java/dist /app/tsk-build/bindings/java/lib /app/tsk-build/case-uco/java/dist + - cp bindings/java/dist/sleuthkit-4.15.0.jar /app/tsk-build/bindings/java/dist/ + - cp case-uco/java/dist/sleuthkit-caseuco-4.15.0.jar /app/tsk-build/case-uco/java/dist/ + - cp bindings/java/lib/sqlite-jdbc-3.49.1.0.jar /app/tsk-build/bindings/java/lib/ + - cp bindings/java/lib/postgresql-42.7.5.jar /app/tsk-build/bindings/java/lib/ + - cp bindings/java/lib/c3p0-0.12.0.jar /app/tsk-build/bindings/java/lib/ + - cp bindings/java/lib/mchange-commons-java-0.4.0.jar /app/tsk-build/bindings/java/lib/ + - cp bindings/java/lib/SparseBitSet-1.3.jar /app/tsk-build/bindings/java/lib/ + + - name: autopsy + buildsystem: simple + sources: + - type: dir + path: . + build-options: + env: + JAVA_HOME: /usr/lib/sdk/openjdk17/jvm/openjdk-17 + TSK_JAVA_LIB_PATH: /app/share/java + # TSK_HOME must point to the sleuthkit source/build tree layout that Autopsy's + # Core/build.xml (getTSKJars target) expects. We persist it from the sleuthkit + # module to /app/tsk-build/. + TSK_HOME: /app/tsk-build + build-commands: + # Build Autopsy ZIP (NetBeans platform is downloaded if missing) + - | + NETBEANS_PLAT_VER=$(grep "netbeans-plat-version=" nbproject/platform.properties | cut -d'=' -f2) + AUTOPSY_PLATFORM_PATH="$(pwd)/netbeans-plat/$NETBEANS_PLAT_VER" + AUTOPSY_HARNESS_PATH="$AUTOPSY_PLATFORM_PATH/harness" + ant -Dnbplatform.active.dir="$AUTOPSY_PLATFORM_PATH" \ + -Dnbplatform.default.harness.dir="$AUTOPSY_HARNESS_PATH" \ + build-zip + + # Extract the built ZIP into /app/autopsy (use /app/ to avoid /tmp space limits) + - | + set -e + AUTOPSY_ZIP=$(find dist -maxdepth 1 -name "autopsy-*.zip" | head -1) + echo "Autopsy ZIP: $AUTOPSY_ZIP" + test -n "$AUTOPSY_ZIP" && test -f "$AUTOPSY_ZIP" || { echo "ERROR: autopsy ZIP not found in dist/"; exit 1; } + unzip "$AUTOPSY_ZIP" -d /app/autopsy_extract + AUTOPSY_EXTRACTED=$(find /app/autopsy_extract -maxdepth 1 -mindepth 1 -name "autopsy-*" -type d | head -1) + echo "Extracted dir: $AUTOPSY_EXTRACTED" + test -n "$AUTOPSY_EXTRACTED" && test -d "$AUTOPSY_EXTRACTED" || { echo "ERROR: extracted dir not found"; exit 1; } + mv "$AUTOPSY_EXTRACTED" /app/autopsy + rm -rf /app/autopsy_extract + + # Run unix_setup.sh to copy TSK JAR and set permissions + - | + cd /app/autopsy + chmod +x unix_setup.sh + TSK_JAVA_LIB_PATH=/app/share/java JAVA_HOME=/app/jdk ./unix_setup.sh + + # Install wrapper and desktop integration + - install -Dm755 flatpak/autopsywrapper.sh /app/autopsy/bin/autopsywrapper.sh + - install -Dm644 flatpak/org.sleuthkit.Autopsy.desktop /app/share/applications/org.sleuthkit.Autopsy.desktop + - install -Dm644 flatpak/org.sleuthkit.Autopsy.metainfo.xml /app/share/metainfo/org.sleuthkit.Autopsy.metainfo.xml + - install -Dm644 snap/gui/autopsy.png /app/share/icons/hicolor/256x256/apps/org.sleuthkit.Autopsy.png From eb1b4e6ba5c5afeb2fc1f87f2ce66bb091d3361b Mon Sep 17 00:00:00 2001 From: mstoeck3 Date: Mon, 4 May 2026 13:30:39 +0200 Subject: [PATCH 2/7] Fix Flatpak packaging issues found during launch testing - Fix CI runtime mismatch: workflow installed 24.08 but manifest requires 25.08 - Add /app/jdk symlink in openjdk module: install.sh puts JDK at /app/jre but jdkhome/JAVA_HOME env vars point to /app/jdk; without the symlink the app exits immediately with "Cannot find java" - Fix metainfo: remove placeholder block (no image URL); update release entry to 4.21.0 with a real GitHub release URL - Fix desktop file: use System;Security; categories to silence desktop-file-validate hint (Security is an XDG additional category that pairs with System/Settings) - Add Flatpak install section to Running_Linux_OSX.md alongside Snap entry - Add version-update instructions to flatpak/README.md for maintainers Co-Authored-By: Claude Sonnet 4.6 --- .github/workflows/build-flatpak.yml | 6 +++--- Running_Linux_OSX.md | 12 +++++++++++- flatpak/README.md | 17 ++++++++++++++++- flatpak/org.sleuthkit.Autopsy.desktop | 2 +- flatpak/org.sleuthkit.Autopsy.metainfo.xml | 10 +++------- org.sleuthkit.Autopsy.yaml | 19 +++++++++---------- 6 files changed, 43 insertions(+), 23 deletions(-) diff --git a/.github/workflows/build-flatpak.yml b/.github/workflows/build-flatpak.yml index 7c3fe932b71..37a4f674b0c 100644 --- a/.github/workflows/build-flatpak.yml +++ b/.github/workflows/build-flatpak.yml @@ -31,9 +31,9 @@ jobs: - name: Install Flatpak runtime and SDK run: | flatpak install --user --noninteractive \ - org.freedesktop.Platform//24.08 \ - org.freedesktop.Sdk//24.08 \ - org.freedesktop.Sdk.Extension.openjdk17//24.08 + org.freedesktop.Platform//25.08 \ + org.freedesktop.Sdk//25.08 \ + org.freedesktop.Sdk.Extension.openjdk17//25.08 - name: Build Flatpak run: | diff --git a/Running_Linux_OSX.md b/Running_Linux_OSX.md index ada637d2cb6..853fece24fb 100644 --- a/Running_Linux_OSX.md +++ b/Running_Linux_OSX.md @@ -1,5 +1,15 @@ # Overview -For Linux systems that [support snapd](https://snapcraft.io/docs/installing-snapd), there is currently the option to install Autopsy from the [snap package](#install-autopsy-snap). Otherwise, when installing on Debian-based Linux or macOS systems, there are three general steps: [installing prerequisites](#installing-prerequisites), [installing The Sleuth Kit](#installing-the-sleuth-kit), and [installing Autopsy](#installing-autopsy) itself. On macOS, you will want to [setup the JNA paths](#setup-macos-jna-paths). +For Linux systems, Autopsy can be installed as a [Flatpak bundle](#install-autopsy-flatpak) or as a [Snap package](#install-autopsy-snap). Flatpak is the recommended option for distributions that do not support snapd. Otherwise, when installing on Debian-based Linux or macOS systems, there are three general steps: [installing prerequisites](#installing-prerequisites), [installing The Sleuth Kit](#installing-the-sleuth-kit), and [installing Autopsy](#installing-autopsy) itself. On macOS, you will want to [setup the JNA paths](#setup-macos-jna-paths). + +# Install Autopsy Flatpak +Autopsy is available as a self-contained [Flatpak](https://flatpak.org/) bundle. Download the `autopsy.flatpak` file from the [release section](https://github.com/sleuthkit/autopsy/releases) and install it with: + +```sh +flatpak install --user autopsy.flatpak +flatpak run org.sleuthkit.Autopsy +``` + +See the [Flatpak README](./flatpak/README.md) for build instructions, known limitations, and permission notes. # Install Autopsy Snap Autopsy comes in a [Snap package](https://snapcraft.io/about). See the [Snap README](./snap/README.md) for installation instructions and more information. diff --git a/flatpak/README.md b/flatpak/README.md index cc5d68acd36..a239dce6192 100644 --- a/flatpak/README.md +++ b/flatpak/README.md @@ -52,6 +52,21 @@ flatpak install --user autopsy.flatpak flatpak run org.sleuthkit.Autopsy ``` +## Updating versions for a new release + +When cutting a new Autopsy release, update the following locations in `org.sleuthkit.Autopsy.yaml`: + +1. **Sleuth Kit tag** — under the `sleuthkit` module's `sources`, change the `tag:` field (e.g. + `sleuthkit-4.15.0`) and update the `sleuthkit-*.jar` filenames referenced in `build-commands`. +2. **Sleuth Kit Maven JARs** — if TSK's Java binding dependencies changed, update the `url`/`sha256` + entries under the `sleuthkit` module's `sources`. Checksums can be verified with + `sha256sum `. +3. **Metainfo release entry** — add a new `` block at the top of the `` list in + `flatpak/org.sleuthkit.Autopsy.metainfo.xml` with the correct version and date. + +The CI workflow (`build-flatpak.yml`) builds and attaches `autopsy.flatpak` to the GitHub Release +automatically when a tag matching `autopsy-*` is pushed. + ## CI / GitHub Actions `.github/workflows/build-flatpak.yml` builds the bundle automatically on tag pushes @@ -91,7 +106,7 @@ Inherited from Autopsy's Linux support: ## Module build order -1. `openjdk` — installs JDK 17 from the SDK extension into `/app/jdk` +1. `openjdk` — installs JDK 17 from the SDK extension into `/app/jre`, then symlinks `/app/jdk → /app/jre` (Autopsy's launcher resolves `jdkhome` via this path) 2. `ant` — installs Apache Ant 1.10.15 into `/app/ant` 3. `libewf` (legacy) — E01 forensics image support 4. `libafflib` — AFF forensics format support diff --git a/flatpak/org.sleuthkit.Autopsy.desktop b/flatpak/org.sleuthkit.Autopsy.desktop index 24b16dd58b2..5866dacc92f 100644 --- a/flatpak/org.sleuthkit.Autopsy.desktop +++ b/flatpak/org.sleuthkit.Autopsy.desktop @@ -5,6 +5,6 @@ GenericName=DFIR Tool Exec=org.sleuthkit.Autopsy Icon=org.sleuthkit.Autopsy Type=Application -Categories=Science;Security; +Categories=System;Security; Keywords=autopsy;sleuth;kit;dfir;forensics; StartupNotify=true diff --git a/flatpak/org.sleuthkit.Autopsy.metainfo.xml b/flatpak/org.sleuthkit.Autopsy.metainfo.xml index a2b0297b961..eb6f989ccb4 100644 --- a/flatpak/org.sleuthkit.Autopsy.metainfo.xml +++ b/flatpak/org.sleuthkit.Autopsy.metainfo.xml @@ -41,16 +41,12 @@ sleuthkit disk - - - Autopsy case dashboard - - - + -

Current development build from the develop branch.

+

See the GitHub release page for full release notes.

+ https://github.com/sleuthkit/autopsy/releases/tag/autopsy-4.21.0
diff --git a/org.sleuthkit.Autopsy.yaml b/org.sleuthkit.Autopsy.yaml index bfe6e1a6295..670458ac7ee 100644 --- a/org.sleuthkit.Autopsy.yaml +++ b/org.sleuthkit.Autopsy.yaml @@ -47,7 +47,10 @@ modules: - name: openjdk buildsystem: simple build-commands: + # install.sh places the JDK at /app/jre; symlink /app/jdk so that the + # jdkhome env var and Autopsy's launcher both resolve correctly. - /usr/lib/sdk/openjdk17/install.sh + - ln -s /app/jre /app/jdk sources: [] - name: ant @@ -262,18 +265,14 @@ modules: -Dnbplatform.default.harness.dir="$AUTOPSY_HARNESS_PATH" \ build-zip - # Extract the built ZIP into /app/autopsy (use /app/ to avoid /tmp space limits) + # Move the built directory into /app/autopsy. + # ant build-zip produces dist/autopsy-${version}/ (a directory, not a zip). - | set -e - AUTOPSY_ZIP=$(find dist -maxdepth 1 -name "autopsy-*.zip" | head -1) - echo "Autopsy ZIP: $AUTOPSY_ZIP" - test -n "$AUTOPSY_ZIP" && test -f "$AUTOPSY_ZIP" || { echo "ERROR: autopsy ZIP not found in dist/"; exit 1; } - unzip "$AUTOPSY_ZIP" -d /app/autopsy_extract - AUTOPSY_EXTRACTED=$(find /app/autopsy_extract -maxdepth 1 -mindepth 1 -name "autopsy-*" -type d | head -1) - echo "Extracted dir: $AUTOPSY_EXTRACTED" - test -n "$AUTOPSY_EXTRACTED" && test -d "$AUTOPSY_EXTRACTED" || { echo "ERROR: extracted dir not found"; exit 1; } - mv "$AUTOPSY_EXTRACTED" /app/autopsy - rm -rf /app/autopsy_extract + AUTOPSY_DIR=$(find dist -maxdepth 1 -name "autopsy-*" -type d | head -1) + echo "Autopsy dir: $AUTOPSY_DIR" + test -n "$AUTOPSY_DIR" && test -d "$AUTOPSY_DIR" || { echo "ERROR: autopsy directory not found in dist/"; exit 1; } + mv "$AUTOPSY_DIR" /app/autopsy # Run unix_setup.sh to copy TSK JAR and set permissions - | From 24ab9850f45e9723e9587c0be670a8ed055f82b7 Mon Sep 17 00:00:00 2001 From: mstoeck3 Date: Mon, 4 May 2026 14:43:28 +0200 Subject: [PATCH 3/7] Fix Flatpak build: add /app/bin to PATH so photorec is found MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit unix_setup.sh checks for photorec via `command -v photorec`. The testdisk module installs photorec to /app/bin, but the global build PATH only included /usr/lib/sdk/openjdk17/bin, /app/ant/bin, /usr/bin, and /bin — so the check failed and the autopsy module exited with code 1. Adding /app/bin fixes it. Verified: clean flatpak-builder run completes successfully and the installed Flatpak launches the GUI without errors. Co-Authored-By: Claude Sonnet 4.6 --- org.sleuthkit.Autopsy.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/org.sleuthkit.Autopsy.yaml b/org.sleuthkit.Autopsy.yaml index 670458ac7ee..7440a1cb8c5 100644 --- a/org.sleuthkit.Autopsy.yaml +++ b/org.sleuthkit.Autopsy.yaml @@ -23,7 +23,7 @@ build-options: - --share=network env: JAVA_HOME: /usr/lib/sdk/openjdk17/jvm/openjdk-17 - PATH: /usr/lib/sdk/openjdk17/bin:/app/ant/bin:/usr/bin:/bin + PATH: /usr/lib/sdk/openjdk17/bin:/app/ant/bin:/app/bin:/usr/bin:/bin finish-args: - --device=all From bcf3c5e169d1c6651a16b73db3157760d5b7bac9 Mon Sep 17 00:00:00 2001 From: mstoeck3 Date: Mon, 4 May 2026 15:42:37 +0200 Subject: [PATCH 4/7] Fix Recent Activity: bundle perl and patch ExtractRegistry.java The freedesktop Platform runtime 25.08 does not include perl; it is only in the SDK. ExtractRegistry.java checks /usr/bin/perl and /usr/local/bin/perl and throws "perl not found" if neither exists, aborting ingest. Fix: - Add a perl module that copies the binary, libperl.so, and stdlib from the SDK into /app/bin/ and /app/lib/ at build time - Add PERL5LIB finish-arg so perl finds its standard modules at runtime - Patch ExtractRegistry.java before the ant build to also check /app/bin/perl regripper's Parse::Win32Registry module is already bundled in the rr/ directory and loaded via -I, so no additional CPAN modules are needed. Removes "Recent Activity module is non-functional" from known limitations. Co-Authored-By: Claude Sonnet 4.6 --- flatpak/README.md | 1 - flatpak/org.sleuthkit.Autopsy.metainfo.xml | 1 - org.sleuthkit.Autopsy.yaml | 29 ++++++++++++++++++++++ 3 files changed, 29 insertions(+), 2 deletions(-) diff --git a/flatpak/README.md b/flatpak/README.md index a239dce6192..cfbf77cb23b 100644 --- a/flatpak/README.md +++ b/flatpak/README.md @@ -99,7 +99,6 @@ is a performance trade-off only (not a functional blocker). ## Known limitations Inherited from Autopsy's Linux support: -- Recent Activity module is non-functional - LEAPP processors are non-functional - HEIF image processing is unavailable - Video thumbnails are unavailable diff --git a/flatpak/org.sleuthkit.Autopsy.metainfo.xml b/flatpak/org.sleuthkit.Autopsy.metainfo.xml index eb6f989ccb4..01795d6810e 100644 --- a/flatpak/org.sleuthkit.Autopsy.metainfo.xml +++ b/flatpak/org.sleuthkit.Autopsy.metainfo.xml @@ -22,7 +22,6 @@

Known limitations on Linux compared to Windows:

    -
  • Recent Activity module is non-functional
  • LEAPP processors are non-functional
  • HEIF image processing is unavailable
  • Video thumbnails are unavailable
  • diff --git a/org.sleuthkit.Autopsy.yaml b/org.sleuthkit.Autopsy.yaml index 7440a1cb8c5..8f3be448481 100644 --- a/org.sleuthkit.Autopsy.yaml +++ b/org.sleuthkit.Autopsy.yaml @@ -39,6 +39,7 @@ finish-args: - --env=JAVA_HOME=/app/jdk - --env=SOLR_JAVA_HOME=/app/jdk - --env=LD_LIBRARY_PATH=/app/lib + - --env=PERL5LIB=/app/lib/perl5/5.42/x86_64-linux-gnu:/app/lib/perl5/5.42:/app/lib/perl5/vendor_perl/5.42/x86_64-linux-gnu:/app/lib/perl5/vendor_perl/5.42 - --env=SOLR_LOGS_DIR=/var/data/autopsy/solr/logs - --env=SOLR_PID_DIR=/var/data/autopsy/solr/logs @@ -242,6 +243,16 @@ modules: - cp bindings/java/lib/mchange-commons-java-0.4.0.jar /app/tsk-build/bindings/java/lib/ - cp bindings/java/lib/SparseBitSet-1.3.jar /app/tsk-build/bindings/java/lib/ + # perl is in the SDK but not the Platform runtime. Copy the binary, libperl.so, + # and stdlib modules so that the Recent Activity module's regripper scripts work. + - name: perl + buildsystem: simple + build-commands: + - install -Dm755 /usr/bin/perl /app/bin/perl + - install -Dm755 /usr/lib/perl5/5.42/x86_64-linux-gnu/CORE/libperl.so /app/lib/libperl.so + - cp -a /usr/lib/perl5/ /app/lib/perl5/ + sources: [] + - name: autopsy buildsystem: simple sources: @@ -256,6 +267,24 @@ modules: # module to /app/tsk-build/. TSK_HOME: /app/tsk-build build-commands: + # Patch ExtractRegistry to find perl at /app/bin/perl (Flatpak bundles perl there; + # the Platform runtime does not include perl, only the SDK does). + - | + python3 -c " + path = 'RecentActivity/src/org/sleuthkit/autopsy/recentactivity/ExtractRegistry.java' + with open(path) as f: + s = f.read() + old = ' } else {\n throw new IngestModuleException(\"perl not found in your system\");\n }' + new = (' } else if (new File(\"/app/bin/perl\").canExecute()) {\n' + ' perl = \"/app/bin/perl\";\n' + ' } else {\n' + ' throw new IngestModuleException(\"perl not found in your system\");\n' + ' }') + assert old in s, 'Pattern not found — check ExtractRegistry.java for upstream changes' + with open(path, 'w') as f: + f.write(s.replace(old, new, 1)) + print('Patched ExtractRegistry.java: added /app/bin/perl fallback') + " # Build Autopsy ZIP (NetBeans platform is downloaded if missing) - | NETBEANS_PLAT_VER=$(grep "netbeans-plat-version=" nbproject/platform.properties | cut -d'=' -f2) From 732cc791d0adf5c1784e3e00ffa4c084a0447ffa Mon Sep 17 00:00:00 2001 From: overcuriousity Date: Mon, 4 May 2026 20:30:22 +0200 Subject: [PATCH 5/7] Fix Flatpak CI: free disk space and embed runtime-repo in bundle Add jlumbroso/free-disk-space step so the NetBeans platform download and Autopsy compilation fit on ubuntu-latest's ~14 GB volume. Pass --runtime-repo=flathub to flatpak build-bundle so first-time installs on clean systems can fetch org.freedesktop.Platform//25.08. Co-Authored-By: Claude Opus 4.7 --- .github/workflows/build-flatpak.yml | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/.github/workflows/build-flatpak.yml b/.github/workflows/build-flatpak.yml index 37a4f674b0c..806204c216a 100644 --- a/.github/workflows/build-flatpak.yml +++ b/.github/workflows/build-flatpak.yml @@ -18,6 +18,19 @@ jobs: - name: Checkout source uses: actions/checkout@v4 + # ubuntu-latest only ships ~14 GB free; the NetBeans platform download, + # Autopsy compilation, and flatpak overlay together need ≥20 GB. + - name: Free disk space + uses: jlumbroso/free-disk-space@main + with: + tool-cache: true + android: true + dotnet: true + haskell: true + large-packages: true + docker-images: true + swap-storage: true + - name: Install Flatpak and flatpak-builder run: | sudo apt-get update @@ -44,8 +57,12 @@ jobs: build-dir \ org.sleuthkit.Autopsy.yaml + # --runtime-repo embeds the Flathub repo URL so first-time installs on + # clean systems can fetch the required org.freedesktop.Platform runtime. - name: Create single-file bundle - run: flatpak build-bundle repo autopsy.flatpak org.sleuthkit.Autopsy + run: | + flatpak build-bundle repo autopsy.flatpak org.sleuthkit.Autopsy \ + --runtime-repo=https://flathub.org/repo/flathub.flatpakrepo - name: Upload bundle as release asset if: startsWith(github.ref, 'refs/tags/') From bda2b8924f7f1a08dd2f15ed165a18b680f84272 Mon Sep 17 00:00:00 2001 From: overcuriousity Date: Mon, 4 May 2026 21:30:23 +0200 Subject: [PATCH 6/7] Bump checkout and upload-artifact to v5 (Node.js 24) Silences GitHub Actions Node.js 20 deprecation warnings ahead of the forced upgrade in June 2026. Co-Authored-By: Claude Opus 4.7 --- .github/workflows/build-flatpak.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build-flatpak.yml b/.github/workflows/build-flatpak.yml index 806204c216a..e0d8d6073e6 100644 --- a/.github/workflows/build-flatpak.yml +++ b/.github/workflows/build-flatpak.yml @@ -16,7 +16,7 @@ jobs: steps: - name: Checkout source - uses: actions/checkout@v4 + uses: actions/checkout@v5 # ubuntu-latest only ships ~14 GB free; the NetBeans platform download, # Autopsy compilation, and flatpak overlay together need ≥20 GB. @@ -72,7 +72,7 @@ jobs: - name: Upload bundle as workflow artifact if: github.event_name == 'workflow_dispatch' - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v5 with: name: autopsy-flatpak path: autopsy.flatpak From 65cb8a9f2818404dc3f144f09841799030aa08bc Mon Sep 17 00:00:00 2001 From: overcuriousity Date: Mon, 4 May 2026 21:37:55 +0200 Subject: [PATCH 7/7] Fix desktop launch from Discover/GNOME Software Exec=org.sleuthkit.Autopsy is invalid: Flatpak rewrites the host-exported .desktop Exec to "flatpak run --command= ... ", and there is no command literally named org.sleuthkit.Autopsy in the sandbox. Terminal "flatpak run" worked because it used the manifest's command: field directly. Set Exec to autopsywrapper.sh, symlink it into /app/bin so it resolves on the runtime PATH, and update command: to match. Also bump metainfo to 4.23.0 (matches app.version in nbproject). Co-Authored-By: Claude Opus 4.7 --- flatpak/org.sleuthkit.Autopsy.desktop | 2 +- flatpak/org.sleuthkit.Autopsy.metainfo.xml | 4 ++-- org.sleuthkit.Autopsy.yaml | 5 ++++- 3 files changed, 7 insertions(+), 4 deletions(-) diff --git a/flatpak/org.sleuthkit.Autopsy.desktop b/flatpak/org.sleuthkit.Autopsy.desktop index 5866dacc92f..ff97df2d4e5 100644 --- a/flatpak/org.sleuthkit.Autopsy.desktop +++ b/flatpak/org.sleuthkit.Autopsy.desktop @@ -2,7 +2,7 @@ Name=Autopsy Comment=A graphical interface to The Sleuth Kit and other digital forensics tools. GenericName=DFIR Tool -Exec=org.sleuthkit.Autopsy +Exec=autopsywrapper.sh Icon=org.sleuthkit.Autopsy Type=Application Categories=System;Security; diff --git a/flatpak/org.sleuthkit.Autopsy.metainfo.xml b/flatpak/org.sleuthkit.Autopsy.metainfo.xml index 01795d6810e..e71d78610a4 100644 --- a/flatpak/org.sleuthkit.Autopsy.metainfo.xml +++ b/flatpak/org.sleuthkit.Autopsy.metainfo.xml @@ -41,11 +41,11 @@ disk - +

    See the GitHub release page for full release notes.

    - https://github.com/sleuthkit/autopsy/releases/tag/autopsy-4.21.0 + https://github.com/sleuthkit/autopsy/releases/tag/autopsy-4.23.0
    diff --git a/org.sleuthkit.Autopsy.yaml b/org.sleuthkit.Autopsy.yaml index 8f3be448481..b18a7398e24 100644 --- a/org.sleuthkit.Autopsy.yaml +++ b/org.sleuthkit.Autopsy.yaml @@ -14,7 +14,7 @@ runtime-version: '25.08' sdk: org.freedesktop.Sdk sdk-extensions: - org.freedesktop.Sdk.Extension.openjdk17 -command: /app/autopsy/bin/autopsywrapper.sh +command: autopsywrapper.sh build-options: # --share=network allows the autopsy module's ant build-zip to download the NetBeans @@ -311,6 +311,9 @@ modules: # Install wrapper and desktop integration - install -Dm755 flatpak/autopsywrapper.sh /app/autopsy/bin/autopsywrapper.sh + # Symlink into /app/bin so the .desktop Exec line resolves at runtime + # (the runtime PATH only includes /app/bin, not /app/autopsy/bin). + - ln -sf /app/autopsy/bin/autopsywrapper.sh /app/bin/autopsywrapper.sh - install -Dm644 flatpak/org.sleuthkit.Autopsy.desktop /app/share/applications/org.sleuthkit.Autopsy.desktop - install -Dm644 flatpak/org.sleuthkit.Autopsy.metainfo.xml /app/share/metainfo/org.sleuthkit.Autopsy.metainfo.xml - install -Dm644 snap/gui/autopsy.png /app/share/icons/hicolor/256x256/apps/org.sleuthkit.Autopsy.png