如何在“终端”中查找应用程序是 snap 程序、flatpak 还是本机应用程序?

如何在“终端”中查找应用程序是 snap 程序、flatpak 还是本机应用程序?

我已经安装了几个应用程序的 flatpak 和 snap 版本(有时我甚至还安装了一些其他应用程序的 appimage 和 deb 文件)以找到哪一个更适合我。

现在我想删除所有其他版本并保留我自定义的版本等。

不幸的是,我无法打开 gnome-software,因此这个问题的答案问题对我没有帮助。有什么办法可以检查已安装或正在运行的应用程序是 flatpak、snap 还是原生的?

举个例子。我安装了原生和 flatpak 版 Firefox。我打开了两个版本,找到了一个更适合我的版本并对其进行了自定义,登录了我的账户,添加了我所有的书签等。我关闭了另一个,并将所选的版本添加到收藏夹中,以便下次从 dash 启动它。现在我不知道我选择和收藏的来源是哪个,我想弄清楚当前打开和运行的是 snap 版本还是 flatpak 版本等,以便我可以在终端中删除它。(而且我无法访问 gnome 软件应用程序。)

Ubuntu 22.10 Gnome 43.1

答案1

有几种方法可以检查某个应用程序是使用哪个包管理器安装的:

  1. 使用list终端中不同的包管理器的命令来查看该应用程序是否列在该列表中。

    对于 Snap,使用snap list

    对于 Flatpaks,使用flatpak list

    对于本机安装的应用程序使用dpkg -l

    或者,您可以在每个命令末尾添加<app-name>,以查看该应用是否在提示的包管理器列表中。例如,使用flatpak list | grep <app-name>可查看所有已安装的标有该名称或字母的应用。对于 Snap snap list <app-name>,使用 ,对于原生应用,使用dpkg -l <app-name>


  1. 您可以使用此自定义grep命令将所有标记的已安装应用程序排序到其包管理器中:

    ( echo -e "\033[1m\033[4m\033[34mSnap packages:\033[0m"; snap list | grep -v Name | awk '{print "  "$1}'; echo ""; echo -e "\033[1m\033[4m\033[34mFlatpak packages:\033[0m"; flatpak list | grep -v Application | awk '{print "  "$1}'; echo ""; echo -e "\033[1m\033[4m\033[34mNative packages:\033[0m"; dpkg -l | grep -v "^ii" | grep -v "^rc" | awk '{print "  "$2}' ) | grep -i --color=always <app-name> || echo -e "\033[1m\033[31mNo results found.\033[0m"
    

    该命令可能看起来很长很复杂,但它会以非常好的方式列出所有生成的应用程序及其安装的包管理器。您需要做的就是在终端中输入命令,将<app-name>命令替换为您选择的应用程序,它会为您排序。


此外,如果您想检查当前正在运行的应用程序是 Flatpak、Snap 还是原生的,只需打开System Monitor并搜索正在运行的应用程序,然后查看选项Command Line卡并通过路径查看它是 Snap、Flatpak 还是原生的。

希望这个答案对您有所帮助并且祝您好运!

相关内容