Вопрос или проблема
Я пытаюсь установить Qtile на свежеустановленный Ubuntu 20.04. Согласно документации по установке Qtile, Qtile больше не поддерживается через apt
, и рекомендуется установка из исходников. Инструкции предоставлены здесь.
Когда я следую этим инструкциям точно, я получаю ошибку, что команда завершилась с сообщением:
ERROR: Command errored out with exit status 1:
command: /home/yehuda/anaconda3/bin/python -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-kvdwotq7/qtile_78329e7437d44395920938573a2554c8/setup.py'"'"'; __file__='"'"'/tmp/pip-install-kvdwotq7/qtile_78329e7437d44395920938573a2554c8/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' install --record /tmp/pip-record-ja04qda9/install-record.txt --single-version-externally-managed --compile --install-headers /home/yehuda/anaconda3/include/python3.8/qtile
cwd: /tmp/pip-install-kvdwotq7/qtile_78329e7437d44395920938573a2554c8/
Complete output (21 lines):
Failed to find pulseaudio headers. PulseVolume widget will be unavailable
running install
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "/tmp/pip-install-kvdwotq7/qtile_78329e7437d44395920938573a2554c8/setup.py", line 91, in <module>
setup(
File "/home/yehuda/anaconda3/lib/python3.8/site-packages/setuptools/__init__.py", line 153, in setup
return distutils.core.setup(**attrs)
File "/home/yehuda/anaconda3/lib/python3.8/distutils/core.py", line 148, in setup
dist.run_commands()
File "/home/yehuda/anaconda3/lib/python3.8/distutils/dist.py", line 966, in run_commands
self.run_command(cmd)
File "/home/yehuda/anaconda3/lib/python3.8/distutils/dist.py", line 984, in run_command
cmd_obj.ensure_finalized()
File "/home/yehuda/anaconda3/lib/python3.8/distutils/cmd.py", line 107, in ensure_finalized
self.finalize_options()
File "/tmp/pip-install-kvdwotq7/qtile_78329e7437d44395920938573a2554c8/setup.py", line 46, in finalize_options
if not self.cairo_xcb_check():
File "/tmp/pip-install-kvdwotq7/qtile_78329e7437d44395920938573a2554c8/setup.py", line 40, in cairo_xcb_check
cairo.cairo_xcb_surface_create
ffi.error: symbol 'cairo_xcb_surface_create' not found in library 'libcairo.so.2': /home/yehuda/anaconda3/lib/python3.8/site-packages/../../libcairo.so.2: undefined symbol: cairo_xcb_surface_create
----------------------------------------
ERROR: Command errored out with exit status 1: /home/yehuda/anaconda3/bin/python -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-kvdwotq7/qtile_78329e7437d44395920938573a2554c8/setup.py'"'"'; __file__='"'"'/tmp/pip-install-kvdwotq7/qtile_78329e7437d44395920938573a2554c8/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' install --record /tmp/pip-record-ja04qda9/install-record.txt --single-version-externally-managed --compile --install-headers /home/yehuda/anaconda3/include/python3.8/qtile Проверьте логи для полной информации о команде.
Что происходит и как я могу правильно установить Qtile в системе Debian-Ubuntu?
Я только что столкнулся с такой же проблемой на Ubuntu 20.04. Я решил проблему, установив python3 и pip3 как системные пакеты, до этого я использовал только anaconda и имел базовую среду в своем .bashrc
. Я успешно установил qtile, выполнив следующие действия:
sudo apt install python3 python3-distutils
curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
python3 get-pip.py # Я получил предупреждение, что /home/$USER/.local/bin не в PATH, поэтому я добавил это в .bashrc
pip3 install xcffib
pip3 install --no-cache-dir cairocffi
pip3 install dbus-next
pip3 install qtile
Это сработало для меня. Не забудьте обновить ваш .bashrc
после изменений!
У меня была такая же проблема, но после небольшой попытки я смог это сделать
sudo apt install pip
pip install xcffib
pip install qtile
sudo cd /usr/share/xsessions/
sudo touch qtile.desktop
sudo echo "[Desktop Entry]
Name=Qtile
Comment=Qtile Session
Exec=qtile start
Type=Application
Keywords=wm;tiling" >> qtile.desktop
Также добавьте следующее в начало ~/.bashrc
:
PATH=$HOME/.local/bin:$PATH
Просто скопируйте и вставьте приведенные выше команды в ваш терминал, и это позаботится о процессе установки за вас. Если вы также хотите использовать мою конфигурацию Qtile, вы можете найти её здесь.
Надеюсь, это поможет другим, кто может столкнуться с аналогичными проблемами при установке Qtile на Linux Mint!
Ответ или решение
Установка Qtile на Ubuntu 20.04 может вызывать некоторые сложности, особенно если вы следуете руководству по установке из официальной документации. Важно понимать, что Qtile больше не поддерживается через apt
, и установка из исходников является рекомендуемым вариантом. Однако, как вы заметили, возникают ошибки при выполнении команд установки. Давайте подробно разберем, что может быть причиной проблем и как их решить.
Проблема с установкой
На основании предоставленного вами сообщения об ошибке, есть несколько ключевых моментов:
-
Отсутствие заголовочных файлов PulseAudio: Установщик сообщает о невозможности найти заголовочные файлы PulseAudio. Это может привести к отсутствию поддержки определённых виджетов в Qtile, таких как PulseVolume.
-
Проблема с библиотекой
libcairo
: Ошибкаundefined symbol: cairo_xcb_surface_create
указывает на то, что установленная версия библиотеки Cairo не содержит необходимого символа. Это может быть вызвано конфликтами между библиотеками, установленными в вашей Anaconda-среде и системными библиотеками.
Решение проблемы
Подготовка системы
Чтобы избежать конфликтов, рекомендуется сначала установить все необходимые зависимости в системе. Сначала выполните следующие команды в терминале:
sudo apt update
sudo apt install python3 python3-distutils python3-pip libpulse-dev libcairo2-dev libxcb-cursor-dev
Эти команды устанавливают Python 3 и pip 3, а также необходимые библиотеки и заголовочные файлы для PulseAudio и Cairo.
Установка pip и необходимых пакетов
После установки базовых пакетов, выполните команду для установки pip, если он не был установлен:
curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
python3 get-pip.py
Не забудьте добавить путь к директории, где устанавливаются локальные пакеты, в переменную PATH:
echo 'export PATH=$HOME/.local/bin:$PATH' >> ~/.bashrc
source ~/.bashrc
Установка Qtile
Теперь вы можете установить необходимые пакеты для Qtile и его зависимости:
pip3 install --no-cache-dir xcffib cairocffi dbus-next
pip3 install qtile
Настройка сессии Qtile
Для добавления Qtile в менеджер сессий, создайте файл qtile.desktop
:
echo "[Desktop Entry]
Name=Qtile
Comment=Qtile Session
Exec=qtile start
Type=Application
Keywords=wm;tiling" | sudo tee /usr/share/xsessions/qtile.desktop
Заключение
После выполнения всех вышеуказанных шагов, вы должны иметь возможность запустить Qtile без проблем. Если вы столкнетесь с другими ошибками, тщательно проверьте зависимости и конфигурации. Установка из исходников всегда может быть подвержена непредвиденным проблемам с совместимостью, особенно если у вас установлен Python через Anaconda. Рекомендуется по возможности использовать системные версии Python и pip для обеспечения совместимости.
Если же проблемы сохраняются, возможно, стоит пересмотреть установку из Anaconda и использовать стандартную версию Python, которая идет с Ubuntu.