
Естьавторитетный способ получить версию GNOME, если у меня есть работающий рабочий стол GNOME (любой версии)? Несколько изэти предложенияне работают в моей системе, либо потому, что исполняемые файлы и/или пакеты просто не существуют, либо пункт меню недоступен.
решение1
Для GNOME 4
они используют gnome-shell
версию.Если мы посмотрим на исходный кодмы видим, что они сообщают gnome-shell
версию как «версия GNOME» на панели Settings
> Info
:
static char *
get_gnome_version (GDBusProxy *proxy)
{
g_autoptr(GVariant) variant = NULL;
const char *gnome_version = NULL;
if (!proxy)
return NULL;
variant = g_dbus_proxy_get_cached_property (proxy, "ShellVersion");
if (!variant)
return NULL;
gnome_version = g_variant_get_string (variant, NULL);
if (!gnome_version || *gnome_version == '\0')
return NULL;
return g_strdup (gnome_version);
}
Сейчас идут споры о том, было ли это правильным решением, см.
info-overview: переименовать «Версию GNOME» в «Версию оболочки GNOME»
Обратите внимание, что вступление к этой дискуссии подтверждает то, о чем я говорил все это время:
Версия GNOME и версия GNOME Shell — это не одно и то же...
Меня не удивит, если они снова изменят это в будущем. До тех пор, чтобы получить версию Gnome DE, нужно получить версию gnome-shell, поэтому используйте либо
gnome-shell --version
или
busctl --user get-property org.gnome.Shell /org/gnome/Shell org.gnome.Shell ShellVersion
В GNOME 3
, версия хранится в этом файле:
/usr/share/gnome/gnome-version.xml
содержимое (в моей системе):
<?xml version="1.0" encoding="UTF-8"?>
<gnome-version>
<platform>3</platform>
<minor>6</minor>
<micro>2</micro>
<distributor>Arch Linux</distributor>
<date>2012-11-13</date>
</gnome-version>
Файл является частью пакета upstream, который называетсяgnome-desktop
(обратите внимание, что некоторые дистрибутивы разбивают его на несколько пакетов, поэтому в вашем дистрибутиве файл может оказаться в пакете с другим именем...)
GNOME
Разработчикииспользуйте этот файл, чтобы получить номер версии DE и отобразить егов System Settings
(aka gnome-control-center
). Так что получение GNOME
версии"официальный путь"означает разбор указанного файла и извлечение значений platform
, minor
и micro
.
Если вы поиграете с этим файлом, то сразу увидите результаты :)
В GNOME 2
рассматриваемом файле содержится следующее:
/usr/share/gnome-about/gnome-version.xml
(хотя этот файл может отсутствовать в некоторых старых Gnome 2
версиях IIRC)
Обратите внимание, что для GNOME v.2 и v.3 команды типа gnome-session --version
, gnome-shell --version
, gdm --version
и т.д. могут возвращать запутанные числа. Это GNOME desktopкомпоненты, это отдельные пакеты (с разным кодом, историей/журналом изменений и сопровождающими), и поэтому их версии могут отличаться. Они сообщат правильную GNOME
версиютолько если у них одинаковая версиякак gnome-desktop
(что не всегда так).
решение2
При запуске gnome-system-monitor
в диалоговом окне отображается версия:
% gnome-system-monitor
Мой старый корпус Fedora 14
Убунту 12.04
решение3
$ apt-cache show gnome-shell | grep Version
(Яркий или хитрый)
решение4
Дляоченьновые системы Gnome (>40ish), файл, предложенный в Ответ @don_crisstiбольше нет здесь:
~$ cat /usr/share/gnome/gnome-version.xml
cat: /usr/share/gnome/gnome-version.xml: No such file or directory
Я думаю, что более безопасный способ — следоватьофициальное предложение GNOME:
Что в моей системе дает: