[Forward Content] Adobe的垃圾代码,耽误了Linux十几年
Tofloor
poster avatar
网络对线操盘手
deepin
2026-03-13 10:05
Author

用Linux的都知道,Linux和Adobe不可兼得的道理。如果Linux有个“软件黑名单”的话,Adobe 如果排第二,恐怕没人敢排第一。sweat

这几年 Linux 桌面环境其实已经很成熟了,代码有 VS Code,剪辑有 DaVinci,游戏有 Proton 兼容层。但在设计领域的绝对标准——Photoshop 面前,Linux 社区依然像个局外人。shamed

a2eda7a8-2666-4149-996a-ed11e777e281.png

为了强行跑通 PS,社区里甚至出现了“邪修”方案。

比如在 Windows 虚拟机里跑,或者最原始的“硬拷贝”,也就是先在 Windows 装好,再把整个目录拖进 Linux。这些方案不仅麻烦,而且极不稳定,但是这也是此前在Linux上跑通PS的唯一的解法。rage

这么多年过去了,大家也都默认拦路虎是这些软件里有某些高深的壁垒,比如复杂的图形加速指令集,或者 Adobe 那套让人头大的 DRM 反盗版机制。

结果戏剧性反转猝不及防地就来了,一位名叫Phialsbasement的开发者在Debug时,偶然发现的原因把所有人都整无语了。

导致 Linux 无法安装 Photoshop 的核心原因,既不是显卡驱动,也不是加密算法,居然是几个连基本语法都没写对的 XML 文件。joy

9921405f-e290-4120-8766-8f3f1bc4e1bd.png

在技术层面的逻辑上简直荒谬得让人想笑:

首先是Adobe 的安装程序里包含了一些格式错误(Malformed)的 XML 数据。在Windows 环境下,因为微软的 msxml3 解析器出了名的“宽容”,所以遇到这种不规范的标签,它通常会尝试纠错或者直接忽略,让程序继续跑。

但在 Linux (Wine) 这边,默认调用的是 libxml2。这是一个严格遵循 RFC 标准的解析库,遇到坏死的 XML 结构,它不会去“猜”开发者的意图,而是直接抛出 Error 并终止进程。confused

这就是为什么点开 Setup.exe 会秒退——仅仅是因为 Linux 的解析器太守规矩了。

6757ee08-f116-45c7-be64-129c9046e661.png

Phialsbasement 没有去死磕图形层,而是耐着性子分析了那堆枯燥的 Backtraces(回溯日志),最终定位到了 XML 解析异常。

既然改不了 Adobe 的闭源二进制文件,那就只能在 Wine 这一侧做 Dirty Hack。

他提交的第一组补丁非常暴力:强制封装。

通过修改解析逻辑,当检测到这些特定的混乱代码块时,强制在外部包裹一层 CDATA 标签。这等于直接告诉 libxml2:“这一段内容别做语法检查,当作纯文本处理。”

这一招直接绕过了语法报错。而第二组补丁,则揭露了更尴尬的现状。doubt

调试中才发现Adobe 的安装程序 UI 居然还在大量依赖 IE9 时代的接口,特别是对 onresize 事件的处理逻辑。

e7dd7dc4-a850-42e4-b643-a30ffa80ad78.png

Wine 现有的 mshtml 实现(基于 Gecko 引擎)太现代了,反倒无法正确响应这种古老的调用方式。

没办法,作者只能修改 Wine 的 COM 对象行为,强制模拟出 IE9 那种古老的事件分发逻辑。为了运行“现代生产力工具”,开源社区不得不去复刻十几年前的浏览器特性。

但效果还是立竿见影的。打上补丁后,Photoshop CC 2021 的官方安装程序直接跑通。作者形容运行体验是 "butter smooth"(丝般顺滑)。

12ede444-236c-4780-b1a4-8a4cdcaff122.png

这里有个值得一提的插曲,就是作者最初将补丁提交给了 Valve 的 Proton 分支,但被拒了joy

理由很充分且大公无私:修复 msxml3 和 mshtml 的解析逻辑,不仅仅是为了让 Steam Deck玩游戏,这是对整个 Windows 软件生态兼容性的修正。Valve 建议直接提交给上游的 WineHQ 主分支,让所有 Linux 发行版都能受益。

027601e8-1851-4078-9eea-2dbce632323f.png

这事儿其实挺讽刺的。

所谓“Windows 兼容性好”,那是因为人家系统底层愿意为商业软件的劣质代码兜底。而开源社区得花费巨大的精力,去逆向、去模拟这些并不规范的“商业逻辑”。

目前这些补丁正在走 WineHQ 的合并流程。如果你是硬核玩家,现在就可以去拉取代码手动编译 Wine 尝鲜。

至于普通用户,相信不用等太久。这一次,终于不需要虚拟机了,也不再需要折腾双系统,我们终于能在Linux上看见那个心心念念的 Photoshop 启动画面了。

但凡Windows严格点,或者Adobe给力点,Linux用户也不至于苦等这么久。applaud


原文转发自微信公众号:极客果核

,这篇文章写的图文并茂,通俗易懂,原文链接:https://mp.weixin.qq.com/s/gabhWueQ443icHmtdvnUQg

Reply Favorite View the author
All Replies
RucLinux
deepin
2026-03-13 11:52
#1

GIMP3也不比PS差 😄

Reply View the author
剑风澜
deepin
2026-03-13 11:53
#2

还是linux系统份额不够呗!

市场大了,就屁颠颠来适配了tail

Reply View the author
kookboy
deepin
2026-03-13 12:55
#3

原来如此!tail

Reply View the author
LEARCAT
deepin
2026-03-13 21:40
#4

没啥高级需求,我直接用https://www.photopea.com/

Reply View the author