Red Hat 的 rpm 和 SUSE 的 rpm 能通用吗
理论上说,既然是针对不同发行版打的包,自然会有些差异。实际上来说,有时候会报错。但是当时装 mentohust 时(不知道源里有)就是用的 fedora 的 rpm 包,装成功了可以用。但是总觉得不靠谱,又换装了源里的。
记得有次误点 deb,apper 居然出现继续键,当然我没有按。后来觉得奇怪去试其它的 deb 包都是出现不支持类型的。由于忘了什么包,一直无法复现那次的情况。
不会打包,不懂什么原理。不知道为什么。但是安装非源里的包有时会各种问题我知道。。。还是源里自家的靠谱。。。
有可能不行,比如说某个软件依赖 libjpeg.so.62,这个 fedora 里有,而 opensuse 里是 libjpeg.so.8,所以不一定能通用
也有可能行,比如说 libnatspec 之类的,fedora 18 的能装到 opensuse 12.3 上
所以说能不能通用还得试一下才知道
Ubuntu 和 debian 软件包通用可能性大一些,因为 Ubuntu 据说是 import from debian unstable 的
不一定能通用,就像楼上说的主要还是依赖问题。简单的软件一般来说都没问题~
函数库依赖只是小问题。
其它原因:
-
spec 里的 Group。fedora 和 openSUSE 的不一样,于是在 YaST 的 RPM 组标签页下的显示会有问题。
-
desktop 文件里的 Category。fedora 和 openSUSE 的不一样,于是你的软件图标可能出现在开始菜单的非正常位置。
-
安装路径。比如 openSUSE 的软件 doc 是装到 /usr/share/doc/packages/ (%{_docdir}),而 fedora 的可能装到 /usr/share/doc/。甚至比如 python 软件包,openSUSE 是装到 %{python_sitelib},而 debian 是装到 /usr/share/pyshared,而这个文件夹不在 openSUSE 的环境变量里。所以可能会出现奇奇怪怪的问题。
-
spec 里的 %pre %post 等。一是用宏(macro)的问题,比如 openSUSE 有 %gtk_immodule_update 这个宏,而 fedora 是用 alternative 做。二是底层机制的问题,比如 openSUSE 是用 xim 来决定输入法,fedora 是 xinput,那你安装 fedora 的 fcitx 的结果就是你开机启动不了 fcitx。再比如 debian 是用 acpid 来控制休眠时候执行的命令,openSUSE 是用 pm-utils,那你挂起后该执行的命令执行不了导致会恢复时黑屏也很正常。
-
其它 spec 问题。比如 Recommends/Supplement 这些 tag,fedora 是没有的。所以缺了依赖你可能折腾很久。fedora 用的是原生的 rpm,而 openSUSE 用的是自己的扩展。
-
mimetype。主要管「打开方式」和「文件扩展名」,文件扩展名又管用什么图标显示 .doc 文档这种。比如 wps 的 rpm 是在 fedora 上打的,那 openSUSE 上 .doc 文件就是没有图标。
-
软件包本身的问题,比如这个软件就是在 Ubuntu 上写的,那你没有 Unity,没有 libindicator,你装上也没法用。
-
补丁,比如这个补丁是修 fedora 的,于是你拿了修完的 rpm 到 openSUSE 上,反而修坏了。
这些问题反过来一样存在,总之就是见微知著,小的问题一件件都觉得没什么,集中到一起就能要你命。
是不是可以理解成这样
rpm 是一种规则,各个发行版的 rpm 是具体的实现。规则相同而实现可以不同
就像 X 协议和各种 DE 一样
看女王的意思应该不是 rpm 规则的问题而发行版本身一些库、路径之类的设置不同导致的 spec 文件中的路径之类的在不同的发行版上会出问题吧。
rpm 本身是红帽开发的一个开源软件,定义的是格式和规则。我们的是在此基础上的进化。加入了一些改良的东西。最终体现在了 spec 里。
而其它的 desktop,文件路径,则是对 freedesktop/FHS 等标准的理解不同以及发行版对没有标准的东西的约定不同。
像底层软件包则是发行版的考虑。比如我们就愿意用 systemd,gentoo 就愿意用 sysvinit。
Sent from my iPad Mini using Tapatalk HD