我刚刚从我的 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 存在则为命令定义一个别名。
上面的代码片段并不通用,因为在我的一些脚本中,我还直接调用了lowriter
、localc
、loimpress
。
因此,我需要继续使用 PPA 中的 LibreOffice 6.2.8,以简化脚本编写。
但这一切snap-fstab 相关问题真的很奇怪。我理解不可能在 Linux 中为 16.04 LTS 本地构建 LibreOffice 7电力购买协议。所以我升级到了 18.04 LTS。目前我发现这个 Snap 和 FlatPak 东西不可行。