|
发表于 2011-2-4 13:05:10
|
显示全部楼层
问题4.
以 ncurses 为例, 有两个 arch 版本- [sunshine@MagicLinux packages]$ ls ncurses-
- ncurses-5.7-9.20101128mgc26.x86_64.rpm ncurses-libs-5.7-9.20101128mgc26.i686.rpm
复制代码- [sunshine@MagicLinux packages]$ rpm -qpv --provides ncurses-libs-5.7-9.20101128mgc26.i686.rpm
- libform.so.5
- libformw.so.5
- libmenu.so.5
- libmenuw.so.5
- libncurses.so.5
- libncursesw.so.5
- libpanel.so.5
- libpanelw.so.5
- libtic.so.5
- libtinfo.so.5
- ncurses-libs = 5.7-9.20101128mgc26
- ncurses-libs(x86-32) = 5.7-9.20101128mgc26
复制代码 在提供ncurses-libs(x86-32) 的同时 还提供 ncurses-libs- [sunshine@MagicLinux packages]$ rpm -qpv --provides ncurses-libs-5.7-9.20101128mgc26.x86_64.rpm
- libform.so.5()(64bit)
- libformw.so.5()(64bit)
- libmenu.so.5()(64bit)
- libmenuw.so.5()(64bit)
- libncurses.so.5()(64bit)
- libncursesw.so.5()(64bit)
- libpanel.so.5()(64bit)
- libpanelw.so.5()(64bit)
- libtic.so.5()(64bit)
- libtinfo.so.5()(64bit)
- ncurses-libs = 5.7-9.20101128mgc26
- ncurses-libs(x86-64) = 5.7-9.20101128mgc26
复制代码 在提供ncurses-libs(x86-64) 的同时 还提供 ncurses-libs (记得这里好像就是为了解决 arch 依赖问题)
如上可知道, x86_64 和 i686 同时提供 带arch 和 不带arch 的两个库. 但是包依赖的库却不会指明 arch,如下所示.
查看一下 coreutils 的依赖发现,它依赖的是 ncurses ,但是并没有标出哪个 arch.- [sunshine@MagicLinux packages]$ rpm -qpv --requires coreutils-8.5-4mgc26.x86_64.rpm
- /bin/sh
- /bin/sh
- /bin/sh
- /sbin/install-info
- /sbin/install-info
- /sbin/install-info
- config(coreutils) = 8.5-4mgc26
- coreutils-libs = 8.5-4mgc26
- gmp
- grep
- libacl.so.1()(64bit)
- libacl.so.1(ACL_1.0)(64bit)
- libattr
- libattr.so.1()(64bit)
- libattr.so.1(ATTR_1.1)(64bit)
- libc.so.6()(64bit)
- libc.so.6(GLIBC_2.2.5)(64bit)
- libc.so.6(GLIBC_2.3)(64bit)
- libc.so.6(GLIBC_2.3.4)(64bit)
- libc.so.6(GLIBC_2.4)(64bit)
- libc.so.6(GLIBC_2.6)(64bit)
- libcap
- libcap.so.2()(64bit)
- libgmp.so.3()(64bit)
- libpam.so.0()(64bit)
- libpam.so.0(LIBPAM_1.0)(64bit)
- libpam_misc.so.0()(64bit)
- libpam_misc.so.0(LIBPAM_MISC_1.0)(64bit)
- librt.so.1()(64bit)
- librt.so.1(GLIBC_2.2.5)(64bit)
- ncurses
- pam
- rpmlib(CompressedFileNames) <= 3.0.4-1
- rpmlib(PartialHardlinkSets) <= 4.0.4-1
- rpmlib(PayloadFilesHavePrefix) <= 4.0-1
- rpmlib(VersionedDependencies) <= 3.0.3-1
- rtld(GNU_HASH)
复制代码 这就出现了一个问题, coreutils 依赖的 ncurses 到底是哪个arch的呢? 要安装哪个arch的包来满足这个依赖?
我现在解决的办法是, 相同arch的优先, 在没有相同 arch 的时候就使用不同 arch. 不知道这个合不合理. |
|