Не удается установить апплет Window AppMenu

Я новичок в Linux, и я пытался установить виджеты плазмы окна Appmenu и кнопки окна . Они отображаются в списке виджетов, но без значка и не могут быть использованы.

Когда я запускаю sh install.sh в каталоге, где я извлек файлы, я получаю следующее:

install.sh: 1: [: -a: unexpected operator
mkdir: cannot create directory ‘build’: File exists
install.sh: 5: install.sh: cmake: not found
make: No targets specified and no makefile found.  Stop.

Затем он запрашивает пароль, и я получаю:

make: *** No rule to make target 'install'. Stop.

Могу ли я получить прямое руководство о том, как правильно установить?

1
задан 23 August 2019 в 08:10

1 ответ

cmake команда необходима для создания того кода, и у Вас нет его. Это, а не [: -a: unexpected operator обменивайтесь сообщениями, кажется, то, что на самом деле мешает Вашей сборке продолжаться. Поэтому первая установка cmake. Для некоторого программного обеспечения нужна очень новая версия cmake создавать (который можно установить, если Вам нужно к), но большинство не делает. Я рекомендую установить cmake пакет.

В то время как Вы в нем, это - хорошая идея удостовериться, что у Вас есть обычный набор инструментальных средств для технических заданий на строительство в Вашей системе Ubuntu также который build-essential пакет получит Вас.

Эти команды установят обоих cmake и те другие инструменты:

sudo apt update
sudo apt install build-essential cmake

Это, вероятно, будет достаточно, чтобы позволить Вам успешно создать программное обеспечение или по крайней мере закончить текущую ошибку, с которой Вы сталкиваетесь. Однако я рекомендую удалить build каталог и его содержание перед продолжением:

rm -r build

После далее диагностирующие шаги, которые включают установку или удаление программного обеспечения или редактирование файлов от исходного кода (или, если Вам нравится, даже каждый раз, Вы создаете исходный код), я рекомендую удалить каталог сборки и запуститься новый.

Сообщения Вы добираетесь о -a вероятно, не мешают сборке успешно выполниться. Можно, вероятно, проигнорировать их. Они также, вероятно, ушли бы, если бы Вы использовали bash вместо sh, хотя я не думаю, что это - лучшее решение. Если Вы хотите избавиться от них, или Вы подозреваете, что они вызывают проблему затем, можно или отредактировать install.sh сценарий для использования соответствующего теста (или никакого теста) или можно вручную выполнить действия, которые выполняет сценарий. Таким образом, если Вы хотите сделать что-то об этом, посмотрите ниже для деталей.


В исходном коде для обеих кнопок окна апплета и applet-window-appmenu, install.sh в настоящее время имеет это как его полное содержание:

if ! [ -a build ] ; then
    mkdir build
fi
cd build
cmake -DCMAKE_INSTALL_PREFIX=/usr .. -Wnodev
make
sudo make install

Это - файл, с которым Вы пытаетесь работать sh это производит ошибки. Его использование -a тест является очень странным. -a обычно появляется между двумя другими выражениями и причинами [ возвращать true, когда оба выражения верны.

В Ubuntu, sh обеспечивают dash. Если Вы используете bash вместо dash, это может работать (или, казаться, работает). Возможно, это - то, что сделали авторы. Однако вместо того, чтобы делать это, я рекомендую Вам или исправляю сценарий или просто вручную делаю то, что он делает.

Если бы Вы хотите исправить сценарий, один путь состоял бы в том, чтобы заменить -a с -e или -d. -e тест берет операнд имени файла и проверяет, существует ли он; -d проверки, если это существует и является каталогом. Другой способ исправить сценарий состоял бы в том, чтобы просто удалить if и fi строки полностью; mkdir перестал бы работать, если каталог существует, но это не проблема.

mkdir build
cd build
cmake -DCMAKE_INSTALL_PREFIX=/usr .. -Wnodev
make
sudo make install

Но весь этот сценарий делает, создают a build каталог, если нет один, изменение в него с cd, выполненный cmake с некоторыми аргументами, выполненными make, и затем выполненный sudo make install. Можно просто сделать эти вещи сами. Один способ сделать так состоит в том, чтобы выполнить те команды в Вашей интерактивной оболочке, один за другим.

Это имеет преимущества. Как записано, сценарий не останавливается просто, потому что некоторый шаг сообщает об отказе, но Вы, вероятно, хотели бы остановиться. Вы могли сделать дальнейшие модификации к сценарию для достижения этого (возможно, заканчивающий каждую строку кроме первого и последнего с &&) но, вероятно, легче просто выполнить команды самостоятельно, если Вы не планирование компиляции кода многочисленные времена.

1
ответ дан 7 December 2019 в 14:59

Другие вопросы по тегам:

Похожие вопросы: