нативный FAF в Ubuntu (QtWebKit в Ubuntu 17.04+)

11

Я пытаюсь запустить FAF (изначально) в сочетании с FA (через вино)

(Из-за мнений, которые получает этот пост, и того, насколько обновлены методы, я решил обновить этот вопрос, чтобы он отвечал и спрашивал. Проверьте историю изменений этого поста, чтобы узнать, как найти старый метод для запуска клиент Python и старые руководства)


Java-клиент в бета-состоянии:

введите описание изображения здесь

используйте этот скрипт: (обновлено 12.03.2009)

https://github.com/tatsujb/installFAFscript

https://www.youtube.com/watch?v=BEWUEoQ8Q4k


Python клиент: (СЕЙЧАС ОБОРОТЫ)

рабочий FAF

Как: скомпилировать это приложение на Python (FAF) из исходного кода:

и работает благодаря руководству @edwinksl "Python 3 с PyQt5". пометил его как решение. Молодец!

Обновление (31/1/2018)

Извините, что так долго обновлял этот пост. он получил 7000 просмотров! это действительно заслуживает актуальной информации.

С тех пор как я спросил, многое произошло. FAF теперь имеет более или менее поддержку Linux. у них даже есть вики для его установки (и для дистрибутива!):

https://wiki.faforever.com/index.php?title=Setting_Up_FAF_Linux#Debian.2FUbuntu

он не гарантированно соответствует вашим потребностям, более подробную информацию можно найти, перейдя по ссылке: http://forums.faforever.com/viewtopic.php?f=2&t=4507.

сейчас вики не так уж и актуальны.

какое-то время я мог заставить faf работать с нативным python, не требуя virtualenv, но постоянно меняющиеся зависимости QT и состав пакета, а также их использование FAF сломали это снова ... временно я надеюсь!

будьте уверены, у меня это работает лично, и я здесь, чтобы предложить утешение (попробуйте сначала пропустить шаги 6 и 7, они могут быть ненужными):

  1. Установите некоторые предварительные условия: sudo apt update && sudo apt install wget PyQt5.QtMultimedia python3-idna python3-semantic-version python3-pyqt5 python3-pyqt5.qtwebengine
  2. cd Downloads && wget https://github.com/FAForever/client/archive/0.16.1.tar.gz(или какой выпуск будет последним на https://github.com/FAForever/client/releases/ )
  3. извлекать (для этого примера я извлеку на дом) ( cd Downloads/ && mv client-0.16.1.tar.gz ~/ && cd && tar -zxf client-0.16.1.tar.gz && mv client-0.16.1 faf-client && rm client-0.16.1.tar.gz)
  4. cd fafclient/ : перейти в рабочий каталог
  5. sed -i 1,1d requirements.txt : удаляет cxFreeze из требований (это не обязательно и убивает компиляцию)
  6. virtualenv -p python3 faf
  7. pip install -r requirements.txt
  8. sudo wget https://github.com/FAForever/uid/releases/download/v4.0.5/faf-uid -O /usr/bin/faf-uid: загружает двоичный файл для входа в систему и: sudo chmod +x /usr/bin/faf-uidпозволяет выполнять его через faf.
  9. touch res/RELEASE-VERSION && echo "0.16.1" >> res/RELEASE-VERSION : выполняет последнее требование faf: файл версии выпуска.

теперь он должен работать, но, черт возьми, давайте сделаем раннер:

touch FAF.sh
echo "#! /bin/bash" >> FAF.sh
echo "cd /home/t/faf-client" >> FAF.sh
echo "python3 src/__main__.py" >> FAF.sh
chmod +x FAF.sh

затем ./FAF.shзапустить FAF.

Ура!

Tatsu
источник
Смотрите wiki.qt.io/Building_Qt_5_from_Git . Если у вас все еще есть проблема, свяжитесь напрямую с сопровождающими qtwebkit.
Пантера
t@tsu:~$ sudo apt-get build-dep qt5-default Reading package lists... Done E: You must put some 'source' URIs in your sources.list
Tatsu
Поэтому поместите исходный код Uri
Пантера
2
@tatsu Я думаю, мне удалось заставить работать QtWebKit, но у меня нет игры FAF, поэтому я не могу полностью проверить, что это работает. Позвольте мне попытаться настроить чат, чтобы мы могли обсудить.
edwinksl
2
@tatsu Тем временем я написал ответ. Попробуйте и посмотрите, поможет ли это.
Edwinksl

Ответы:

4

Примечание: шаги для Python 3 с PyQt5 доказали свою эффективность, в то время как шаги для Python 2 с PyQt4 и PySide все еще являются экспериментальными.

Python 3 с PyQt5 (доказано, что работает)

Похоже, что 474-feature-py3ветвь репозитория GitHub FAForever / client использует Python 3 с PyQt5, который содержит QtWebKit. Следовательно, использование этой ветки является наиболее простым решением. Обратите внимание, что PyQt5 (но не PyQt4) на самом деле может быть установлен с pip, так что это делает вещи более удобными.

Шаги для Python 3 с PyQt5:

  1. cdв директорию по вашему выбору, который будет ~/Desktop/tempс целью написания этого ответа, git cloneв FAForever / клиент GitHub хранилища и git checkoutв 474-feature-py3отрасли:

    mkdir ~/Desktop/temp
    cd ~/Desktop/temp
    git clone https://github.com/FAForever/client.git faf-client
    cd faf-client
    git checkout 474-feature-py3
    
  2. Создайте и активируйте virtualenv для Python 3 (по умолчанию это Python 3.5 для Ubuntu 17.04) и принудительно обновите, pipчтобы убедиться, что он актуален:

    virtualenv venv -p python3  # replace python3 with python3.6 if you want to use Python 3.6 instead
    source venv/bin/activate
    pip install -U --force-reinstall pip
    
  3. Используйте pipдля установки PyQt5и от requirements.txt:

    pip install PyQt5
    pip install -r requirements.txt
    
  4. Загрузите faf-uidбинарный файл faf-client/libи сделайте его исполняемым:

    wget https://github.com/FAForever/uid/releases/download/v4.0.4/faf-uid -O lib/faf-uid
    chmod +x lib/faf-uid
    
  5. Запустить pythonна src/__main__.py:

    python src/__main__.py
    

Python 2 с PyQt4 и PySide (экспериментальный)

Похоже, что я, возможно, понял, как импортировать QtWebKitмодуль, но у меня не установлена ​​игра FAF, поэтому я не могу полностью убедиться, что это работает, и поэтому этот ответ находится в стадии разработки.

В двух словах я использовал aptдля установки python-qt4, который не имеет QtWebKitмодуля. Я создал и активировал virtualenv, не используя эту --system-site-packagesопцию, и использовал ее pipдля установки PySide, в которой есть QtWebKitмодуль. Затем я вставил ссылки на соответствующие системные библиотеки и файлы для PyQt4 в virtualenv. Затем я внес пару изменений, faf-client/srcчтобы импортировать QtWebKitмодуль из PySide. Это решение основано на /programming//a/28850104/486919 , /programming//a/36887302/486919 и /programming//a/37616466/486919 .

шаги:

  1. Установить python-qt4:

    sudo apt update
    sudo apt install python-qt4
    
  2. cdв директорию по вашему выбору, который будет ~/Desktop/tempс целью написания этого ответа, git cloneмой вариант хранилища и git checkoutв patchотрасли:

    mkdir ~/Desktop/temp
    cd ~/Desktop/temp
    git clone https://github.com/edwinksl/client.git faf-client
    cd faf-client
    git checkout patch
    

    Эта patchветвь имеет несколько дополнительных фиксаций по сравнению с по умолчанию developветви: 1) он избавляется от спецификации версии для cx_Freeze, который дает мне проблемы с установкой , если я использовал 4.3.4версию ранее указанную, и 2) он импортирует QtWebKitиз PySideвместо PyQt4.

  3. Создайте и активируйте virtualenv для Python 2 и принудительно обновите его, pipчтобы убедиться, что он актуален:

    virtualenv venv
    source venv/bin/activate
    pip install -U --force-reinstall pip
    
  4. Используйте pipдля установки PySideи от requirements.txt:

    pip install PySide
    pip install -r requirements.txt
    
  5. Загрузите faf-uidбинарный файл faf-client/libи сделайте его исполняемым:

    wget https://github.com/FAForever/uid/releases/download/v4.0.4/faf-uid -O lib/faf-uid
    chmod +x lib/faf-uid
    
  6. cdв site-packagesкаталог внутри virtualenv и создайте соответствующие символические ссылки:

    cd venv/lib/python2.7/site-packages
    ln -s /usr/lib/python2.7/dist-packages/PyQt4/ .
    ln -s /usr/lib/python2.7/dist-packages/sip.x86_64-linux-gnu.so .
    

    Обратите внимание .на в конце каждой символической ссылки.

  7. cdвернуться faf-clientи запустить pythonна src/__main__.py:

    cd -  # this goes back to previous directory, which should be ~/Desktop/temp/faf-client
    python src/__main__.py
    
edwinksl
источник
Прежде всего, спасибо! и извините, я пропустил очередь. Я был госпитализирован. Я застрял на:Resolving deltas: 100% (8873/8873), done. t@tsu:~/Desktop/temp$ git checkout patch fatal: Not a git repository (or any of the parent directories): .git t@tsu:~/Desktop/temp$ git init Initialized empty Git repository in /home/t/Desktop/temp/.git/ t@tsu:~/Desktop/temp$ git checkout patch error: pathspec 'patch' did not match any file(s) known to git.
Таце
@tatsu Мой плохой. Сначала нужно cdвойти в faf-clientкаталог, а затем сделать git checkout patch.
edwinksl
@edwinskl да! и сделайте резервную копию, как только это будет сделано!
Tatsu
@edwinskl сразу после того, как pip install -r faf-client/requirements.txt я добавил, wget https://github.com/FAForever/uid/releases/download/v4.0.4/faf-uid -O ./faf-client/lib/faf-uid а chmod +x ./faf-client/lib/faf-uidзатем сделал, cd ./faf-client && ../venv/bin/python src/__main__.py как в оригинальном посте с обучающим форумом, на котором я создал свой скрипт: forums.faforever.com/… FAF все еще запускает bbut с журналом ошибок
Tatsu
@tatsu Не стесняйтесь предлагать изменения! Ведь у вас установлена ​​игра, а у меня нет ...
edwinksl
1

Проверьте ~/.bashrcналичие версии Python

Пакет, который вы хотите скомпилировать, требует Python версии 2.7.x. Подтвердите это с помощью этих команд:

$ python
Python 2.7.12 (default, Nov 19 2016, 06:48:10) 
[GCC 5.4.0 20160609] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import PyQt4
>>> print PyQt4.__path__
['/usr/lib/python2.7/dist-packages/PyQt4']
>>> 

Это была проблема в этом Q & A .

Вы не одиноки с linux error PyQt4 import QtWebKitпоиском Google:

К сожалению, есть много других результатов Google, но я думаю, что это наиболее уместно для вас, если первая рекомендация не удалась.

WinEunuuchs2Unix
источник
спасибо, но я не уверен, что это я, кто не понимает или что, но я использую virtualenv, который (я считаю) помогает мне не устанавливать Python2 локально. учитывая, что мне не нужно беспокоиться о вмешательстве python3 ни с чем. Поправьте меня , если я полностью промазал здесь
Tatsu