UPDATE: ADOBE已经正式宣布停止更新AIR FOR LINUX(难怪之前对BUG汇报视而不见),看来之后LINUX用户就要和AIR说再见了,什么用AIR实现跨平台最终还是成为了一场梦,还是拥抱WEB吧。

上周冲着GNOME3装了Fedora 15 Lovelock,放弃了从接触LINUX以来就一直在使用的Ubuntu(准确的说,是删掉了Ubuntu 11.04,实在受不了Unity了)。从安装到后来的配置确实都让我不大不小地折腾了一番,这些等到以后有空的时候再细细说吧。今天我就想说说发现的一个BUG——Adobe Air在Fedora 15下无法使用,准确说是无法安装Air程序包。

系统配置得差不多后,我想稍微娱乐一下,装个AIR三国杀来玩玩(当然,之前已经从ADOBE的官方源里装了adobeair了,那个源里还有flash-plugin),可是安装过程中却弹出错误提示:“无法安装应用程序,因为安装程序已损坏。请尝试从应用程序作者处获取新的安装程序文件。”

重新下载尝试以后仍旧不行,上网搜索多半是说彻底删除干净重新安装就可以了,尝试后依旧不行。为了排除是三国杀的问题,我又下载了其他几个AIR程序,安装过程中均遇到了相同的提示,于是我把问题锁定在了AIR本身。

根据ADOBE官网的文档,我找到了AIR的LOG:~/.appdata/Adobe/AIR/Logs/Install.log(果然是私有软件,这大小写风格令我蛋疼)。打开一看LOG格式惨不忍睹,诶,只能将就一下了。找到了这样几句:

Native installation package creation failed:
Error creating the package /opt/Adobe AIR/Versions/1.0/Resources/rpmbuilder error : Could not load the library: librpmbuild.so
symbol not found: parseSpec, /usr/lib/librpmbuild.so.2: undefined symbol: parseSpec

librpmbuild.so在系统里是存在的,但是载入的时候发生了错误(找不到parseSpec这个符号资源)。根据新的线索更仔细地搜索了一下,终于找到了问题的原因:

Adobe Air在LINUX上安装AIR程序时会自动生成相应的软件包(rpm、deb)然后用系统自带的包管理器来安装。但是对于构建rpm它使用了不推荐的方法,直接调用librpmbuild中的函数而非使用rpmbuild命令。更可怕的是,它使用了版本相关的特性(比如这里的parseSpec)而又没有正确指定库的版本。结果由于Fedora 15使用了最新版的rpm 4.9.x,不再提供这个函数,于是便发生了错误。

参考信息:Adobe Forum相关帖子Red Hat Bugzilla

从Adobe Forum可知,Adobe工程师们已经获悉了这一BUG,但却似乎没有什么进一步的动作。而Red Hat更是直指这是Adobe等私有软件的问题,将这个报告标记成了NOTABUG。如此一来,对于AIR这样一个私有软件,除了继续低三下四地催促ADOBE快点修复以外,也没有别的解决方案了(当然,downgrade rpm也可以,如果你愿意)。诶,这一点上就能体现出开源软件的优势啊!

总结一下ADOBE的几个问题:

  1. 与开源软件的规范格格不入(小到文件命名方式、LOG格式,大到调用库的方式)
  2. 对于BUG报告响应缓慢。
  3. 对于放入官方源的软件居然没有经过最起码的测试。

总之,一派私有软件的一贯作风。最后,我没有卸载adobeair,等着看什么时候会有update,解决这个问题,到时候我也会及时更新的。在此之前,如果不是闲得蛋疼的话还是不要在Fedora 15下折腾AIR了。