Wine 莫名其妙地停止工作了。我决定简单地完全删除并重新安装 Wine,但在这之前,我想确保我不会丢失过去在 Wine 上保存和安装的大量文件和程序。
我是否可以只备份 .wine 文件夹中的“drive_c”和“dosdevices”,然后完全删除 .wine 目录 (rm -rf ~/.wine),再次安装 wine,然后将备份文件夹放回目录中?我能否正常运行程序?
此外,既然我已经在写这篇文章,我也应该补充一些我所知道的有关 Wine 出了什么问题的信息。
我使用的是 Ubuntu 12.04。大约一周前 Wine 运行良好,然后莫名其妙地停止了工作。
如果我运行 winecfg.exe,进程会运行(根据 top 命令),但屏幕上什么也不会出现。它只是占用了我一个 CPU 的 100%。如果我运行 Winetricks 或尝试在 wine 中运行 .exe 程序,也会发生同样的事情。一个进程出现在 top 中,占用了 CPU,但什么也没发生。
如果我通过终端运行 wine,结果如下:
user@computer:~/Downloads/SpaceEngine 0.97/system$ wine SpaceEngine.exe
modify_ldt: Invalid argument
modify_ldt: Invalid argument
modify_ldt: Invalid argument
modify_ldt: Invalid argument
modify_ldt: Invalid argument
err:seh:raise_exception Exception frame is not in stack limits => unable to dispatch exception.
我尝试更新 wine,但没有任何效果。所以最好删除安装并重新开始。那么我如何确保不会丢失数据?
答案1
我在 Ubuntu 12.04.4 LTS x86_64 上,内核为 3.11.0-24-generic,wine-1.7.18。我通过添加 before 行解决了这个问题
echo 1 > /proc/sys/abi/ldt16
。
/etc/rc.local
重启exit 0
后,我可以安装 win16 程序。
答案2
我修复了它。我不知道哪里出了问题 - 但我复制粘贴了整个 .wine 目录作为备份。然后我删除了整个 .wine 目录,重新安装了 wine,并只放回了 drive_c 和 dosdevices 文件夹。
现在效果很好!
我不知道这些答案是否与我的问题相关,或者如果我尝试它们是否会有所帮助 - 但我所做的效果很好。
只需备份并重新安装。
答案3
您很可能正在尝试在最近更新的 64 位 Linux 内核上运行 16 位 Windows 可执行文件。
支持16 位段被暂停由于安全问题,在 64 位 Linux 系统上无法使用。
此事最近被广泛WineHQ 论坛上讨论并且已经已报告错误。
目前,还没有万无一失的解决方法。您必须等待 wine 或内核更新。
尽管如此,32 位 Linux 系统并不受到影响。
答案4
只需运行
$ echo 1 > /proc/sys/abi/ldt16
然后通过 wine 启动你的应用程序。这将暂时启用内核中的 16 位支持。