LINUX.ORG.RU

Wine на машине без дисплея и рантаймы от МС

 , , ,


0

1

Есть консольное приложение под Windows. Нужно запустить его под WINE на линуксовом сервере без дисплея. Приложение использует сторонние библиотеки, которым требуются ратнаймы VC++ и .Net. Требуется поставить их под вайн. Как это лучше сделать?

Debian 9 и Wine-stable 4.0 с winehq.org.

Большинство рантаймов в виде экзешников, например vcredist-2008sp1-x86.exe. При их запуске выдаёт ошибку наподобие:

0028:err:winediag:nodrv_CreateWindow Application tried to create a window, but no driver could be loaded.
0028:err:winediag:nodrv_CreateWindow Make sure that your X server is running and that $DISPLAY is set correctly.

winetricks пытается скачивать и устанавливать те же экзешники и выдаёт те же ошибки.

Запуск с /nogui ничего не меняет.

Нашёл упоминания ключа /display, но не понял, как его применять.

Поставил xserver-xorg-video-dummy, настроил как описано здесь https://gist.github.com/mangoliou/27c6c5867a95932f21ae59ad7152aa33 и https://gist.githubusercontent.com/mangoliou/ba126832f2fb8f86cc5b956355346038... Запускается без ошибок, но как его использовать? В $DISPLAY пусто.

Как поставить рантаймы?

★★★
Ответ на: комментарий от anonymous

Рантаймы все есть в самом вайне, уж 2008 точно.

Можно подробнее?

Нужны: VC++ 2005sp1, 2008sp1, 2010sp1, 2012up4; .Net 1.1, 2.0, 4.0. Как минимум, на отсутствие 4.0 ругается. Ставить Моно?

olegd ★★★
() автор топика
Ответ на: комментарий от Deleted

Поставить с vnc-дисплеем?

Как это? Для него всё равно нужен X Server? С каким драйвером?

Мы планируем автоматизировать эту процедуру, чтобы потом автоматически собирать образы Докера. Поэтому тег «Docker». А как автоматизировать для VNC?

olegd ★★★
() автор топика
Ответ на: комментарий от olegd

X-сервер не нужен.

Запустить vnc-сервер, он создаст дисплей, в этом дисплее поставить. Но с автоматизацией тут могут быть проблемы, да.

Deleted
()
Ответ на: комментарий от xDShot

Можно попробовать на время поднять Х сервер, подключиться к нему удаленно.

На той же машине, где запускается wine? Да, я именно так и пытался. Где чему указать, куда подключаться?

olegd ★★★
() автор топика

Установи на системе, где есть X сервер. Потом просто перенеси префикс.

Kron4ek ★★★★★
()

Приложение использует сторонние библиотеки, которым требуются ратнаймы VC++ и .Net. Требуется поставить их под вайн. Как это лучше сделать?

Варианты:

1. winetricks

2. Удалённо с помощью X11

В первом случае скрипт автоматически ставит требуемый рантайм. Во втором - на локальной машине запускается x-сервер, а на удалённой надо поставить wine и xlib/xcb и ssh. Ну а дальше ssh -X

Quasar ★★★★★
()
Ответ на: комментарий от olegd

На той же машине, где запускается wine? Да, я именно так и пытался. Где чему указать, куда подключаться?

Сначала делают неправильно, а потом кричат про то, что иксы говно...

X-сервер работает на той машине, на которой приложение рендерится. То есть, тебе надо X-сервер запустить на локальной машине, подключиться по ssh с ключом -X к удалённой, предварительно разрешив x forwarding, и в командной строке запустить интересующее приложение. Работать оно будет на удалённом компьютере, но отображаться - на том, с которого подключился.

Quasar ★★★★★
()
Ответ на: комментарий от Quasar

Сначала делают неправильно, а потом кричат про то, что иксы говно...

Возьми эти слова назад. Я ничего не говорил про качество иксов.

winetricks

Без иксов vcrun2008 виснет намертво. Но они пока не нужны оказались.

Удалённо с помощью X11

Чем это лучше установки в Докер Xvfb и запуска с ним?

olegd ★★★
() автор топика
Ответ на: комментарий от anonymous

Рантаймы все есть в самом вайне, уж 2008 точно.

Спасибо, пока работает и без них.

Но основная программа тоже сыпет ошибки OLE, поэтому какие-то иксы нужны.

olegd ★★★
() автор топика
Ответ на: комментарий от xDShot

Реализации этих рантаймов уже есть в wine. Ставить не нужно.

Спасибо, вроде работает без рантаймов VC и c Моно вместо официального .Net.

olegd ★★★
() автор топика
Ответ на: комментарий от Deleted

Попробовал связку Xvfb в контейнере + x11vnc в контейнере + TightVNC на другой машине. Последний выдаёт ошибку «No connection could be made because the target machine actively refused it.» не спрашивая пароля. В чём может быть проблема? xvfb и x11vnc

olegd ★★★
() автор топика
Ответ на: комментарий от Quasar

Попробовал связку Xvfb в контейнере + x11vnc в контейнере + TightVNC на другой машине. Последний выдаёт ошибку «No connection could be made because the target machine actively refused it.» не спрашивая пароля. В чём может быть проблема? xvfb и x11vnc

olegd ★★★
() автор топика
Ответ на: комментарий от xDShot

Попробовал связку Xvfb в контейнере + x11vnc в контейнере + TightVNC на другой машине. Последний выдаёт ошибку «No connection could be made because the target machine actively refused it.» не спрашивая пароля. В чём может быть проблема? xvfb и x11vnc

olegd ★★★
() автор топика
Ответ на: комментарий от xDShot

Реализации этих рантаймов уже есть в wine. Ставить не нужно.

Попробовал и так, и так. От некоторых входных данных на чистом Вайне программа падает. От некоторых других входных данных с рантаймами от МС уходит в вечный цикл. Дилемма, однако.

olegd ★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.