很多 Linux 用户切换系统后,第一个卡住的往往不是命令行,而是桌面上那几款 Windows 软件。我折腾过虚拟机、原生 Wine、CrossOver 一圈之后,最终长期稳定使用的方案就是 deepin-wine10 配合开源镜像站安装。这套组合的优势很直接:下载速度快、依赖相对完整、针对国内常用应用适配度高。这篇文章把完整流程和踩坑点都摊开讲,适合 Deepin、UOS、Ubuntu、Debian 的用户参考,尤其是想用微信、QQ、钉钉这类应用但不想开虚拟机的人。文章不光给命令,也会解释每一步为什么这么做,方便你在遇到版本差异时自己判断调整。
1. Windows 应用在 Linux 上运行:为什么 deepin-wine10 是一个成熟选择
1.1 三条路线逐个对比
在 Linux 上运行 Windows 应用,第一反应通常是虚拟机。VMware 或 VirtualBox 装一个完整的 Windows,这是最"笨"但最稳定的做法,问题是资源开销大,共享目录设置麻烦,U 盘、打印机这类外设经常需要额外配置,每次启动还要等虚拟机系统完全起来。为了跑一个微信专门开着几 GB 内存的虚拟机,显然不划算。
第二条路线是原版 Wine。Wine 本质上是一个 Windows API 的兼容实现,把 Windows 程序调用的 API 翻译成 Linux 系统调用。原版 Wine 不是不能用,而是每个应用都要单独调试:装了微信可能缺 dll,装了 QQ 可能文字乱码,还可能因为改前缀配置弄乱整个环境。对新手来说,很容易在配置阶段就放弃。
第三条就是 deepin-wine10。它不是一个孤立的 Wine 版本,而是 Deepin 团队基于 Wine 维护的一整套增强分支及配套工具。相比原版 Wine,它做了几件更讨巧的事:用容器隔离每个应用,软件安装和运行都限定在独立前缀里;内置了一堆针对微信、QQ、迅雷、钉钉的适配脚本;把字体、输入法、DPI、声音这些常出问题的地方做了默认处理。很多场景下你只需要一个 exe 安装包,剩下的交给这套工具链。
1.2 deepin-wine10 的容器化优势
deepin-wine10 最核心的设计是"容器化"。每个 Windows 应用都有一个独立的环境目录,默认在用户主目录的 .deepinwine/ 下,比如微信对应 ~/.deepinwine/WeChat,QQ 对应 ~/.deepinwine/QQ。容器里保存了这个应用专属的注册表、程序文件、DLL 覆盖和字体配置。
这种设计第一个好处是互不干扰。微信改了什么注册表项或者装了一个补丁,不会影响到 QQ;你卸载一个应用,只要把对应容器目录删掉,不会留下乱七八糟的残留。第二个好处是可复制,我把 ~/.deepinwine/WeChat 目录打包拷到另一台机器,解压后微信登录状态、聊天记录都在。第三个好处是风险可控,容器内的 Windows 环境哪怕坏了,删掉重新初始化就行,不碰 Linux 系统本身的库。
另外,deepin-wine10 并不是单一一个包,安装时会带上一整套组件:deepin-wine-helper 负责容器管理和环境变量注入,deepin-wine-uninstaller 负责卸载逻辑,deepin-fonts-wine 提供 Windows 字体兼容。这些配套脚本才是真正决定"开箱即用"体验的部分。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 动手前环境检查:发行版、架构与镜像站选择
2.1 系统类型、CPU 架构与 i386 多架构支持
在下载任何包之前,先确认你的系统是 Debian 系还是别的。deepin-wine10 的包格式是 .deb,天然服务于 Deepin、UOS、Ubuntu、Debian 这类系统。如果你是 Arch/Manjaro,也可以找 AUR 里的对应方案,但不在本文讨论范围内。
确认方式很简单:
bash复制cat /etc/os-release
uname -m
dpkg --print-architecture
uname -m 输出 x86_64,dpkg --print-architecture 输出 amd64,这是最常见的桌面环境。deepin-wine10 组件里包含 32 位库,所以还需要让包管理器支持 i386 架构:
bash复制sudo dpkg --add-architecture i386
sudo apt update
dpkg --add-architecture i386 的作用是告诉 apt,除了安装 amd64 包,也允许安装 i386 包。Wine 运行不少 32 位 Windows 程序时,依赖的很多最小运行库只有 i386 版本。如果不执行这一步,安装依赖时会频繁报"缺依赖",而且报错信息里会指名道姓地出现大量 :i386 后缀的包。
2.2 为什么优先使用镜像站而不是软件源直连
deepin-wine10 的官方软件仓库在海外,国内直接拉包经常卡在几十 KB/s,一个几百 MB 的依赖集装一下午是常有的事。开源镜像站的作用就是把这些包同步到国内服务器,清华、阿里云、中科大都有自己的 deepin 镜像目录。这里的"安装与配置"不只体现在配源,还体现在后面手动下载 deb 包时,镜像站能保证下载速度和完整性校验。
选择镜像站有几个实用标准:同步频率高、带宽稳定、和你所在网络运营商互联好。我长期用的是清华开源软件镜像站(mirrors.tuna.tsinghua.edu.cn)和阿里云镜像站(mirrors.aliyun.com),实测几十 MB 的包都是秒级下载。如果你在公司或教育网,中科大镜像(mirrors.ustc.edu.cn)也是不错的选择。
使用镜像站时不建议只改一个源就完事,因为 deepin 仓库和 Ubuntu/Debian 仓库是两套独立体系。下一步我会讲两种安装方式,一种适合深度系系统,一种适合 Ubuntu/Debian 系系统,实际用下来后者容错率更高。
3. 安装 deepin-wine10 的两种方式与依赖处理
3.1 方式一:通过 apt 直接使用 deepin 镜像仓库(适合 Deepin/UOS)
如果你当前系统就是 Deepin 或 UOS,最简单的方式是把系统软件源切到清华镜像,然后用 apt 安装。先在 /etc/apt/sources.list 文件末尾追加 deepin 仓库:
bash复制sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
echo "deb [trusted=yes] https://mirrors.tuna.tsinghua.edu.cn/deepin/ apricot main non-free contrib" | sudo tee -a /etc/apt/sources.list
注意我写了 [trusted=yes],因为镜像站没有与系统预装的 keyring 完全匹配的签名标记,加上后 apt 不会因为缺少仓库密钥就拒绝拉取。
然后安装 deepin-keyring,否则可能出现密钥验证问题:
bash复制wget https://mirrors.tuna.tsinghua.edu.cn/deepin/pool/main/d/deepin-keyring/deepin-keyring_2020.12.05_amd64.deb
sudo dpkg -i deepin-keyring_2020.12.05_amd64.deb
文件版本号以镜像站目录里实际文件为准,建议先打开 deepin-keyring/ 目录看一眼再复制链接。
接下来要让 apt 只从 deepin 源安装我们想要的几个包,而不是把所有系统组件都升级成 deepin 版本。写一个 apt 偏好配置:
bash复制sudo tee /etc/apt/preferences.d/deepin-wine > /dev/null <<'EOF'
Package: *
Pin: release o=Deepin
Pin-Priority: 100
Package: deepin-wine10 deepin-wine-helper deepin-wine-uninstaller deepin-fonts-wine
Pin: release o=Deepin
Pin-Priority: 1001
EOF
这段配置的含义很关键:第一个 Pin 把所有 deepin 仓库的包优先级压到 100,低于 Ubuntu/Debian 官方源的默认优先级 500,所以日常更新不会被 deepin 包带偏;第二个 Pin 单独把 deepin-wine 这几个包提到 1001,允许 apt 主动安装它们。之后执行:
bash复制sudo apt update
sudo apt install deepin-wine10 deepin-wine-helper deepin-wine-uninstaller deepin-fonts-wine
如果提示缺少个别依赖,根据报错补充安装即可。这种方式的好处是以后 deepin 官方发布 Wine 补丁时,apt upgrade 能直接把 deepin-wine10 一起升上去,维护成本低。
3.2 方式二:从镜像站拉取 deb 包手动安装(适合 Ubuntu/Debian)
在 Ubuntu 或 Debian 桌面上,直接把 deepin 仓库加进 apt 源有一定风险:deepin 的很多底层库版本比 Ubuntu 仓库新,一旦被系统整体采纳,常见的连锁反应包括 C++ 运行时库不匹配、桌面环境组件崩掉、打印服务起不来。所以我的建议是:不要加源,直接手动下载 deb 包。
镜像站的 pool 目录保留了所有历史版本的 deb 包。在清华镜像站里,deepin 仓库的软件包统一放在 deepin/pool/main/ 下,按包名首字母分子目录。需要关注的关键包在这几个目录:
deepin-wine/deepin-wine10_*_amd64.debdeepin-wine-helper/deepin-wine-helper_*_amd64.debdeepin-wine-uninstaller/deepin-wine-uninstaller_*_amd64.debdeepin-fonts-wine/deepin-fonts-wine_*_all.debdeepin-keyring/deepin-keyring_*_amd64.deb
手动下载可以用 wget。以清华镜像站为例,先建工作目录,然后逐个下载:
bash复制mkdir -p ~/Downloads/deepin-wine && cd ~/Downloads/deepin-wine
wget https://mirrors.tuna.tsinghua.edu.cn/deepin/pool/main/d/deepin-wine/deepin-wine10_1.0-1_amd64.deb
wget https://mirrors.tuna.tsinghua.edu.cn/deepin/pool/main/d/deepin-wine-helper/deepin-wine-helper_1.1_amd64.deb
wget https://mirrors.tuna.tsinghua.edu.cn/deepin/pool/main/d/deepin-wine-uninstaller/deepin-wine-uninstaller_0.1_amd64.deb
wget https://mirrors.tuna.tsinghua.edu.cn/deepin/pool/main/d/deepin-fonts-wine/deepin-fonts-wine_2.11-1_all.deb
wget https://mirrors.tuna.tsinghua.edu.cn/deepin/pool/main/d/deepin-keyring/deepin-keyring_2020.12.05_amd64.deb
由于镜像站同步后具体文件名会随上游更新,如果 404 就进对应目录看实际文件名,选择日期最近、版本号最高的一个即可。下载后统一安装:
bash复制sudo dpkg -i deepin-keyring*.deb
sudo dpkg -i deepin-wine10*.deb deepin-wine-helper*.deb deepin-wine-uninstaller*.deb deepin-fonts-wine*.deb
这种手动方式第一次运行 dpkg 几乎必然报依赖错误,原因是官方包假设你系统里已经有若干基础库。报错后不要慌张,执行依赖修复:
bash复制sudo apt -f install -y
apt 会分析出缺失的依赖,常见的有 libjpeg62-turbo:i386、libasound2-plugins:i386、libgl1-mesa-dri:i386 等,它会自动从 Ubuntu 官方镜像把这些 i386 依赖拉下来。原则是:报缺少什么就让 apt -f install 补什么,不要手动替换 Ubuntu 的核心库。
3.3 两种方式的适用场景对比
我把两条路线的取舍整理一下,方便按自己的系统情况选择。这几个维度刚好是决策点:
| 对比项 | apt 仓库方式 | 手动 deb 方式 |
|---|---|---|
| 适用系统 | Deepin/UOS,或能接受加源的爱好者 | Ubuntu/Debian,注重系统干净 |
| 依赖自动处理 | 自动 | 半自动,需要 dpkg + apt -f install |
| 后续升级 | apt upgrade 跟随镜像站 | 手动重新下载新版 deb |
| 风险点 | 需要 pin 策略保护系统库 | 依赖冲突需要自行排查 |
| 上手难度 | 低 | 中 |
我个人的实测感受是:在 Ubuntu 上不要贪图 apt 方式方便,手动 deb 虽然多几个步骤,但不会出现系统被 deepin 库"带跑"的情况,后续出问题更容易定位。而在 Deepin 原生系统上,方式一就是最优解,毕竟系统本身就把 deepin 仓库当作第一依赖源。
这里还要补一个概念:deepin-wine10 安装后,会有一个 /opt/deepinwine/tools/ 目录,里面放着 deepin-wine、deepin-wine-run、run.sh 这些脚本。确认安装成功可以执行:
bash复制/opt/deepinwine/tools/deepin-wine --version
能正常输出版本号,说明核心组件已就位。
4. 用 deepin-wine10 安装并运行微信:从 exe 到桌面快捷方式
4.1 准备安装包并初始化 Wine 容器
安装好 deepin-wine10 后,最典型的应用场景就是安装 Windows 版微信。先到微信官网下载 Windows 安装包,保存为 ~/winapps/WeChatSetup.exe。
启动安装前,先明确一个概念:WINEPREFIX 环境变量决定 Windows 应用安装在哪个容器目录。如果不设置,deepin-wine 会默认使用 ~/.deepinwine/ 下的公共前缀,多个应用混在一起容易出问题。强烈建议每个应用指定独立前缀。
bash复制export WINEPREFIX="$HOME/.deepinwine/WeChat"
/opt/deepinwine/tools/deepin-wine "$HOME/winapps/WeChatSetup.exe"
第一次运行会看到终端窗口里刷出一长串输出,容器自动初始化,创建注册表、安装系统字体、配置 Wine 的 c:\drive_c 目录等。这个过程的时间取决于机器性能和磁盘速度,通常 1-3 分钟。期间看起来像"卡死"或"没有反应",实际上是在做初始化,千万不能 Ctrl+C 强杀。
初始化完成后,微信安装程序的窗口会正常弹出来。接下来跟 Windows 上安装没啥区别,一路下一步。需要注意安装路径建议保持默认,因为 deepin-wine 的启动脚本默认按照 C:\Program Files\Tencent\WeChat\WeChat.exe 这类路径去找程序。如果你手动改了安装位置,后面启动脚本的路径也要跟着改。
安装完成后验证一下容器目录:
bash复制ls ~/.deepinwine/WeChat/drive_c/Program\ Files/Tencent/WeChat/
看到 WeChat.exe 就说明安装成功。
4.2 配置启动脚本与桌面快捷方式
deepin-wine10 安装应用后并不会无脑生成 Linux 桌面图标,需要自己手动配置。先写一个启动脚本,放在 ~/scripts/wechat.sh:
bash复制#!/bin/bash
export WINEPREFIX="$HOME/.deepinwine/WeChat"
export PATH="/opt/deepinwine/tools:$PATH"
export LD_LIBRARY_PATH="/opt/deepinwine/lib:$LD_LIBRARY_PATH"
exec deepin-wine "$HOME/.deepinwine/WeChat/drive_c/Program Files/Tencent/WeChat/WeChat.exe" "$@"
给执行权限:
bash复制chmod +x ~/scripts/wechat.sh
然后创建桌面快捷方式文件 ~/.local/share/applications/wechat.desktop:
ini复制[Desktop Entry]
Name=WeChat
Comment=WeChat on deepin-wine10
Exec=/home/你的用户名/scripts/wechat.sh %U
Type=Application
Categories=Network;
StartupWMClass=WeChat.exe
Icon=/home/你的用户名/.deepinwine/WeChat/drive_c/Program Files/Tencent/WeChat/WeChat.exe
把 你的用户名 替换成实际用户名,然后在文件管理器里双击这个快捷方式,微信就能从应用菜单或桌面启动了。
4.3 验证容器内应用的更新与卸载
微信升级是一个绕不开的话题。Windows 版微信经常弹升级提示,直接在容器内点升级偶尔会覆盖不全导致微信启动报错。我建议在微信设置里关闭"自动升级",或者当弹出升级框时进入 ~/winapps 目录重新下载新版安装包,用同样的命令再次安装:
bash复制export WINEPREFIX="$HOME/.deepinwine/WeChat"
/opt/deepinwine/tools/deepin-wine "$HOME/winapps/WeChatSetup.exe"
安装程序会检测到容器内已有微信,进入升级模式,自动替换旧文件。这种方式比直接点微信内部的"立即升级"可靠得多。
卸载时,如果只是不想要这个应用了,先运行 deepin-wine-uninstaller:
bash复制/opt/deepinwine/tools/deepin-wine-uninstaller --prefix "$HOME/.deepinwine/WeChat"
如果卸载器不生效,直接删除容器目录也行:
bash复制rm -rf ~/.deepinwine/WeChat
再删掉之前创建的 wechat.sh 和 .desktop 文件即可。这种"删除即卸载"的干净程度,正是容器化方案的优势。
5. 我把安装配置过程中遇到的最大几个坑都摊开说
5.1 字体乱码与中文显示异常
deepin-wine10 官方包虽然带了一些字体,但未必覆盖所有 Windows 应用的字体引用。最典型的表现是:界面按钮上有字,但所有中文全是方块 口口口。这是因为 Wine 容器里找不到对应中文字体,也没有配置字体替换。
我的处理分两步。第一步在系统层面安装开源中文字体,保证容器能引用到:
bash复制sudo apt install fonts-wqy-microhei fonts-noto-cjk
第二步是通过 Wine 注册表把常见的 Windows 字体名映射到系统中文字体。把下面这段存成 font.reg:
code复制REGEDIT4
[HKEY_CURRENT_USER\Software\Wine\Fonts\Replacements]
"Microsoft YaHei"="Noto Sans CJK SC"
"SimSun"="Noto Serif CJK SC"
"SimHei"="Noto Sans CJK SC"
"Segoe UI"="Noto Sans CJK SC"
在容器里导入注册表:
bash复制export WINEPREFIX="$HOME/.deepinwine/WeChat"
wine regedit font.reg
这里执行的是容器内的 wine,也就是 deepin-wine10 自带的那个 Wine。导入后关闭微信重新启动,基本能解决绝大多数乱码问题。
5.2 输入法唤不出的根本原因
deepin-wine10 容器里应用输入中文没反应,或者光标守在输入框前但中文死活不出来,是仅次于乱码的第二大问题。原因在于 Wine 认为自己是普通 Windows 程序,不知道 Linux 桌面用的 fcitx 或 ibus 是什么,所以不向输入法框架注册窗口。
解决办法是在启动脚本中提前声明三个环境变量。如果你用的是 fcitx 或 fcitx5:
bash复制export GTK_IM_MODULE=fcitx
export QT_IM_MODULE=fcitx
export XMODIFIERS="@im=fcitx"
如果你用的是 ibus,就把三个值全部改成 ibus。把这些行加到 wechat.sh 的注释下方、exec deepin-wine 之前,然后重新登录或在桌面环境里重启 fcitx:
bash复制fcitx5 -d
之后再启动微信,光标进输入框,按 Ctrl+Space,中文输入就能正常唤出。这个坑我一开始忽略了环境变量,折腾了很久,其实原理清楚了就很简单:Wine 也需要知道你桌面用的是哪套输入法框架,它才能把按键事件正确转交。
5.3 音频无声、窗口闪烁、DPI 过小
音频无声是另一个高频问题。Wine 默认输出设备可能没对准 PulseAudio 或 PipeWire。先确认系统层音频正常,然后安装 32 位音频插件:
bash复制sudo apt install libasound2-plugins:i386
如果还不行,在容器内运行 winecfg:
bash复制export WINEPREFIX="$HOME/.deepinwine/WeChat"
winecfg
切到"音频"页签,把输出设备从 ALSA 改为 PulseAudio,确定后重启应用。现在的桌面环境一般都用 PipeWire 兼容 PulseAudio,所以选 PulseAudio 后端比较稳。
窗口闪烁或渲染异常,多数发生在虚拟桌面和合成器干预的情况下。winecfg 里找到"显示"或"桌面整合"选项,打开"允许窗口管理器装饰",同时关闭"允许窗口管理器控制窗口"。这两项的具体名称在不同版本里略有差别,思路就是让 Wine 自己接管窗口绘制,避免 GNOME Shell 或 KWin 的合成器跟 Wine 抢绘制权。如果你的场景是希望微信独立成一个虚拟桌面,也可以在 winecfg 的"显示"页签里设置一个 1920x1080 的虚拟桌面分辨率。
DPI 过小主要出现在高分辨率笔记本上。deepin-wine 的脚本对 HIDPI 环境变量有特殊处理,设置成 1 时会把默认缩放调到适合高分屏的比例:
bash复制export HIDPI=1
把这一行也写进 wechat.sh。如果改了之后窗口反而异常的大,改成 HIDPI=2 或直接删掉这行,通过 winecfg 里的 DPI 设置手动微调。
6. 长期使用后我更倾向的一些细节经验
这套方案我用了大半年,最后分享几个命令行文档里不会写的体会。
第一个体会是:不要把 deepin-wine10 当成救世主,它只对适配过的应用体验好。微信、QQ、钉钉、迅雷、百度网盘这类国产常用软件,deepin-wine10 的体验接近原生;但一些偏门软件,特别是依赖特定 Windows 内核特性或复杂驱动的软件,依然可能跑不起来。遇到这种情况不要浪费时间,该用虚拟机就用虚拟机。
第二个体会是:应用差一两个小版本通常不用急着升级,等别人踩过坑再动。deepin-wine10 社区维护者更新适配需要时间,新版本微信刚发布那几天登录崩溃是常有的事。我一般会查看镜像站里 deepin-wine-helper 的版本是否更新,如果没明显变化,旧版本就先用着。
第三个体会是容器备份的价值。微信聊天记录和 QQ 聊天记录都在各自容器目录下,定时打包 ~/.deepinwine/WeChat 目录到移动硬盘,比在 Windows 里翻文件还要直接。恢复时把它放回原位置,然后执行一次 deepin-wine 就能把注册表重新同步。
第四个体会是关于包管理器的洁癖。我在 Ubuntu 上始终没有把 deepin 仓库写进 sources.list,所有 deepin-wine 组件都通过手动 deb 管理。这样升级系统时不会冒出莫名其妙的 deepin 版本冲突。如果你和我一样在意系统干净,推荐坚持这条路。
听说统信 UOS 的 Windows 应用兼容引擎跟 deepin-wine 是一脉相承的,如果你用的系统恰好是 UOS 家庭版,可能连手动步骤都省了,图形界面里点几下就能跑微信。不过那又是另一套工具的玩法了。
如果非要用一句话总结这套流程的核心原则,那就是:用镜像站解决"下载难",用容器解决"隔离难",用 pin 或手动 deb 解决"依赖难"。把这三件事想明白了,deepin-wine10 在你的 Linux 桌面上就能安安稳稳服务很久。
