无法以 root 用户身份在 Wine 上运行 Python

无法以 root 用户身份在 Wine 上运行 Python

我已经在 Wine 7 上安装了 Python 3.10.8。为了使用 pip 下载模块,我需要 wine 来访问互联网。但如果不使用 sudo,wine 就无法访问互联网。如果我运行 wine ping google.com,ping 测试将失败:

ali@frozen-flower:~$ wine ping google.com
Pinging google.com [216.239.38.120] with 32 bytes of data:
PING: transmit failed. General failure.
PING: transmit failed. General failure.
PING: transmit failed. General failure.
PING: transmit failed. General failure.

Ping statistics for 216.239.38.120
        Packets: Sent = 4, Received = 0, Lost = 4 (100% loss)

在 sudo 的帮助下,一切正常:

ali@frozen-flower:~$ sudo wine ping google.com
Pinging google.com [216.239.38.120] with 32 bytes of data:
Reply from 216.239.38.120: bytes=32 time=70ms TTL=102
Reply from 216.239.38.120: bytes=32 time=89ms TTL=102
Reply from 216.239.38.120: bytes=32 time=73ms TTL=102
Reply from 216.239.38.120: bytes=32 time=71ms TTL=102

Ping statistics for 216.239.38.120
        Packets: Sent = 4, Received = 4, Lost = 0 (0% loss)
Approximate round trip times in milli-seconds:
        Minimum = 70ms, Maximum = 89ms, Average = 76ms

问题是,当我想使用 sudo 在 Wine 上运行 Python 时,出现以下错误:

ali@frozen-flower:~$ sudo wine python
Application could not be started, or no application associated with the specifie
d file.
ShellExecuteEx failed: File not found.

如果我不使用 sudo,Python 将运行:

ali@frozen-flower:~$ wine python
Python 3.10.8 (tags/v3.10.8:aaaf517, Oct 11 2022, 16:50:30) [MSC v.1933 64 bit (
AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>>

我的ubuntu版本是22.10

我该如何解决这个问题?

答案1

经过一番调查,我找到了问题的原因。当你安装Wine时,你需要使用winecfg命令来配置它。如果您在没有 的情况下运行此命令sudo,Wine 将.wine在其中创建其文件夹(即 )/home/$user,但如果您运行sudo winecfg,则该.wine文件夹将在该文件夹下创建/root。这意味着您的机器中将有两个 Wine 实例。我在一些网站上读到,运行 Winesudo将导致某些应用程序能够连接到互联网(尽管其他一些应用程序可以在不使用的情况下访问互联网,sudo这意味着在某些应用程序中连接到互联网需要创建特定类型的套接字,而这些套接字不能除非您是 root,否则将被创建)。因此,您必须在使用的 Wine 实例中安装 Python /root/.wine(即使用 运行 Python 安装程序sudo wine)。

相关内容