Вопрос или проблема
После обновления Raspberry Pi 5 (8 ГБ) с Ubuntu 24.04 до 24.10 GNOME Terminal 3.54.0 выдает ошибку на команде
rquint@Mrs-Lovett:~$ gnome-terminal --class=SageTerminal -- /home/rquint/Sage/sage-10.4/sage
# Не удалось разобрать аргументы: Слишком много аргументов
Поскольку я хочу использовать опцию класса, я использую X11 в качестве своей оконной системы. В 24.04 с GNOME Terminal 3.52.0 эта команда работает. Если я использую
rquint@Mrs-Lovett:~$ gnome-terminal -- /home/rquint/Sage/sage-10.4/sage
команда работает, но я хочу использовать опцию класса, чтобы индикатор точка в Dash прикреплялся к правильному значку.
Я нашел отчет об ошибке по этому поводу на Launchpad, который также упоминается в комментариях к последнему коммиту, который это сломал; однако эта ошибка возникает из-за того, как Ubuntu вызывает исполняемый файл gnome-terminal
(gnome-terminal
на самом деле является Python-скриптом, который вызывает gnome-terminal.real
), поэтому проблема определенно на стороне Ubuntu.
Я пытался поработать с Python-скриптом, чтобы увидеть, могу ли я это исправить, но не нашел лучшего решения, чем полностью обойти разбор аргументов командной строки (по крайней мере, в то время, которое я был готов потратить на исправление скрипта – если мне захочется это сделать, я посмотрю на это снова), однако на данный момент полное игнорирование обертки скрипта работает:
gnome-terminal.real --class=Foo -- /usr/bin/sh
не выдает жалоб и запускает новый экземпляр терминала, выполняющий sh
.
Пока это не будет исправлено, вы можете создать псевдоним gnome-terminal
для gnome-terminal.real
:
alias gnome-terminal=gnome-terminal.real
Ответ или решение
Проблема с GNOME Terminal 3.54.0 после обновления Raspberry Pi 5 с Ubuntu 24.04 до 24.10
После обновления операционной системы с Ubuntu 24.04 до 24.10 пользователи, работающие с GNOME Terminal версии 3.54.0, столкнулись с проблемой при использовании команды:
gnome-terminal --class=SageTerminal -- /home/rquint/Sage/sage-10.4/sage
Ошибка, которую выводит система, следующая:
Failed to parse arguments: Too many arguments
Суть проблемы
Ваша задача заключается в том, чтобы использовать опцию --class
, обеспечивая правильное подключение индикатора в Dash к соответствующему значку. В предыдущей версии (3.52.0) данный вызов работал без проблем, и это создание нового терминала с указанным классом было возможным. Однако после обновления появилась проблема с интерпретацией аргументов.
Как вы заметили, когда вы убираете опцию --class
, команда работает корректно:
gnome-terminal -- /home/rquint/Sage/sage-10.4/sage
Причина проблемы
На основании вашего исследования и находок в системе отчетов об ошибках, можно сказать, что данная проблема может быть связана с тем, как Ubuntu обрабатывает запуск исполняемого файла gnome-terminal
. Фактически, gnome-terminal
представляет собой скрипт на Python, который вызывает другой исполняемый файл gnome-terminal.real
. Проблема возникает из-за неправильной передачи аргументов в этом слое абстракции.
Обходные пути
- Использование
gnome-terminal.real
:
Ошибка может быть обойдена путем непосредственного запуска gnome-terminal.real
с нужными параметрами, минуя оболочку Python. Пример команды:
gnome-terminal.real --class=SageTerminal -- /home/rquint/Sage/sage-10.4/sage
- Создание алиаса:
Если вам не нравится многократное использование длинной команды, можно создать алиас. Для этого откройте файл .bashrc
(или аналогичный файл конфигурации вашего шелла) и добавьте следующую строку:
alias gnome-terminal=gnome-terminal.real
После этого необходимо перезагрузить терминал или выполнить source ~/.bashrc
, чтобы изменения вступили в силу. Теперь вы сможете использовать команду gnome-terminal
как обычно, и она будет перенаправлять на gnome-terminal.real
, что устранит текущую проблему с аргументами.
Заключение
Проблемы, возникающие с обновлением программного обеспечения и компонентами системы, могут негативно сказаться на вашем рабочем процессе. В данном случае знание обходных путей, таких как запуск gnome-terminal.real
напрямую или создание алиаса, может значительно упростить вашу работу до тех пор, пока не будет выпущено обновление, устраняющее существующую ошибку в gnome-terminal
на уровне Ubuntu.
Рекомендуется также следить за обновлениями системного программного обеспечения и возможными исправлениями данной проблемы.