raja Asked: 2024-05-23 13:14:02 +0800 CST2024-05-23 13:14:02 +0800 CST 2024-05-23 13:14:02 +0800 CST 同一个包在终端和GNOME菜单中显示两个不同的名字 772 我最近从终端安装了alacarte;当我在终端运行apt list --installed时,它显示的名称是alacarte,但在GNOME菜单中它显示为“主菜单”。 我多次遇到了这个问题。 我的问题是: 为什么在终端和GNOME菜单中显示的名称不同? 如果我想卸载它,我如何找出包的原始名称? gnome 2 个回答 Voted Best Answer kos 2024-05-23T14:12:45+08:002024-05-23T14:12:45+08:00 启动器中显示的名称是应用程序的 .desktop 文件中 Name[<language_prefix>]=<value> 键/值对的值,该文件位于 /usr/share/applications 目录下。 应用程序的 .desktop 文件由安装它的包提供。 可以通过传递文件路径到 dpkg -S 来确定提供特定文件的包。 那么,将所有内容整合起来,要从启动器中显示的名称开始打印安装应用程序的包的名称,运行以下命令: grep -l '^Name\[[^]]\+\]=<application_localized_name>$' /usr/share/applications/* | xargs dpkg -S | cut -d: -f1 将 <application_localized_name> 替换为应用程序的本地化名称(即启动器中显示的名称)。例如,在我的系统上,它将是 Menù principale: % grep -l '^Name\[[^]]\+\]=Menù principale$' /usr/share/applications/* | xargs dpkg -S | cut -d: -f1 alacarte 我不能排除一个边缘情况,即一个应用程序的本地化名称可能与一个完全不同的应用程序的名称匹配(无论是同一语言的本地化还是另一种语言的本地化),导致打印出多个包名称。 因此,为了更严格一些,你可以运行: grep -l '^Name\[<language_prefix>\]=<application_localized_name>$' /usr/share/applications/* | xargs dpkg -S | cut -d: -f1 将 <language_prefix> 替换为你的语言前缀,将 <application_localized_name> 替换为应用程序的本地化名称(即启动器中显示的名称)。例如,在我的系统上,它们将是 it 和 Menù principale: % grep -l '^Name\[it\]=Menù principale$' /usr/share/applications/* | xargs dpkg -S | cut -d: -f1 alacarte 但是,如果一个应用程序的本地化名称恰好与同一语言中完全不同的应用程序的名称匹配,你将不得不通过检查包的描述来进行有根据的猜测。 grep -l '^Name\[<language_prefix>\]=<application_localized_name>$' /usr/share/applications/* | xargs dpkg -S | cut -d: -f1 | xargs dpkg -s % grep -l '^Name\[it\]=Menù principale$' /usr/share/applications/* | xargs dpkg -S | cut -d: -f1 | xargs dpkg -s 包: alacarte 状态: 安装 ok 安装 优先级: 可选 部分: 实用工具 已安装大小: 312 维护者: Ubuntu 开发者 [email protected] 架构: 全部 多架构: 外来 版本: 3.52.0-1 依赖: gir1.2-gdkpixbuf-2.0, gir1.2-glib-2.0, gir1.2-gmenu-3.0 (>= 3.5.3), gir1.2-gtk-3.0, gnome-menus (>= 3.5.3), python3-cairo, python3-gi, python3:any 描述: 简单的 GNOME 菜单编辑工具 Alacarte 是一个易于使用的 GNOME 菜单编辑器,可以添加和编辑新的条目和 user10489 2024-05-23T13:33:58+08:002024-05-23T13:33:58+08:00 软件包经常包含多个实际程序,这些程序在包内有多个名称。此外,软件包名称和主要程序名称可能相同,但大小写、标点和拼写不同。有时你甚至可能从不同的软件包中得到具有相同或非常相似名称的多个可执行文件。(这就是替代系统擅长解决的问题。) 你可以使用dpkg -S filename...(假设它来自一个软件包)来找到提供文件的软件包名称,你可以使用dpkg -L packagename来获取软件包中的文件列表。
启动器中显示的名称是应用程序的 .desktop 文件中
Name[<language_prefix>]=<value>
键/值对的值,该文件位于/usr/share/applications
目录下。应用程序的 .desktop 文件由安装它的包提供。
可以通过传递文件路径到
dpkg -S
来确定提供特定文件的包。那么,将所有内容整合起来,要从启动器中显示的名称开始打印安装应用程序的包的名称,运行以下命令:
将
<application_localized_name>
替换为应用程序的本地化名称(即启动器中显示的名称)。例如,在我的系统上,它将是Menù principale
:我不能排除一个边缘情况,即一个应用程序的本地化名称可能与一个完全不同的应用程序的名称匹配(无论是同一语言的本地化还是另一种语言的本地化),导致打印出多个包名称。
因此,为了更严格一些,你可以运行:
将
<language_prefix>
替换为你的语言前缀,将<application_localized_name>
替换为应用程序的本地化名称(即启动器中显示的名称)。例如,在我的系统上,它们将是it
和Menù principale
:但是,如果一个应用程序的本地化名称恰好与同一语言中完全不同的应用程序的名称匹配,你将不得不通过检查包的描述来进行有根据的猜测。
软件包经常包含多个实际程序,这些程序在包内有多个名称。此外,软件包名称和主要程序名称可能相同,但大小写、标点和拼写不同。有时你甚至可能从不同的软件包中得到具有相同或非常相似名称的多个可执行文件。(这就是替代系统擅长解决的问题。)
你可以使用
dpkg -S filename...
(假设它来自一个软件包)来找到提供文件的软件包名称,你可以使用dpkg -L packagename
来获取软件包中的文件列表。