如何使用 FlatPak 正确安装 LibreOffice 以使 libreoffice 命令位于 $PATH 环境变量中?

如何使用 FlatPak 正确安装 LibreOffice 以使 libreoffice 命令位于 $PATH 环境变量中?

我刚刚从我的 Ubuntu 16.04 LTS 系统中删除了 LibreOffice 的 deb 包,

sudo apt purge --auto-remove $(dpkg -l | grep "^ii  libreoffice" | awk '{print $2}')

要将其替换为 FlatPak 版本,请执行以下操作:

sudo add-apt-repository ppa:alexlarsson/flatpak
sudo apt update
sudo apt install flatpak

flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
flatpak install flathub org.libreoffice.LibreOffice

然后重新启动系统以确保所有更改都已应用。然后 LibreOffice 被列为已安装,如下所示

$ flatpak list | grep libreoffice
LibreOffice   org.libreoffice.LibreOffice 7.0.3.1 stable  user

它在 XDG 菜单中注册,我可以用它打开 ODT 文件。

以前我有一些在无头模式下调用 LibreOffice 的脚本,例如

libreoffice --headless --convert-to pdf filename.docx

但目前它们还不起作用。

当我尝试在终端中运行此命令时,它显示:

$ libreoffice
The program 'libreoffice' is currently not installed. You can install it by typing:
sudo apt install libreoffice-common

因此它看不到通过 FlatPak 安装 LibreOffice:

$ echo $PATH | grep flatpak
$

更新以回答 Kulfy 的评论:

$ LC_ALL=C ls -al ~/.local/share/flatpak/exports/bin
total 28
drwxrwxr-x 2 user user 4096 Nov 26 15:57 .
drwxrwxr-x 4 user user 4096 Feb  7  2019 ..
lrwxrwxrwx 1 user user   83 Jun  7 13:18 com.github.bcedu.vgrive -> ../../app/com.github.bcedu.vgrive/current/active/export/bin/com.github.bcedu.vgrive
lrwxrwxrwx 1 user user   71 May 24  2020 com.snes9x.Snes9x -> ../../app/com.snes9x.Snes9x/current/active/export/bin/com.snes9x.Snes9x
lrwxrwxrwx 1 user user   79 Oct  2 23:11 org.inkscape.Inkscape -> ../../app/org.inkscape.Inkscape/current/active/export/bin/org.inkscape.Inkscape
lrwxrwxrwx 1 user user   69 Jun 10 16:29 org.kde.kdenlive -> ../../app/org.kde.kdenlive/current/active/export/bin/org.kde.kdenlive
lrwxrwxrwx 1 user user   81 Feb  7  2019 org.libretro.RetroArch -> ../../app/org.libretro.RetroArch/current/active/export/bin/org.libretro.RetroArch

^ 如您所见,没有导出 LibreOffice。

我应该手动配置一些东西吗?


小注:LibreOffice 的 Snap 安装通常libreoffice在变量/snap/bin/libreoffice中注册$PATH

答案1

感谢@vanadium他的想法

我为该~/.bashrc文件创建了一个“智能”代码片段:

# hack for libreoffice
if  [[ ! -f /usr/bin/libreoffice ]] && [[ ! -f /snap/bin/libreoffice ]]
then
    flatpak info org.libreoffice.LibreOffice > /dev/null && \
         alias libreoffice='/usr/bin/flatpak run org.libreoffice.LibreOffice "$@"'
fi

它检查 deb 和 snap 安装的 LibreOffice 是否存在,然后libreoffice如果 FlatPak 安装的 LibreOffice 存在则为命令定义一个别名。

上面的代码片段并不通用,因为在我的一些脚本中,我还直接调用了lowriterlocalcloimpress
因此,我需要继续使用 PPA 中的 LibreOffice 6.2.8,以简化脚本编写。


但这一切snap-fstab 相关问题真的很奇怪。我理解不可能在 Linux 中为 16.04 LTS 本地构建 LibreOffice 7电力购买协议。所以我升级到了 18.04 LTS。目前我发现这个 Snap 和 FlatPak 东西不可行。

相关内容