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

Mas*_*bor 4 software-sources software-installation snap flatpak gnome-dash

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

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

不幸的是,我在打开 gnome-software 时遇到问题,因此这个问题的答案对我没有帮助。是否有办法检查已安装或正在运行的应用程序是 flatpak、snap 还是本机?

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

Ubuntu 22.10 侏儒 43.1

Bet*_*aor 6

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

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

    对于快照,请使用snap list

    对于 Flatpak,请使用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"
    
    Run Code Online (Sandbox Code Playgroud)

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


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

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