sejishikong 发表于 2011-2-1 22:46:02

magicinstaller2对multilib支持的不太好

没有区分x86_64和i686的arch,不知道怎么改。

zy_sunshine 发表于 2011-2-2 19:07:42

se 给我 iso 例子,我来改改,应该需要改动几处源码,测试一下。
主要需要iso中的 x86_64 rpm包

sejishikong 发表于 2011-2-3 13:03:42

我知道需要改的地方有scripts下的pkgpublic.py和PkgArrange.py,及operation里的rpm 要添加--ignorearch参数,mi启动内核要换成x86_64(兼容32位)

sejishikong 发表于 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版本。

sejishikong 发表于 2011-2-3 14:39:37

这个iso的x可以启动,但是无法接受键盘鼠标输入,我还在找原因。

zy_sunshine 发表于 2011-2-3 17:35:37

下载速度50kb/s 30%

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

zy_sunshine 发表于 2011-2-3 21:16:49

This kernel requires an X86-64CPU,but only detected an i686 CPU.
这个, 32位Linux下不能用VirtualBox模拟64位cpu, 惨了...

sejishikong 发表于 2011-2-3 21:42:52

virtualbox可以在32位cpu上模拟64位,不过需要cpu支持vt-x,并且在bios和virtualbox中打开支持。

zy_sunshine 发表于 2011-2-3 22:15:44

问题1
noarch 可依赖一个 i686 包
那么一个 i386 包能不能依赖一个 i686 ,反过来呢
那么一个 x86_64 包能不能依赖一个 i686 ,反过来呢?

zy_sunshine 发表于 2011-2-3 22:39:16

问题2
如果 x86_64 和 i686 不能相互依赖,那么发行版中就不能同时出现两种 arch 的包.
如果出现两种 arch 的包, 就表示该 iso 发行版要做 arch 制定安装, 需要用户在安装时选择?

sejishikong 发表于 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并不会出现冲突,因为安装位置不同。

sejishikong 发表于 2011-2-3 23:32:18

不知道你访问我这里的速度怎么样,如果可以的话,可以用我们服务器上的vmware esx的虚拟机。
219.231.240.151(教育网)
218.56.161.25(公网,联通)
用https访问,看看速度。可以的话,我pm你用户名和密码。

zy_sunshine 发表于 2011-2-4 00:16:56

$ 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 我都晕了)

zy_sunshine 发表于 2011-2-4 00:20:20

原帖由 sejishikong 于 2011-2-3 22:49 发表 http://www.linuxfans.org/bbs/images/common/back.gif
i386和i686的关系和x86_64和i686的关系不太一样,正常情况下,i686可以依赖i386的包,这并没有什么,反过来比较少见。
x86_64和i686的包之间,正常情况下应该不会存在相互间的依赖的,只是部分包在编译的时候可存在x86_64依赖i68 ...
问题3$ rpm -qv --requires gcc
/bin/sh
/bin/sh
/bin/sh
/sbin/install-info
binutils >= 2.17.50.0.17-3
cloog-ppl >= 0.15
cpp = 4.4.0-5
glibc-devel >= 2.2.90-12
libc.so.6
libc.so.6(GLIBC_2.0)
libc.so.6(GLIBC_2.1)
libc.so.6(GLIBC_2.2)
libc.so.6(GLIBC_2.3)
libc.so.6(GLIBC_2.7)
libgcc >= 4.4.0-5
libgcc_s.so.1
libgomp = 4.4.0-5
libgomp.so.1
rpmlib(CompressedFileNames) <= 3.0.4-1
rpmlib(PartialHardlinkSets) <= 4.0.4-1
rpmlib(PayloadFilesHavePrefix) <= 4.0-1
rtld(GNU_HASH)
rpmlib(PayloadIsLzma) <= 4.4.6-1
这是在 MagicLinux2.5 上用 rpm 查询的 gcc 依赖, 其中只显示依赖库名称,和依赖版本范围, 没有说明库的arch.
在 x86_64 上的查询是否有 arch 提示?怎样确定这个依赖库的 arch (通过rpm的查询方式)?

zy_sunshine 发表于 2011-2-4 13:05:10

问题4.
以 ncurses 为例, 有两个 arch 版本$ ls ncurses-
ncurses-5.7-9.20101128mgc26.x86_64.rpm      ncurses-libs-5.7-9.20101128mgc26.i686.rpm$ 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$ 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.$ 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. 不知道这个合不合理.
页: [1] 2 3 4
查看完整版本: magicinstaller2对multilib支持的不太好