LINUX.ORG.RU

DBus и Wine

 , , , ,


1

2

Есть приложения, скомпилированные под винду, использующие dbus. С ними вместе идут dbus-1.dll, dbus-daemon.exe и конфиги.
Цель — запустить эти приложения в Wine (2.0). Не важно, будет использоваться нативный dbus или dbus в вайне (но нативный, конечно, лучше).
При выключенном системном dbus пробую запустить одно из приложений:

Failed to start message bus: Failed to lookup host/port: "localhost:0": Host not found (11001)
Похоже, что dbus в вайне не стартует. Может, и не должен.
Запускаю системный dbus, пытаюсь снова запустить приложение:
Failed to start message bus: Failed to bind socket "localhost:6305": Address already in use
Кто-нибудь занимался подобными извращениями? Что можете посоветовать?

★★★★★

Failed to start message bus: Failed to bind socket «localhost:6305»: Address already in use

Судя по этому — таки «должен». Почему не стартует, не знаю. Наверное, какие-то баги вайна или неправильное использование Win32 API в libdbus.

Что можете посоветовать?

Если приложение проприетарное и/или заглянуть в код нет возможности — то предотвратить запуск комплектного дбаса, заменив dbus.exe на пустышку, а потом заставить линуксовый общесистемный dbus слушать tcp:6305.

Если наоборот — то посмотреть в код, понять, что оно пытается сделать, и подстроить окружение соответственно.

intelfx ★★★★★
()
Последнее исправление: intelfx (всего исправлений: 1)
Ответ на: комментарий от gasinvein

Проприетарная софтина для управления камерами на Qt. Название не скажу, всё равно по нему ничего не гуглится.

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

предотвратить запуск комплектного дбаса, заменив dbus.exe на пустышку, а потом заставить линуксовый общесистемный dbus слушать tcp:6305.

Может, комплектному dbus просто конфиги подправить как-то? И порт всегда разный, да.

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

Есть такой батник:

:: environment setting for dbus clients
@echo off
 
:: session bus address
set DBUS_SESSION_BUS_ADDRESS=autolaunch:scope=install-path
 
:: system bus address
set DBUS_SYSTEM_BUS_DEFAULT_ADDRESS=nonce-tcp:
system.conf:
<!DOCTYPE busconfig PUBLIC "-//freedesktop//DTD D-BUS Bus Configuration 1.0//EN"
 "http://www.freedesktop.org/standards/dbus/1.0/busconfig.dtd">
<busconfig>

  <!-- Our well-known bus type, do not change this -->
  <type>system</type>

  <!-- Run as special user -->
  <user>Administrator</user>

  <!-- Fork into daemon mode -->
  <fork/>

  <!-- Write a pid file -->
  <pidfile>/dbus-pid</pidfile>

  <!-- Only allow socket-credentials-based authentication -->
  <auth>EXTERNAL</auth>

  <!-- Only listen on a local socket. (abstract=/path/to/socket 
       means use abstract namespace, don't really create filesystem 
       file; only Linux supports this. Use path=/whatever on other 
       systems.) -->
  <listen>nonce-tcp:</listen>

  <policy context="default">
    <!-- Deny everything then punch holes -->
    <deny send_interface="*"/>
    <deny receive_interface="*"/>
    <deny own="*"/>
    <!-- But allow all users to connect -->
    <allow user="*"/>
    <!-- Allow anyone to talk to the message bus -->
    <!-- FIXME I think currently these allow rules are always implicit 
         even if they aren't in here -->
    <allow send_destination="org.freedesktop.DBus"/>
    <allow receive_sender="org.freedesktop.DBus"/>
    <!-- valid replies are always allowed -->
    <allow send_requested_reply="true"/>
    <allow receive_requested_reply="true"/>
  </policy>

  <!-- Config files are placed here that among other things, punch 
       holes in the above policy for specific services. -->
  <includedir>system.d</includedir>

  <!-- This is included last so local configuration can override what's 
       in this standard file -->
  <include ignore_missing="yes">system-local.conf</include>

  <include if_selinux_enabled="yes" selinux_root_relative="yes">contexts/dbus_contexts</include>

</busconfig>
session.conf:
<!DOCTYPE busconfig PUBLIC "-//freedesktop//DTD D-BUS Bus Configuration 1.0//EN"
 "http://www.freedesktop.org/standards/dbus/1.0/busconfig.dtd">
<busconfig>
  <!-- Our well-known bus type, don't change this -->
  <type>session</type>

  <listen>autolaunch:scope=install-path</listen>

  <standard_session_servicedirs />

  <policy context="default">
    <!-- Allow everything to be sent -->
    <allow send_destination="*"/>
    <!-- Allow everything to be received -->
    <allow eavesdrop="true"/>
    <!-- Allow anyone to own anything -->
    <allow own="*"/>
  </policy>

  <!-- This is included last so local configuration can override what's 
       in this standard file -->
  <include ignore_missing="yes">session-local.conf</include>

  <include if_selinux_enabled="yes" selinux_root_relative="yes">contexts/dbus_contexts</include>

</busconfig>

CYB3R ★★★★★
() автор топика
Последнее исправление: CYB3R (всего исправлений: 1)
Ответ на: комментарий от CYB3R

Похоже, что конфиги скопированы с какой-то линуксовой системы, но переводы строк везде виндовые.

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