wine介绍与简单FAQ
wine相关概念
什么是wine
Wine (“Wine Is Not an Emulator” 的首字母缩写)是一个能够在多种 POSIX-compliant 操作系统(诸如 Linux,macOS 及 BSD 等)上运行 Windows 应用的兼容层。Wine 不是像虚拟机或者模拟器一样模仿内部的 Windows 逻辑,而是將 Windows API 调用翻译成为动态的 POSIX 调用,免除了性能和其他一些行为的内存占用,让你能够干净地集合 Windows 应用到你的桌面。
什么是wine容器
如上图,wine容器其实就是一个目录。这个目录提供的就是Windows程序运行的环境,可以类比成一个精简的Windows系统目录。
wine版本
统信目前维护了四个版本的wine:deepin-wine,deepin-wine5,deepin-wine5-stable,deepin-wine6-stable。目前长期维护的是deepin-wine5-stable和deepin-wine6-stable。
如何用wine运行Windows应用
WINEPREFIX=“bottle_path” wine “应用程序路径”
如运行微信的命令
WINEPREFIX=~/.deepinwine/Deepin-WeChat deepin-wine6-stable ~/.deepinwine/Deepin-WeChat/drive_c/Program\ Files/Tencent/WeChat/WeChat.exe
FAQ
包安装器安装报错
绝大部分问题都是因为包安装器没有自动修复wine应用依赖导致,可以手动用dpkg安装之后通过apt修复依赖。
sudo dpkg -i *.deb && sudo apt update && sudo apt install -f
如果apt修复报错,就可能是如下情况导致依赖冲突问题
- 两个不同的包,释放的文件路径相同
- control信息里面Conflicts或者broken字段指定了冲突的包
- control文件depends字段指定的包版本不满足要求
- 同时安装了32位和64位的情况,两个版本不一致
解决安装报错问题主要的思路就是逐步安装提示报错的包,直到找到导致依赖问题的包,注意看报错信息就可以了
确认应用包名
- 在启动器中右键选择应用发送到桌面
- 将桌面图标拖放到终端中
- 终端显示的应用路径中desktop文件名就是包名
如 Desktop/cn.zhihuiji.deepin.desktop文件的包名就是 cn.zhihuiji.deepin
确认应用容器名
cat /opt/apps/包名/files/run.sh | grep BOTTLENAME= | awk -F = '{print $2}'
应用释放的容器目录就是在~/.deepinwine/容器名
部分打包的应用容器名称是Deepin-*, 新维护的应用容器名称和包名一致
卡死问题
先确认问题重现步骤,重现概率,应用版本。
如果复现概率不高,可以直接强退或者通过如下命令强制退出
/opt/deepinwine/tools/kill.sh 容器名
崩溃问题
先确认问题重现步骤,重现概率,应用版本。
腾讯系的应用会自动生成dump文件,可以收集提供给开发分析问题。
dump文件目录
~/.deepinwine/容器名/drive_c/users/$USER/Temp/Tencent/
如果测试能够复现的bug可以在pms上面创建bug记录跟踪
不能启动问题
通过如下命令收集日志
/opt/deepinwine/tools/log.sh 包名
卡死,崩溃和不能启动问题都可以尝试删除容器目录看看是否能够解决问题
rm -rf ~/.deepinwine/容器名
微信启动到二维码界面之后闪退
日志显示如下内容:
问题原因是显卡驱动版本不兼容导致。简单的解决方案:
(有遇到删除此库文件后桌面环境异常,桌面点击启动文件无效应,无法启动终端等操作,后来通过恢复此库文件还原到删除之前的状态,请留意)
sudo rm /usr/lib/i386-linux-gnu/libGL.so.1
所有wine应用都不能启动
重现条件: 更新 mesa-vulkan-drivers:amd64
解决方案:
sudo apt install mesa-vulkan-drivers:i386
系统更新libvulkan1,这个需要系统组更新仓库的包。
应用图标显示不正常
安装应用之后桌面,启动器,或者任务栏中图标显示齿轮。
如果注销之后能显示正常,需要找统信技术人员处理。
如果注销之后还是显示不正常,确认打包应用图标是否正确。
托盘图标不显示
应用使用过程中托盘图标消失,执行如下命令重启dock
pkill dde-dock
微信不能输入中文
退出微信重启