资讯详情

资讯详情

Ubuntu/Debian安装deepin-wine移植版:微信QQ配置与常见问题排查

简介面向在 Ubuntu/Debian 上运行 Windows 应用的人群这份资源提供 Deepin-Wine 环境的完整移植方案。它聚焦于解决 Deepin-Wine 在非 Deepin 发行版中的依赖与集成问题以二进制文件、依赖库和脚本形式让用户无须重复编译即可获得更稳定、更兼容的 Wine 运行体验。压缩包共 2000 个文件、约 73.15MB包含 694 个 h 头文件、663 个 dll 和 365 个 so 动态库、88 个 exe 可执行程序以及字体、驱动、解码器与 deb 安装包等构成一套可直接部署和调用的 Wine 运行体系。移植框架覆盖安装、wineprefix 配置、Windows 程序运行与管理等环节并附带常见依赖缺失、兼容性问题的处理思路适合有一定 Linux 基础、希望在本机运行 Windows 软件的用户。已有 677 人学习下载对需要快速落地 Deepin-Wine 环境、减少逐个解决依赖成本的开发者有直接参考价值。1. Deepin-wine 的 Ubuntu/Debian 移植版是什么先回答值不值想在 Ubuntu 或 Debian 上把微信、QQ、钉钉这类国产桌面软件用起来官方 Wine 的默认配置基本跑不动但你也不该为了一个聊天软件去装 Windows 虚拟机。Deepin-wine 环境的 Ubuntu/Debian 移植版本质上是把 Deepin 发行版里那套调教好的 Wine 分支、应用容器和启动脚本搬到你自己的 Debian 系系统上用 dpkg 就能装完不用面对一个黑匣子去手改注册表。这篇文章写给两类人一类是不想长期维护虚拟机的日常用户装一遍、排几个常见坑半小时内能登录微信另一类是想搞清容器结构、以后自己打包其他 Windows 小工具的开发者。2. 移植版是怎么拼出来的wine 分支、容器和 deb 脚本网上很多搜索 Ubuntu 安装微信、Debian 安装 Wine 的教程给的方案看起来一样实际完全是两条路。搞清楚 deepin-wine 移植版的组成你才能在出问题的时候知道该改哪个层而不是一头扎进 Wine 的全局配置里越调越乱。2.1 官方 wine 为什么跑不动不是版本新旧问题官方 Wine 跑国产 IM 软件的核心难点不在运行库缺多少而在这些软件自己的更新节奏。不少人习惯用最新版 Wine 装微信安装过程零报错登录界面也能渲染出来扫完码就闪退。看日志会发现是 wininet 和 ws2_32 这一层的适配问题——新版 Wine 对网络栈的抽象越来越激进微信却还在按老接口读写 socket。这个矛盾不是多装几个 vcrun、riched20 就能翻过去的。另一个难点是容器污染。Wine 默认的 prefix 从零开始微信运行时需要一套完整的 DLL 覆盖环境缺一点就会在某个深层调用里静默崩溃。常规做法是 winetricks 一个个补一次两次能救但软件一升级依赖又变。真正让官方 wine 方案失去性价比的是这种维护是持续性的不是装完即止。Deepin-wine 的思路是绕过这一切Deepin 团队在自家系统上固定了一个 Wine 分支针对微信、QQ 分别调好容器和 DLL 覆盖打进 deb 包。移植版要做的事情就是让这套配置在 Ubuntu/Debian 上重新可用。2.2 移植版包里到底装了什么第一次 dpkg -i 装完后进入 /opt/deepinwine/apps 目录你会看到每个应用一个独立目录里面有一套内嵌的 deepin-wine 二进制、启动脚本和应用配置。内嵌 wine 是移植版和系统 wine 的核心区别它独立于 /usr/bin/wine启动脚本里写死了路径你系统里后来再装什么 wine 版本都不会串台。以微信为例典型的目录结构长这样我用tree和ls看一眼就能理解层次/opt/deepinwine/apps/Deepin-WeChat/ ├── run.sh ├── config.info ├── fonts/ # 移植版自带的字体修正 ├── deepin-wine/ # 内嵌的 wine 可执行文件 │ ├── bin/wine │ └── lib/ # 自带依赖的库 └── drive_c/ # 首次运行生成的容器目录run.sh 是整个移植版的心脏。它会先设置 WINEDEBUG-all 把日志噪音压掉再把 LD_LIBRARY_PATH 指到内嵌的 lib 目录最后用绝对路径调用 wine。config.info 里写的是这个应用对应的容器路径和启动参数比如微信的WINEPREFIX通常指向~/.deepinwine/Deepin-WeChatQQ 就是~/.deepinwine/Deepin-QQ。启动脚本不会去读系统的 Wine 配置所以从你第一次运行开始这个容器就是独立且自洽的。这个设计带来的一个实用结论排查问题时要改的是/opt/deepinwine/apps/应用名/下面的东西而不是去~/.wine里瞎折腾。很多人移植版跑不起来恰恰是因为他以为自己用的还是官方 Wine改了半天全局配置。2.3 移植版为啥不是唯一方案三条路对比同样是“在 Linux 上用微信”从业者手里其实有三条路我把它们的差异整理成一张表方案上手成本与宿主机的依赖隔离长线维护官方 Wine winetricks中需要先学容器和覆盖差系统 DLL 和 wine 库互相影响软件一升级就可能翻车deepin-wine 移植版 deb低dpkg 装完即用中依赖 deepin 源但应用容器隔离run.sh 固定了环境升级看移植包更新容器里跑 deepin-wine较高要处理 X11 转发最强宿主系统完全干净要维护镜像和挂载图形输入法都是麻烦事我一般优先推荐移植版 deb不是因为它技术最先进而是它的维护成本最低。Docker 方案适合服务器场景或者你实在不想让系统里多一个外部源头日常桌面使用移植版的图形性能和输入法桥接都更自然。记住一点搜 Debian 安装 Wine 出来的大量教程实际给你的是第一条路而 deepin-wine 移植版是第三条路只做了一半——把 deb 包拿过来剩下的事情它都替你干好了。3. 在 Ubuntu/Debian 上安装移植版从加源到首跑安装过程看着就是几条命令但顺序和源的选择决定后面是半小时收工还是一下午排错。这里按 Ubuntu 24.04 和 Debian 12 的常见做法走一遍每一步都说明为什么这样做。3.1 加 deepin 仓库之前先想清楚版本策略Debian 12 和 Ubuntu 24.04 在包管理上的差异主要在于 apt 对第三方仓库的密钥策略。Ubuntu 22.04 以后建议把仓库公钥 dearmor 成单独的 keyringDebian 12 则已经弃用apt-key。另一个更要命的坑是Deepin 仓库本质上是滚动发行版的源直接把整个源加进sources.list再跑apt upgrade它会把系统的 libpng、freetype 甚至 systemd 拉成 Deepin 的版本轻则显卡驱动重装重则启动器起不来。所以我的做法是限制架构并用 APT pinning 把它的优先级压到最低。# 1. 拿 deepin 仓库的公钥并 dearmor 成独立 keyring wget -qO- https://mirror.example.com/deepin/KEY.gpg \ | sudo gpg --dearmor -o /usr/share/keyrings/deepin-keyring.gpg # 2. 写入源用 [archamd64] 防止把 i386 的滚动包也拉进来 echo deb [archamd64 signed-by/usr/share/keyrings/deepin-keyring.gpg] \ https://mirror.example.com/deepin/ stable main universe \ | sudo tee /etc/apt/sources.list.d/deepin-wine.list # 3. 用 pinning 让 deepin 源只提供安装不参与默认升级 cat EOF | sudo tee /etc/apt/preferences.d/deepin Package: * Pin: origin mirror.example.com Pin-Priority: 100 EOF这里mirror.example.com要替换成你实际使用的镜像站地址我只写结构不写死因为不同时期社区维护源的域名会换。关键逻辑在第 3 步APT 的默认优先级是 500deepin 源被压到 100意味着只有你显式指定要装 deepin-wine 相关包时它才会生效系统 upgrade 不会去吃它的依赖。这个策略是移植版在 Ubuntu/Debian 上不把系统搞坏的前提。3.2 安装基础依赖不装这个启动器点了没反应deepin-wine 不是一个孤立的 wine 二进制它依赖两个辅助包一个是 32 位兼容层因为微信、QQ 的容器基本都是 win32另一个是 deepin-wine-helper负责桌面环境和 wine 之间的 D-Bus、X11 桥接。直接装应用包会报依赖缺失所以要先装基础层sudo apt update apt-cache search deepin | grep -i wine # 先看当前源里实际提供哪些包名 sudo apt install -f sudo apt install deepin-wine-helper deepin-wine32apt-cache search这一步不是走过场。不同移植版打包者的包名不一样有的叫deepin-wine有的叫deepin-wine-runtime直接按记忆敲包名容易得到“无法定位软件包”。先搜一遍以输出为准。apt install -f放在前面是先把上一次装坏的依赖修复掉防止新安装被历史包袱卡住。如果基础包来源和你的系统版本有冲突安装时会看到类似“无法满足依赖关系”的提示这时候不要apt -f install硬上先回到 3.1 检查 pinning 有没有生效。基础依赖装好之后/opt/deepinwine目录会建立起来但还看不到任何应用。3.3 安装应用包dpkg 装别用 apt 直接装 deb应用包的安装方式是有讲究的。sudo apt install ./deepin-wine-wechat_xxx_all.deb看起来很省事但 apt 会把 deepin 源里所有满足依赖的包自动当作候选顺手给你升级一堆不该升级的东西。正确做法是用 dpkg 先装再让 apt 只修补缺失依赖wget https://mirror.example.com/deepin/pool/main/d/deepin-wine-wechat/deepin-wine-wechat_xxx_all.deb sudo dpkg -i deepin-wine-wechat_xxx_all.deb sudo apt -f installdpkg -i 只做本地包安装不解析外部源的升级候选。它会先告诉我们这个应用包还缺哪些运行时然后apt -f install才从源里补齐。这两个步骤分开的意思就是dpkg 负责安装本体apt 只做依赖修补不负责大扫除。应用包装完后桌面上会出现启动图标。先别急着双击直接在终端里敲一次应用名看输出能不能对上deepin-wine-wechat能弹出窗口说明安装路径正确。如果提示找不到命令再用绝对路径跑/opt/deepinwine/apps/Deepin-WeChat/run.sh。这一步同时确认了 3.1 里的 pinning 没把源搞乱。3.4 首次启动看日志而不是等窗口首次启动会在你的家目录下生成~/.deepinwine目录和对应的容器这个过程通常要几十秒。很多人以为卡死了其实是容器初始化在跑。最稳妥的做法是启动前就挂上日志tail -f ~/.deepinwine/Deepin-WeChat/logs/*.log注意这个路径里的Deepin-WeChat要和/opt/deepinwine/apps/下的目录名严格一致大小写错了就找不到日志。启动失败时别盯着图形界面猜用调试模式重新拉起一次WINEDEBUGload /opt/deepinwine/apps/Deepin-WeChat/run.sh 21 | tail -100load会输出 wine 加载每个 dll 的完整轨迹能直接看到是哪一步加载失败。也许输出很长但定位问题只看最后 100 行里的err:标记。如果看到err:module开头的日志说明缺的是 wine 内部的模块映射如果是fixme:wininet之类反而是正常的兼容提示不用管。4. 装完必须调的 4 组参数输入法、字体、前缀与 DPI真正让一个移植版从“能启动”变成“好用”的是装完之后的这四组参数。很多 Ubuntu 中文输入法怎么设置、Debian 输入法切换中文的问题在 deepin-wine 环境里解法完全不同于桌面原生应用。4.1 WINEPREFIX 与 WINEARCH手动调试时别依赖 run.shrun.sh 启动时会把 WINEPREFIX 指向它自己的容器路径但你在终端里手动敲 wine 命令的时候这个环境变量不会自动带上。最常见的翻车是想用 winecfg 调配置结果打开了~/.wine那个默认空容器调了半天对微信毫无影响。export WINEARCHwin32 export WINEPREFIX$HOME/.deepinwine/Deepin-WeChat /opt/deepinwine/apps/Deepin-WeChat/deepin-wine/wine --version这条命令的关键在于前后两个路径要属于同一个应用。WINEARCHwin32是因为这些 IM 的容器都是 32 位你设成 win64 会在后续加载 DLL 时遇到一堆莫名的错误。wine --version输出的不是系统 wine 的版本而是内嵌分支的版本看到它正常输出说明环境变量设置成功后续 winecfg、regedit 才会作用到正确的容器上。我一般会在.bashrc里为常用应用写两行别名避免每次手动 export。4.2 中文乱码的字体修复别被界面方块吓住deepin-wine 容器内的 Windows 字体目录是空的Wine 会自行回退到系统字体。如果你的 Linux 系统里没有中文字体微信界面会显示一半方块。修复办法是把容器内字体回退指向 Noto Sans CJKmkdir -p $WINEPREFIX/drive_c/windows/Fonts cp /usr/share/fonts/truetype/noto/NotoSansCJK-Regular.ttc \ $WINEPREFIX/drive_c/windows/Fonts/simsun.ttc cp /usr/share/fonts/truetype/noto/NotoSansCJK-Regular.ttc \ $WINEPREFIX/drive_c/windows/Fonts/msyh.ttc wineserver -k deepin-wine-wechat复制成simsun.ttc和msyh.ttc的原因是微信内部按名称查找宋体和微软雅黑找不到就按字母表顺序随便选一个结果往往很难看。复制完成后用wineserver -k杀掉所有 wine 进程再重启应用。字体这块最玄学同一个操作在不同 wine 版本上表现可能完全不同如果复制后仍然乱码检查宿主机的字体文件路径是否存在再确认 you copied the file 而不是 symlink——symlink 在 wine 容器内经常识别不了。4.3 输入法fcitx 的兼容性明显优于 ibusUbuntu 默认的 ibus 在桌面原生应用里没问题到了 wine 容器里就容易失灵光标是能定位的就是按不出中文。原因是 wine 的 XIM 实现和 ibus 的桥接兼容性一直不稳定而 fcitx 对 XIM 的支持更新得勤。与其在 ibus 的坑里挣扎不如直接换 fcitx。export GTK_IM_MODULEfcitx export QT_IM_MODULEfcitx export XMODIFIERSimfcitx fcitx deepin-wine-wechat三个变量的分工GTK_IM_MODULE管 GTK 界面QT_IM_MODULE管 QQ 这种用 Qt 界面的应用XMODIFIERS管 XIM 客户端能不能连上输入法服务。im这个前缀不能省略少了它 fcitx 会收不到 wine 的输入请求。设置完成后先看到输入法状态栏再启动应用启动顺序反了的话有的 wine 版本就不会自动连接 XIM 通道。4.4 高分屏 DPI字小到看不清的处理deepin-wine 自带的 wine 版本可能不带图形化的 winecfg或者 winecfg 的缩放设置对容器无效。直接用注册表写 DPI 更可靠。不同缩放比例对应的注册表值如下屏幕场景注册表项LogPixels 值1080p / 默认HKCU\Software\Wine\Fonts96 (0x60)2K 屏 125%HKCU\Software\Wine\Fonts120 (0x78)4K 屏 150%HKCU\Software\Wine\Fonts144 (0x90)写入命令export WINEPREFIX$HOME/.deepinwine/Deepin-WeChat /opt/deepinwine/apps/Deepin-WeChat/deepin-wine/wine \ reg add HKCU\\Software\\Wine\\Fonts /v LogPixels /t REG_DWORD /d 120 /f这个 120 对应 125% 缩放不是所有显示器都需要。写完之后重启应用界面字体应该明显变大。如果你用的是 2K 屏发现字体变大但界面仍然发虚再看一眼 4.1 里的 WINEARCH确认它是 win32——win64 容器在 DPI 计算上会有额外的偏差。5. 常见问题排查移植版翻车现场与对应解法这一节整理的是后台常重复出现的问题每一条都按“现象 → 原因 → 解决”的顺序写。你照着做能少走我当初踩过的弯路。5.1 现象apt update 提示公钥不可用加完 deepin 源后执行apt update输出里出现The following signatures couldnt be verified because the public key is not available: NO_PUBKEY ...整个源被跳过。原因是 deepin 仓库使用了独立的 GPG 公钥而系统没有通过 apt 的信任校验。不少教程让你用apt-key adv --keyserver去拉但 Ubuntu 22.04 和 Debian 12 都对apt-key做了废弃处理直接把 key 导入/etc/apt/trusted.gpg.d/反而更干净。解决回到 3.1 的命令把镜像站首页提供的 KEY 文件完整下载并 dearmor 到独立 keyring再执行一次apt update。如果镜像站不单独提供 KEY 文件看仓库根目录有没有InRelease有的话直接在/etc/apt/sources.list.d/里的源行末尾加上[signed-by/usr/share/keyrings/deepin-keyring.gpg]。5.2 现象应用图标点击无响应终端无任何输出桌面图标双击后进程存在但没有窗口终端里直接跑 run.sh也只在wine: cannot find LC:\\windows\\...。原因是启动脚本依赖的辅助组件没装全。deepin-wine 的 run.sh 会先调用 helper 完成 D-Bus 和 X11 初始化helper 缺了wine 启动后不知道该往哪个 X display 上报窗口。解决先确认deepin-wine-helper是否已安装再检查/opt/deepinwine/apps/应用/run.sh是否有执行权限。用chmod x补一次然后在桌面图标上选择“允许启动”而非双击——如果图标是 .desktop 文件检查 Exec 行开头用的是绝对路径而不是相对路径。5.3 现象微信头像和图片全部变成黑块登录成功了聊天记录能加载但所有头像和图片的位置是纯黑色方块。原因是 wine 对桌面 GL 渲染的兼容问题微信内部用了老式的 2D 加速接口而这些接口在内嵌 wine 分支里默认开启的 GLSL 模式下无法正确输出。解决在启动 run.sh 前加上环境变量LIBGL_ALWAYS_SOFTWARE1强制 wine 的图形栈走软件渲染。这个变量放在~/.bashrc里会影响所有图形程序最好只写在应用启动脚本里。如果你用 N 卡配合__GL_MaxFramesAllowed1能进一步减少花屏。黑块问题属于图形栈的玄学同一个变量在 A 卡和 N 卡上效果可能完全相反改完重启应用验证一次。5.4 现象装过系统版 wine 后deepin 应用被“带崩”系统里装过apt install wine或者自己编译过新版 wine之后再启动 deepin-wine 的微信提示找不到 prefix 或直接加载系统 wine 的 dll。原因是 PATH 环境变量里系统 wine 的路径在内嵌 wine 之前run.sh 里写的绝对路径虽然固定但有些 helper 脚本会用wine这个裸命令去拿版本信息。解决检查启动脚本和 helper 的路径设置在/opt/deepinwine/apps/应用/run.sh的开头加上一行unset WINE把来自系统的WINE环境变量清掉。还有一个习惯值得养成不要安装系统版 winedeepin-wine 移植版的环境完全独立两个 wine 混用的复杂度远大于收益。5.5 现象Ubuntu 24.04 上微信登录几秒闪退Debian 11 上跑得好好的移植版换到 Ubuntu 24.04 上登录后几秒就消失没有报错弹窗。原因是新版 glibc 和旧版 deepin-wine 容器之间的兼容性边界。微信容器内部的 Windows 版本和 wine 环境是在旧 glibc 时代调的Ubuntu 24.04 的 glibc 2.39 把一些旧的兼容符号移除导致运行时的异常退出。解决不要尝试回滚系统的 glibc那会把整个系统搞坏正确做法是换用针对新系统重新打包的移植版应用包社区通常会在新发行版发布后跟进。如果暂时没有新版先降级到 4.2 的字体步骤确认不是字体问题再用WINEDEBUGerrall跑一次并保留完整日志给打包者提交。闪退案例 90% 的答案都在日志里只是很多用户没看就重装了系统。6. 进阶技巧用一个干净容器验证移植版是否健康装好之后最难判断的是“这个移植版到底正不正常”。我的习惯是做一次容器体检把环境变量、内嵌 wine 版本和注册表状态都查一遍用最短路径确认问题出在哪个层。export WINEARCHwin32 export WINEPREFIX$HOME/.deepinwine/Deepin-WeChat # 1. 确认内嵌 wine 可执行且版本正确 /opt/deepinwine/apps/Deepin-WeChat/deepin-wine/wine --version # 2. 重新初始化容器关键目录 /opt/deepinwine/apps/Deepin-WeChat/deepin-wine/wineboot -u # 3. 验证注册表能被读写 /opt/deepinwine/apps/Deepin-WeChat/deepin-wine/wine reg query \ HKCU\\Software\\Wine /v Versionwineboot -u是wineboot --update的缩写它不会毁掉现有容器只重写 wine 需要的基础配置相当于给容器做了一次修复。做完三步再启动应用如果还是崩基本可以确定问题不在容器而在应用包本身。另一个我觉得真正值钱的习惯是保存后悔药。装应用包的时候顺手把 deb 备份到本地cd ~/Downloads apt download deepin-wine-wechat apt-mark hold deepin-wine-wechatapt download只拉包不安装做备份非常合适。apt-mark hold把这个包钉在当前版本防止apt upgrade时被更新到与系统不兼容的版本。等 Deepin 官方发新版测试稳定后再用apt-mark unhold放行一次。我踩过一次最狠的坑就是把整个 deepin 源交给系统升级结果 systemd 被滚坏开机只能进恢复模式。从那以后我的原则是deepin-wine 移植版只能作为应用包来源绝不允许它主导系统依赖的升级。这套方案值不值得长期投入看你的场景。桌面主力机用 Ubuntu/Debian 且离不开微信移植版是成本最低的选择如果你只需要偶尔用一次保留下载的 deb 文件装完用完删掉容器系统完全不受影响。希望帮到你。本文还有配套的精品资源点击获取
觉得有用,分享给同行:

为您的企业打造数字门面

稳重轻奢商务风格,端正雅致视觉,长效耐看不易过时。

立即咨询 →