为什么 flatpak repo 文件夹这么大?

Joh*_*nde 6 flatpak

有谁知道为什么 at 目录$HOME/.local/share/flatpak/repo包含如此多的文件(69 k)并且如此巨大(2 Gb)?那是什么 ?反正我几乎从不使用 flatpaks....

我想在备份中包含 flatpak 目录并不重要(deja-dup)。

PS 看起来里面有硬链接,因为 flatpak 文件夹的文件数量是原来的两倍,但总大小相同。

Lor*_*eel 13

Flatpak包在沙盒模式下运行:因此,根据设计,Flatpak 会为单个应用程序占用大量磁盘空间,即使它是较小的应用程序,因为它会提取应用程序的所有依赖项并独立运行。这种设计的优点是您无需担心系统的依赖关系和更新可能会破坏您的应用程序。然而,它占用了大量的磁盘空间。

因此,用户唯一能做的就是监控 Flatpak 大小并执行定期清洁。就我个人而言,我有一个名为“spring-cleaning”的脚本,我定期使用它来执行系统清理(其中有一个与 flatpak 相关的部分)。

通用清理

  • Flatpak 应用程序可能会共享一些运行时包,这些包代表应用程序的基本依赖项:如果系统中安装了某个运行时,但没有被任何 Flatpak 应用程序使用(flatpak list --app --columns=application,runtime列出哪个应用程序使用哪个运行时),您可以使用 删除它flatpak uninstall --unused。这是一次清理,在您第一次运行时可能会产生很大的效果,但正如您可以想象的那样,第一次使用后清理可能并不重要。
  • Flatpak 应用程序可能会在 /var/lib/flatpak/repo/objects文件夹中创建对象,这些对象可能会达到相当大的大小。要修剪这些对象(没有对其应用程序的显式引用),您需要运行(使用sudo,因为您正在清理系统文件夹中的对象)sudo flatpak repair。每次运行该命令时,此清理的影响可能会很大。
  • Flatpak 缓存文件也可以在系统和用户文件夹中删除。你可以运行sudo rm -rfv /var/tmp/flatpak-cache-*rm -rfv ~/.cache/flatpak/*

具体清理

  • 您可以卸载不需要的应用程序,或者在可行的情况下将大型应用程序替换为该应用程序的 .deb 版本。您可以按大小对 Flatpak 应用程序进行排序flatpak --columns=name,size --user list,然后使用应用程序名称卸载应用程序flatpak uninstall <flatpak_app_name>

合并到脚本中(使用 sudo 运行)

#!/bin/bash

# Error status variables
STATUS_OK=0
STATUS_ERROR=1

# Definitions
USER_NAME="${SUDO_USER:-${USER}}"
USER_DIR="/home/${USER_NAME}"

# Execute it as root user
if [ "${USER}" != root ]; then
  echo "ERROR: must be root! Exiting..."
  exit "${STATUS_ERROR}"
fi

# Current status
USED_BEFORE="$(df -k / | awk 'NR>1 {print $3}')"

# flatpak cleanup
if [ -n "$(command -v flatpak)" ]; then
  flatpak repair &> /dev/null
  # Remove flatpak cache
  rm -rf /var/tmp/flatpak-cache-*
  sudo -u "${USER_NAME}" rm -rf "${USER_DIR}"/.cache/flatpak/*
  # Remove unused flatpak runtimes
  if [ -n "$(flatpak list --runtime)" ]; then
    flatpak uninstall --unused
  fi
fi

# Current status
USED_AFTER="$(df -k / | awk 'NR>1 {print $3}')"

# Summary
echo "Freed up space: $(( (USED_BEFORE - USED_AFTER)/1024 )) MB"
exit "${STATUS_OK}"
Run Code Online (Sandbox Code Playgroud)


Aar*_*arg 2

Flatpaks是“沙盒”的,这意味着应用程序所需的任何应用程序缓存、大型库等都存储在这些目录中。这意味着这些目录的文件大小通常非常大。