怎么在debian上更改flatpak的安装位置?

我意思是flatpak本身的安装位置修改,还有通过flatpak安装的app的安装位置的修改。

没搜到,估计要看源码
可能有用的链接:

  1. Ask Ubuntu - Where to find application after flatpak installation gimp
  2. Github - Where are all the installed flatpak apps .desktop files located

您可以看一下 dpkg 提供的 flatpak 这个软件包已安装文件的存放位置:

点击此处展开
/.
/etc
/etc/X11
/etc/X11/Xsession.d
/etc/X11/Xsession.d/20flatpak
/etc/profile.d
/etc/profile.d/flatpak.sh
/usr
/usr/bin
/usr/bin/flatpak
/usr/lib
/usr/lib/systemd
/usr/lib/systemd/system
/usr/lib/systemd/system-environment-generators
/usr/lib/systemd/system-environment-generators/60-flatpak-system-only
/usr/lib/systemd/system/flatpak-system-helper.service
/usr/lib/systemd/user
/usr/lib/systemd/user-environment-generators
/usr/lib/systemd/user-environment-generators/60-flatpak
/usr/lib/systemd/user/flatpak-oci-authenticator.service
/usr/lib/systemd/user/flatpak-portal.service
/usr/lib/systemd/user/flatpak-session-helper.service
/usr/lib/sysusers.d
/usr/lib/sysusers.d/flatpak.conf
/usr/lib/tmpfiles.d
/usr/lib/tmpfiles.d/flatpak.conf
/usr/libexec
/usr/libexec/flatpak-oci-authenticator
/usr/libexec/flatpak-portal
/usr/libexec/flatpak-session-helper
/usr/libexec/flatpak-system-helper
/usr/libexec/flatpak-validate-icon
/usr/libexec/revokefs-fuse
/usr/share
/usr/share/bash-completion
/usr/share/bash-completion/completions
/usr/share/bash-completion/completions/flatpak
/usr/share/bug
/usr/share/bug/flatpak
/usr/share/bug/flatpak/control
/usr/share/bug/flatpak/script
/usr/share/dbus-1
/usr/share/dbus-1/services
/usr/share/dbus-1/services/org.flatpak.Authenticator.Oci.service
/usr/share/dbus-1/services/org.freedesktop.Flatpak.service
/usr/share/dbus-1/services/org.freedesktop.portal.Flatpak.service
/usr/share/dbus-1/system-services
/usr/share/dbus-1/system-services/org.freedesktop.Flatpak.SystemHelper.service
/usr/share/dbus-1/system.d
/usr/share/dbus-1/system.d/org.freedesktop.Flatpak.SystemHelper.conf
/usr/share/doc
/usr/share/doc-base
/usr/share/doc-base/flatpak.flatpak-commands
/usr/share/doc/flatpak
/usr/share/doc/flatpak/NEWS.gz
/usr/share/doc/flatpak/README.Debian
/usr/share/doc/flatpak/README.md
/usr/share/doc/flatpak/changelog.Debian.gz
/usr/share/doc/flatpak/copyright
/usr/share/doc/flatpak/docbook.css
/usr/share/doc/flatpak/examples
/usr/share/doc/flatpak/examples/etc
/usr/share/doc/flatpak/examples/etc/gdm3
/usr/share/doc/flatpak/examples/etc/gdm3/env.d
/usr/share/doc/flatpak/examples/etc/gdm3/env.d/flatpak.env
/usr/share/doc/flatpak/examples/flatpak-docker-seccomp.json
/usr/share/doc/flatpak/flatpak-docs.html
/usr/share/fish
/usr/share/fish/vendor_completions.d
/usr/share/fish/vendor_completions.d/flatpak.fish
/usr/share/fish/vendor_conf.d
/usr/share/fish/vendor_conf.d/flatpak.fish
/usr/share/flatpak
/usr/share/flatpak/triggers
/usr/share/flatpak/triggers/desktop-database.trigger
/usr/share/flatpak/triggers/gtk-icon-cache.trigger
/usr/share/flatpak/triggers/mime-database.trigger
/usr/share/lintian
/usr/share/lintian/overrides
/usr/share/lintian/overrides/flatpak
/usr/share/locale
/usr/share/locale/cs
/usr/share/locale/cs/LC_MESSAGES
/usr/share/locale/cs/LC_MESSAGES/flatpak.mo
/usr/share/locale/da
/usr/share/locale/da/LC_MESSAGES
/usr/share/locale/da/LC_MESSAGES/flatpak.mo
/usr/share/locale/de
/usr/share/locale/de/LC_MESSAGES
/usr/share/locale/de/LC_MESSAGES/flatpak.mo
/usr/share/locale/en_GB
/usr/share/locale/en_GB/LC_MESSAGES
/usr/share/locale/en_GB/LC_MESSAGES/flatpak.mo
/usr/share/locale/es
/usr/share/locale/es/LC_MESSAGES
/usr/share/locale/es/LC_MESSAGES/flatpak.mo
/usr/share/locale/fr
/usr/share/locale/fr/LC_MESSAGES
/usr/share/locale/fr/LC_MESSAGES/flatpak.mo
/usr/share/locale/gl
/usr/share/locale/gl/LC_MESSAGES
/usr/share/locale/gl/LC_MESSAGES/flatpak.mo
/usr/share/locale/hi
/usr/share/locale/hi/LC_MESSAGES
/usr/share/locale/hi/LC_MESSAGES/flatpak.mo
/usr/share/locale/hr
/usr/share/locale/hr/LC_MESSAGES
/usr/share/locale/hr/LC_MESSAGES/flatpak.mo
/usr/share/locale/hu
/usr/share/locale/hu/LC_MESSAGES
/usr/share/locale/hu/LC_MESSAGES/flatpak.mo
/usr/share/locale/id
/usr/share/locale/id/LC_MESSAGES
/usr/share/locale/id/LC_MESSAGES/flatpak.mo
/usr/share/locale/oc
/usr/share/locale/oc/LC_MESSAGES
/usr/share/locale/oc/LC_MESSAGES/flatpak.mo
/usr/share/locale/pl
/usr/share/locale/pl/LC_MESSAGES
/usr/share/locale/pl/LC_MESSAGES/flatpak.mo
/usr/share/locale/pt
/usr/share/locale/pt/LC_MESSAGES
/usr/share/locale/pt/LC_MESSAGES/flatpak.mo
/usr/share/locale/pt_BR
/usr/share/locale/pt_BR/LC_MESSAGES
/usr/share/locale/pt_BR/LC_MESSAGES/flatpak.mo
/usr/share/locale/ro
/usr/share/locale/ro/LC_MESSAGES
/usr/share/locale/ro/LC_MESSAGES/flatpak.mo
/usr/share/locale/ru
/usr/share/locale/ru/LC_MESSAGES
/usr/share/locale/ru/LC_MESSAGES/flatpak.mo
/usr/share/locale/sk
/usr/share/locale/sk/LC_MESSAGES
/usr/share/locale/sk/LC_MESSAGES/flatpak.mo
/usr/share/locale/sv
/usr/share/locale/sv/LC_MESSAGES
/usr/share/locale/sv/LC_MESSAGES/flatpak.mo
/usr/share/locale/tr
/usr/share/locale/tr/LC_MESSAGES
/usr/share/locale/tr/LC_MESSAGES/flatpak.mo
/usr/share/locale/uk
/usr/share/locale/uk/LC_MESSAGES
/usr/share/locale/uk/LC_MESSAGES/flatpak.mo
/usr/share/locale/zh_CN
/usr/share/locale/zh_CN/LC_MESSAGES
/usr/share/locale/zh_CN/LC_MESSAGES/flatpak.mo
/usr/share/locale/zh_TW
/usr/share/locale/zh_TW/LC_MESSAGES
/usr/share/locale/zh_TW/LC_MESSAGES/flatpak.mo
/usr/share/man
/usr/share/man/man1
/usr/share/man/man1/flatpak-build-bundle.1.gz
/usr/share/man/man1/flatpak-build-commit-from.1.gz
/usr/share/man/man1/flatpak-build-export.1.gz
/usr/share/man/man1/flatpak-build-finish.1.gz
/usr/share/man/man1/flatpak-build-import-bundle.1.gz
/usr/share/man/man1/flatpak-build-init.1.gz
/usr/share/man/man1/flatpak-build-sign.1.gz
/usr/share/man/man1/flatpak-build-update-repo.1.gz
/usr/share/man/man1/flatpak-build.1.gz
/usr/share/man/man1/flatpak-config.1.gz
/usr/share/man/man1/flatpak-create-usb.1.gz
/usr/share/man/man1/flatpak-document-export.1.gz
/usr/share/man/man1/flatpak-document-info.1.gz
/usr/share/man/man1/flatpak-document-unexport.1.gz
/usr/share/man/man1/flatpak-documents.1.gz
/usr/share/man/man1/flatpak-enter.1.gz
/usr/share/man/man1/flatpak-history.1.gz
/usr/share/man/man1/flatpak-info.1.gz
/usr/share/man/man1/flatpak-install.1.gz
/usr/share/man/man1/flatpak-kill.1.gz
/usr/share/man/man1/flatpak-list.1.gz
/usr/share/man/man1/flatpak-make-current.1.gz
/usr/share/man/man1/flatpak-mask.1.gz
/usr/share/man/man1/flatpak-override.1.gz
/usr/share/man/man1/flatpak-permission-remove.1.gz
/usr/share/man/man1/flatpak-permission-reset.1.gz
/usr/share/man/man1/flatpak-permission-set.1.gz
/usr/share/man/man1/flatpak-permission-show.1.gz
/usr/share/man/man1/flatpak-permissions.1.gz
/usr/share/man/man1/flatpak-pin.1.gz
/usr/share/man/man1/flatpak-ps.1.gz
/usr/share/man/man1/flatpak-remote-add.1.gz
/usr/share/man/man1/flatpak-remote-delete.1.gz
/usr/share/man/man1/flatpak-remote-info.1.gz
/usr/share/man/man1/flatpak-remote-ls.1.gz
/usr/share/man/man1/flatpak-remote-modify.1.gz
/usr/share/man/man1/flatpak-remotes.1.gz
/usr/share/man/man1/flatpak-repair.1.gz
/usr/share/man/man1/flatpak-repo.1.gz
/usr/share/man/man1/flatpak-run.1.gz
/usr/share/man/man1/flatpak-search.1.gz
/usr/share/man/man1/flatpak-spawn.1.gz
/usr/share/man/man1/flatpak-uninstall.1.gz
/usr/share/man/man1/flatpak-update.1.gz
/usr/share/man/man1/flatpak.1.gz
/usr/share/man/man5
/usr/share/man/man5/flatpak-flatpakref.5.gz
/usr/share/man/man5/flatpak-flatpakrepo.5.gz
/usr/share/man/man5/flatpak-installation.5.gz
/usr/share/man/man5/flatpak-metadata.5.gz
/usr/share/man/man5/flatpak-remote.5.gz
/usr/share/polkit-1
/usr/share/polkit-1/actions
/usr/share/polkit-1/actions/org.freedesktop.Flatpak.policy
/usr/share/polkit-1/rules.d
/usr/share/polkit-1/rules.d/org.freedesktop.Flatpak.rules
/usr/share/zsh
/usr/share/zsh/vendor-completions
/usr/share/zsh/vendor-completions/_flatpak
/var
/var/lib
/var/lib/polkit-1
/var/lib/polkit-1/localauthority
/var/lib/polkit-1/localauthority/10-vendor.d
/var/lib/polkit-1/localauthority/10-vendor.d/org.freedesktop.Flatpak.pkla

UNIX、Linux 系统存储应用程序的逻辑和 Windows 不同。

  • Windows 一般是以软件为单位,所有相关文件放在一个文件夹下(比如 7-Zip,可执行文件、运行库、翻译文档、帮助文档都放在 C:\Program Files\7-ZIp 文件夹下)。
  • Linux、UNIX 系统则不同,它们是按文件的作用,分门别类进行存储。以 Linux 为例,一般可执行文件都在 /usr/bin,运行库在 /usr/lib,一些辅助文件在 /usr/share。这种存档方式也决定了,你想自定义某些软件的安装位置是比较困难的。

但也有一些例外,个别软件会将所有相关文件放在 /opt/ 文件夹下,比如 DeaDBeeF 和 WPS Office。对于这种软件,或许可以考虑把它们的安装文档移动到某个位置,再在 /opt/ 下建一个符号链接。


用 flatpak 安装的应用一般放在这个地方:

/var/lib/flatpak/app/[应用包名称]/current/active/files

用户存档(比如微信保持的文件、QQ 的表情包缓存)一般在这里:

~/.var/app/[应用包名称]

要给它们搬家,或许可以考虑建立一个符号链接。

为啥想修改安装位置?

c盘分区了,空间不够

c盘是双系统,划给linux的少了

flatpak 自身的体积不是很大,关键是用它安装的各种软件和运行库。或许您可以尝试:

  1. 新建一个分区,备用
  2. 备份用户配置文件 ~/.var/app
  3. 卸载 flatpak 安装的全部软件
  4. 修改 /etc/fstab,将新分区挂载到 /var/lib/flatpak
  5. 重新用 flatpak 安装软件,并恢复用户配置文件

厉害啊 :smiling_face_with_three_hearts: 感谢!

看这个方案,我想到了另一种极致的可能,但不知道能不能行得通:
/var/lib/flatpak这个目录指定到新分区中的一个目录,即所有写入到 /var/lib/flatpak中的文件,全部保存在新分区中的一个目录中。这样可行么?

划了多少给linux ?

应该就是:

  1. 在新分区中建立一个名为 flatpak 的文件夹
  2. flatpak 文件夹建立一个符号链接,再把这个符号链接放到 /var/lib/ 文件夹下

理论上是没问题的。但也需要编辑一下 /etc/fstab 让这个分区开机后自动挂载,否则开机后 flatpak 找不到应用程序目录,可能会出问题。

1 个赞