FAF nativo en ubuntu (QtWebKit en ubuntu 17.04+)

11

Estoy tratando de ejecutar FAF (nativamente) junto con FA (a través del vino)

(debido a las vistas que recibe esta publicación y a cuánto se han actualizado los métodos, he decidido actualizar esta pregunta para que responda y pregunte. Consulte el historial de revisiones de esta publicación para ver el proceso para encontrar el método anterior para ejecutar el método cliente de Python y las guías antiguas)


Cliente Java de estado beta:

ingrese la descripción de la imagen aquí

use este script: (actualizado 3/12/2019)

https://github.com/tatsujb/installFAFscript

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


Cliente de Python: (AHORA OBSOLETO)

trabajo FAF

Cómo: compilar esta aplicación python (FAF) desde la fuente:

en funcionamiento gracias a la guía "Python 3 con PyQt5" de @edwinksl. lo marcó como solución. ¡buen trabajo!

Actualización (31/1/2018)

Lo siento, me tomó tanto tiempo actualizar esta publicación. ¡Tiene 7000 visitas! Realmente merece información actualizada.

Desde que pregunté han pasado muchas cosas. FAF ahora tiene más o menos soporte para Linux. incluso tienen un wiki para instalarlo (¡y por distribución!):

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

no se garantiza que se ajuste a sus necesidades, puede encontrar más buscando en: http://forums.faforever.com/viewtopic.php?f=2&t=4507

En este momento, el wiki no está tan actualizado.

por un tiempo pude hacer que faf se ejecute con python nativo, no se necesita virtualenv, pero las dependencias cambiantes de QT y la composición del paquete, así como el uso de FAF de ellos lo ha roto nuevamente ... ¡espero temporalmente!

tenga la seguridad de que lo tengo funcionando personalmente y estoy aquí para ofrecer consuelo (intente omitir los pasos 6 y 7 primero, pueden ser innecesarios):

  1. Instale algunos requisitos previos: 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(o la versión más reciente en https://github.com/FAForever/client/releases/ )
  3. extraer (para este ejemplo extraeré a casa) ( 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/ : mover al directorio de trabajo
  5. sed -i 1,1d requirements.txt : elimina cxFreeze de los requisitos (no es obligatorio y matará la compilación)
  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: descarga el binario de inicio de sesión y: sudo chmod +x /usr/bin/faf-uidpermite que faf lo ejecute.
  9. touch res/RELEASE-VERSION && echo "0.16.1" >> res/RELEASE-VERSION : cumple con el requisito final de faf: un archivo de versión de lanzamiento.

ahora debería ejecutarse, pero para el placer de hacerlo, hagamos un corredor:

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

luego ./FAF.shpara ejecutar FAF.

¡Salud!

tatsu
fuente
Ver wiki.qt.io/Building_Qt_5_from_Git . Si todavía tiene un problema, comuníquese directamente con los encargados del mantenimiento de qtwebkit.
Panther
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
Así que ingrese la
Panther
2
@tatsu Creo que logré hacer que QtWebKit funcione pero no tengo el juego FAF, por lo que no puedo verificar completamente que esto funcione. Permítanme tratar de configurar una sala de chat para que podamos discutir.
edwinksl
2
@tatsu Mientras tanto, escribí una respuesta. Pruébelo y vea si ayuda.
edwinksl

Respuestas:

4

Nota: se ha comprobado que los pasos para Python 3 con PyQt5 funcionan mientras que los pasos para Python 2 con PyQt4 y PySide siguen siendo experimentales.

Python 3 con PyQt5 (demostrado que funciona)

Parece que la 474-feature-py3rama del repositorio FAForever / client GitHub usa Python 3 con PyQt5, que contiene QtWebKit. Por lo tanto, usar esta rama es la solución más sencilla. Tenga en cuenta que PyQt5 (pero no PyQt4) de hecho se puede instalar pip, por lo que hace las cosas mucho más convenientes.

Pasos para Python 3 con PyQt5:

  1. cden un directorio de su elección, que será ~/Desktop/tempcon el propósito de escribir esta respuesta, git cloneel repositorio FAForever / client GitHub y git checkoutla 474-feature-py3rama:

    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. Cree y active un virtualenv para Python 3 (el predeterminado es Python 3.5 para Ubuntu 17.04) y fuerce la actualización pipsolo para asegurarse de que esté actualizado:

    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. Use pippara instalar PyQt5y desde requirements.txt:

    pip install PyQt5
    pip install -r requirements.txt
    
  4. Descargue el faf-uidbinario faf-client/liby hágalo ejecutable:

    wget https://github.com/FAForever/uid/releases/download/v4.0.4/faf-uid -O lib/faf-uid
    chmod +x lib/faf-uid
    
  5. Ejecutar pythonen src/__main__.py:

    python src/__main__.py
    

Python 2 con PyQt4 y PySide (experimental)

Parece que he descubierto cómo importar el QtWebKitmódulo, pero no tengo el juego FAF instalado, por lo que no puedo verificar completamente que esto funcione y, por lo tanto, esta respuesta es un trabajo en progreso.

En pocas palabras, solía aptinstalar python-qt4, que no tiene el QtWebKitmódulo. Creé y activé un virtualenv sin usar la --system-site-packagesopción y lo pipinstalé PySide, que tiene el QtWebKitmódulo. Luego vinculé las bibliotecas y los archivos del sistema apropiados para PyQt4 en virtualenv. Luego hice un par de cambios faf-client/srcpara importar el QtWebKitmódulo PySide. Esta solución está inspirada en /programming//a/28850104/486919 , /programming//a/36887302/486919 y /programming//a/37616466/486919 .

Pasos:

  1. Instalar python-qt4:

    sudo apt update
    sudo apt install python-qt4
    
  2. cden un directorio de su elección, que será ~/Desktop/tempcon el propósito de escribir esta respuesta, git clonemi versión del repositorio y git checkoutla patchrama:

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

    Esta patchrama tiene varias confirmaciones adicionales en comparación con la developrama predeterminada : 1) elimina la especificación de la versión cx_Freeze, lo que me daba problemas de instalación si usaba la 4.3.4versión especificada anteriormente, y 2) importa QtWebKitdesde en PySidelugar de PyQt4.

  3. Cree y active un virtualenv para Python 2 y fuerce la actualización pipsolo para asegurarse de que esté actualizado:

    virtualenv venv
    source venv/bin/activate
    pip install -U --force-reinstall pip
    
  4. Use pippara instalar PySidey desde requirements.txt:

    pip install PySide
    pip install -r requirements.txt
    
  5. Descargue el faf-uidbinario faf-client/liby hágalo ejecutable:

    wget https://github.com/FAForever/uid/releases/download/v4.0.4/faf-uid -O lib/faf-uid
    chmod +x lib/faf-uid
    
  6. cdal site-packagesdirectorio dentro de virtualenv y crea enlaces simbólicos apropiados:

    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 .
    

    Tenga .en cuenta el al final de cada enlace simbólico.

  7. cdvolver a faf-clientcorrer pythonen src/__main__.py:

    cd -  # this goes back to previous directory, which should be ~/Desktop/temp/faf-client
    python src/__main__.py
    
edwinksl
fuente
en primer lugar gracias! y lo siento, me perdí la cola. Fui hospitalizado Estoy atrapado en: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
@tatsu My bad. Primero debe cdingresar al faf-clientdirectorio y luego hacerlo git checkout patch.
edwinksl
@edwinskl yup !! y cd copia de seguridad una vez que se hace!
tatsu
@edwinskl justo después de pip install -r faf-client/requirements.txt que agregué wget https://github.com/FAForever/uid/releases/download/v4.0.4/faf-uid -O ./faf-client/lib/faf-uid y chmod +x ./faf-client/lib/faf-uidluego hice cd ./faf-client && ../venv/bin/python src/__main__.py según la publicación original del foro del tutorial con el que construí mi script con: forums.faforever.com/… FAF se ejecuta bbut todavía con un registro de errores.
tatsu
@tatsu ¡No dudes en sugerir ediciones! Después de todo, tienes el juego instalado mientras yo no ...
edwinksl
1

Verifique la ~/.bashrcanulación de la versión de Python

El paquete que desea compilar requiere Python versión 2.7.x. Confirme eso con estos comandos:

$ 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']
>>> 

Ese fue el problema en estas preguntas y respuestas .

No estás solo con la linux error PyQt4 import QtWebKitbúsqueda de google:

Desafortunadamente, hay muchos más resultados de Google, pero creo que estos son los más pertinentes para que los leas si la primera recomendación no funciona.

WinEunuuchs2Unix
fuente
gracias pero no estoy seguro de si soy yo quien no comprende o qué, pero estoy usando virtualenv que (creo) me está ayudando a no tener que instalar python2 localmente. dado que no debería tener que preocuparme por python3 entrometerse con nada. corrígeme si perdí completamente la marca aquí
tatsu