|
|
发表于 2006-2-5 08:06:27
|
显示全部楼层
1。binutils/glibc/gcc。
一个系统中,这3者的组合很关键。当然,不是说版本不同所编译出来的软件就不能互相使用,不过 也许 会存在一点兼容问题。比如glibc 2.2.4和glibc 2.3.6 ,gcc3和gcc4。
不过这个方面的兼容性,似乎不是最重要的。因为我以前用的LFS5,一样可以运行在别的机器上用[color="Red"]gcc3.5编译出来的软件。 gcc3.5???:ask
2。库的依赖。
比如 OpenSSH 依赖 OpenSSL。这类情况,一旦删除OpenSSL,那么OpenSSH也就不能运行了。升级OpenSSL也有可能会产生问题,比如OpenSSL 0.9.8改变了一个API,导致Heimdal运行失败,因为找不到相应的函数。 我猜所有的发行版都会面对这类情况的了
3。RPM类型的依赖。如 Debian的apt,Gentoo的emerge,FreeBSD的port 之类的。
这些只是一个软件安装记录机制而已。这些记录一般是准确的,但是也有出错的时候。也就是如果你用手动编译安装了一个软件,而不是通过 emerge这类软件安装,那么记录里边就没有体现出来。那么就会有可能产生错误了。比如手动安装了一个OpenSSL 0.9.8的话,那么你的Kerberos服务也许就会停止了。 是的,用手动编译安装软件也要打包後才安装,否则rpm、Debian的dpkg等database并不知道某个软件已安装,其他依赖的软件安装或升级时便会服错了。
话说回来,把软件打包後再装有个好处是软件的升/降级或移除都较方便。rpm的打包方法很讨厌,用checkinstall也许会方便一点 |
|