QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 6979|回复: 47

magicinstaller2对multilib支持的不太好

[复制链接]
发表于 2011-2-1 22:46:02 | 显示全部楼层 |阅读模式
没有区分x86_64和i686的arch,不知道怎么改。
发表于 2011-2-2 19:07:42 | 显示全部楼层
se 给我 iso 例子,我来改改,应该需要改动几处源码,测试一下。
主要需要iso中的 x86_64 rpm包
回复

使用道具 举报

 楼主| 发表于 2011-2-3 13:03:42 | 显示全部楼层
我知道需要改的地方有scripts下的pkgpublic.py和PkgArrange.py,及operation里的rpm 要添加--ignorearch参数,mi启动内核要换成x86_64(兼容32位)
回复

使用道具 举报

 楼主| 发表于 2011-2-3 14:38:51 | 显示全部楼层
http://www.321211.net/iso/MagicLinux-2.6-1.iso
安装的时候会卡到coreutils,需要切换到控制台,手工先安装bash和ncurses-libs的x86_64版本。
这是我做的iso,制作的时候有两个问题,一是同样名字,不同体系的包会在一个包名下放两个,所以要手工改result/pkgarray.py,去掉重复的,另一个是处理依赖的时候没有考虑体系问题,比如coreutils是依赖ncurses-libs的x86_64版本,但先安装的却是i686版本。
回复

使用道具 举报

 楼主| 发表于 2011-2-3 14:39:37 | 显示全部楼层
这个iso的x可以启动,但是无法接受键盘鼠标输入,我还在找原因。
回复

使用道具 举报

发表于 2011-2-3 17:35:37 | 显示全部楼层
下载速度50kb/s 30%

应该能解决的问题,se 先做其他的吧,我修正一下
回复

使用道具 举报

发表于 2011-2-3 21:16:49 | 显示全部楼层
This kernel requires an X86-64  CPU,but only detected an i686 CPU.
这个, 32位Linux下不能用VirtualBox模拟64位cpu, 惨了...
回复

使用道具 举报

 楼主| 发表于 2011-2-3 21:42:52 | 显示全部楼层
virtualbox可以在32位cpu上模拟64位,不过需要cpu支持vt-x,并且在bios和virtualbox中打开支持。
回复

使用道具 举报

发表于 2011-2-3 22:15:44 | 显示全部楼层
问题1
noarch 可依赖一个 i686 包
那么一个 i386 包能不能依赖一个 i686 ,反过来呢
那么一个 x86_64 包能不能依赖一个 i686 ,反过来呢?
回复

使用道具 举报

发表于 2011-2-3 22:39:16 | 显示全部楼层
问题2
如果 x86_64 和 i686 不能相互依赖,那么发行版中就不能同时出现两种 arch 的包.
如果出现两种 arch 的包, 就表示该 iso 发行版要做 arch 制定安装, 需要用户在安装时选择?
回复

使用道具 举报

 楼主| 发表于 2011-2-3 22:49:48 | 显示全部楼层
i386和i686的关系和x86_64和i686的关系不太一样,正常情况下,i686可以依赖i386的包,这并没有什么,反过来比较少见。
x86_64和i686的包之间,正常情况下应该不会存在相互间的依赖的,只是部分包在编译的时候可存在x86_64依赖i686的情况。
两种arch的包只是为保持multilib,这是为了方便使用,比如有些包如果只有i686的,可以在64位系统上使用,所以并不需要定制安装,还是64位为主的。像这个iso,因为grub在64位下无法编译,所以保留了grub的i686版本,所以需要grub的i686依赖。保留x86_64和i686的multilib并不会出现冲突,因为安装位置不同。
回复

使用道具 举报

 楼主| 发表于 2011-2-3 23:32:18 | 显示全部楼层
不知道你访问我这里的速度怎么样,如果可以的话,可以用我们服务器上的vmware esx的虚拟机。
219.231.240.151(教育网)
218.56.161.25(公网,联通)
用https访问,看看速度。可以的话,我pm你用户名和密码。
回复

使用道具 举报

发表于 2011-2-4 00:16:56 | 显示全部楼层
[sunshine@MagicLinux ~]$ ping 218.56.161.25
PING 218.56.161.25 (218.56.161.25) 56(84) bytes of data.
64 bytes from 218.56.161.25: icmp_seq=1 ttl=57 time=34.1 ms
64 bytes from 218.56.161.25: icmp_seq=2 ttl=57 time=34.1 ms
64 bytes from 218.56.161.25: icmp_seq=3 ttl=57 time=34.0 ms

网速不是很好, 过阵子找人提速再说吧..呵呵.. (我们家是3M网速,路由上的下行就是3000kb,但是实际网速不到0.5M, 就是下载速度不超过 50KB/s 我都晕了)
回复

使用道具 举报

发表于 2011-2-4 00:20:20 | 显示全部楼层
原帖由 sejishikong 于 2011-2-3 22:49 发表
i386和i686的关系和x86_64和i686的关系不太一样,正常情况下,i686可以依赖i386的包,这并没有什么,反过来比较少见。
x86_64和i686的包之间,正常情况下应该不会存在相互间的依赖的,只是部分包在编译的时候可存在x86_64依赖i68 ...

问题3
  1. [sunshine@MagicLinux ~]$ rpm -qv --requires gcc
  2. /bin/sh  
  3. /bin/sh  
  4. /bin/sh  
  5. /sbin/install-info  
  6. binutils >= 2.17.50.0.17-3
  7. cloog-ppl >= 0.15
  8. cpp = 4.4.0-5
  9. glibc-devel >= 2.2.90-12
  10. libc.so.6  
  11. libc.so.6(GLIBC_2.0)  
  12. libc.so.6(GLIBC_2.1)  
  13. libc.so.6(GLIBC_2.2)  
  14. libc.so.6(GLIBC_2.3)  
  15. libc.so.6(GLIBC_2.7)  
  16. libgcc >= 4.4.0-5
  17. libgcc_s.so.1  
  18. libgomp = 4.4.0-5
  19. libgomp.so.1  
  20. rpmlib(CompressedFileNames) <= 3.0.4-1
  21. rpmlib(PartialHardlinkSets) <= 4.0.4-1
  22. rpmlib(PayloadFilesHavePrefix) <= 4.0-1
  23. rtld(GNU_HASH)  
  24. rpmlib(PayloadIsLzma) <= 4.4.6-1
复制代码
这是在 MagicLinux2.5 上用 rpm 查询的 gcc 依赖, 其中只显示依赖库名称,和依赖版本范围, 没有说明库的arch.
在 x86_64 上的查询是否有 arch 提示?  怎样确定这个依赖库的 arch (通过rpm的查询方式)?
回复

使用道具 举报

发表于 2011-2-4 13:05:10 | 显示全部楼层
问题4.
以 ncurses 为例, 有两个 arch 版本
  1. [sunshine@MagicLinux packages]$ ls ncurses-
  2. ncurses-5.7-9.20101128mgc26.x86_64.rpm        ncurses-libs-5.7-9.20101128mgc26.i686.rpm
复制代码
  1. [sunshine@MagicLinux packages]$ rpm -qpv --provides ncurses-libs-5.7-9.20101128mgc26.i686.rpm
  2. libform.so.5  
  3. libformw.so.5  
  4. libmenu.so.5  
  5. libmenuw.so.5  
  6. libncurses.so.5  
  7. libncursesw.so.5  
  8. libpanel.so.5  
  9. libpanelw.so.5  
  10. libtic.so.5  
  11. libtinfo.so.5  
  12. ncurses-libs = 5.7-9.20101128mgc26
  13. ncurses-libs(x86-32) = 5.7-9.20101128mgc26
复制代码
在提供ncurses-libs(x86-32) 的同时 还提供 ncurses-libs
  1. [sunshine@MagicLinux packages]$ rpm -qpv --provides ncurses-libs-5.7-9.20101128mgc26.x86_64.rpm
  2. libform.so.5()(64bit)  
  3. libformw.so.5()(64bit)  
  4. libmenu.so.5()(64bit)  
  5. libmenuw.so.5()(64bit)  
  6. libncurses.so.5()(64bit)  
  7. libncursesw.so.5()(64bit)  
  8. libpanel.so.5()(64bit)  
  9. libpanelw.so.5()(64bit)  
  10. libtic.so.5()(64bit)  
  11. libtinfo.so.5()(64bit)  
  12. ncurses-libs = 5.7-9.20101128mgc26
  13. ncurses-libs(x86-64) = 5.7-9.20101128mgc26
复制代码
在提供ncurses-libs(x86-64) 的同时 还提供 ncurses-libs (记得这里好像就是为了解决 arch 依赖问题)
如上可知道, x86_64 和 i686 同时提供 带arch 和 不带arch 的两个库. 但是包依赖的库却不会指明 arch,如下所示.

查看一下 coreutils 的依赖发现,它依赖的是 ncurses ,但是并没有标出哪个 arch.
  1. [sunshine@MagicLinux packages]$ rpm -qpv --requires coreutils-8.5-4mgc26.x86_64.rpm
  2. /bin/sh  
  3. /bin/sh  
  4. /bin/sh  
  5. /sbin/install-info  
  6. /sbin/install-info  
  7. /sbin/install-info  
  8. config(coreutils) = 8.5-4mgc26
  9. coreutils-libs = 8.5-4mgc26
  10. gmp  
  11. grep  
  12. libacl.so.1()(64bit)  
  13. libacl.so.1(ACL_1.0)(64bit)  
  14. libattr  
  15. libattr.so.1()(64bit)  
  16. libattr.so.1(ATTR_1.1)(64bit)  
  17. libc.so.6()(64bit)  
  18. libc.so.6(GLIBC_2.2.5)(64bit)  
  19. libc.so.6(GLIBC_2.3)(64bit)  
  20. libc.so.6(GLIBC_2.3.4)(64bit)  
  21. libc.so.6(GLIBC_2.4)(64bit)  
  22. libc.so.6(GLIBC_2.6)(64bit)  
  23. libcap  
  24. libcap.so.2()(64bit)  
  25. libgmp.so.3()(64bit)  
  26. libpam.so.0()(64bit)  
  27. libpam.so.0(LIBPAM_1.0)(64bit)  
  28. libpam_misc.so.0()(64bit)  
  29. libpam_misc.so.0(LIBPAM_MISC_1.0)(64bit)  
  30. librt.so.1()(64bit)  
  31. librt.so.1(GLIBC_2.2.5)(64bit)  
  32. ncurses  
  33. pam  
  34. rpmlib(CompressedFileNames) <= 3.0.4-1
  35. rpmlib(PartialHardlinkSets) <= 4.0.4-1
  36. rpmlib(PayloadFilesHavePrefix) <= 4.0-1
  37. rpmlib(VersionedDependencies) <= 3.0.3-1
  38. rtld(GNU_HASH)
复制代码
这就出现了一个问题, coreutils 依赖的 ncurses 到底是哪个arch的呢? 要安装哪个arch的包来满足这个依赖?


我现在解决的办法是, 相同arch的优先, 在没有相同 arch 的时候就使用不同 arch. 不知道这个合不合理.
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-11-2 06:23 , Processed in 0.070446 second(s), 15 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表