Qtile не устанавливается на Ubuntu 20.04

Вопрос или проблема

Я пытаюсь установить 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, и установка из исходников является рекомендуемым вариантом. Однако, как вы заметили, возникают ошибки при выполнении команд установки. Давайте подробно разберем, что может быть причиной проблем и как их решить.

Проблема с установкой

На основании предоставленного вами сообщения об ошибке, есть несколько ключевых моментов:

  1. Отсутствие заголовочных файлов PulseAudio: Установщик сообщает о невозможности найти заголовочные файлы PulseAudio. Это может привести к отсутствию поддержки определённых виджетов в Qtile, таких как PulseVolume.

  2. Проблема с библиотекой 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.

Оцените материал
Добавить комментарий

Капча загружается...