LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 902|回复: 10

[已解决]emerge编译~amd64的glibc,gcc失败,emerge无法运行

[复制链接]
发表于 2008-12-14 09:30:17 | 显示全部楼层 |阅读模式
rt,命令行输出如下
  1. Traceback (most recent call last):
  2.   File "/usr/bin/emerge", line 27, in <module>
  3.     import portage
  4.   File "/usr/lib64/portage/pym/portage.py", line 98, in <module>
  5.     from portage_data import ostype, lchown, userland, secpass, uid, wheelgid, \
  6.   File "/usr/lib64/portage/pym/portage_data.py", line 106, in <module>
  7.     mystatus, myoutput = getstatusoutput("id -G portage")
  8.   File "/usr/lib64/python2.5/commands.py", line 53, in getstatusoutput
  9.     pipe = os.popen('{ ' + cmd + '; } 2>&1', 'r')
  10. OSError: [Errno 38] Function not implemented
复制代码


equery也不行
  1. Traceback (most recent call last):
  2.   File "/usr/bin/equery", line 24, in <module>
  3.     import gentoolkit
  4.   File "//usr/lib/gentoolkit/pym/gentoolkit/__init__.py", line 23, in <module>
  5.     import portage
  6.   File "/usr/lib64/portage/pym/portage.py", line 98, in <module>
  7.     from portage_data import ostype, lchown, userland, secpass, uid, wheelgid, \
  8.   File "/usr/lib64/portage/pym/portage_data.py", line 106, in <module>
  9.     mystatus, myoutput = getstatusoutput("id -G portage")
  10.   File "/usr/lib64/python2.5/commands.py", line 53, in getstatusoutput
  11.     pipe = os.popen('{ ' + cmd + '; } 2>&1', 'r')
  12. OSError: [Errno 38] Function not implemented
复制代码


KEYWORD是amd64,本来只想用下新版的gcc的,被迫升级glibc。glibc编译成功,但是gcc由于分区空间不够没编译成。

现在sys-apps/portage包含的程序都不能运行了:yun:。有没有其它能重装glibc的程序,我快崩溃了。
发表于 2008-12-14 17:55:57 | 显示全部楼层
你的内核太老了
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-12-14 18:23:25 | 显示全部楼层
我用的sys-kernel/gentoo-sources-2.6.27-gentoo-r5啊,下载了个stage3,用里面的emerge降级了glibc后就能用emerge啦。

看来基于python的工具还是不大靠得住啊。
回复 支持 反对

使用道具 举报

发表于 2008-12-14 19:21:49 | 显示全部楼层
这个和python没有任何关系

这个问题在于你使用的application和内核不配套
app是在较新的glibc+内核上编译的
用到了一些新的系统调用

但是这些系统调用在你当前的内核里没有实现
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-12-14 21:04:56 | 显示全部楼层
晕那,编译前后我没换内核啊。解决问题当中也没换啊,就降级了下glibc。怎么就跟内核出问题了捏。难道你的意思是glibc和内核配套,必须在glibc编译后重新编译内核?
回复 支持 反对

使用道具 举报

发表于 2008-12-14 21:13:35 | 显示全部楼层
用~amd64就好了。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-12-14 21:19:47 | 显示全部楼层
Post by yourfriend;1923898
用~amd64就好了。

怕怕,虽然知道那些软件在arch里早就不是testing了。
回复 支持 反对

使用道具 举报

发表于 2008-12-14 22:57:04 | 显示全部楼层
glibc不是application,是library
python是application

我所说的内核不够新是导致你这个问题的特殊情况
一般情况是编译application的环境(glibc+kernel)和application运行的环境不匹配
不匹配无外乎两种情况,glibc+kernel比较新或者glibc+kernel不够新
而一般情况下glibc和内核为了保持向后兼容,不会去掉旧版本里已经有的系统调用
所以glibc+kernel较新一般不会有问题,当然也不排除特殊情况
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-12-15 00:57:29 | 显示全部楼层
看来emerge没有问题。错就错在编译glibc后没有重新编译其它依赖程序。学习了。
回复 支持 反对

使用道具 举报

发表于 2008-12-15 03:29:08 | 显示全部楼层
Post by coderoar;1923845
我用的sys-kernel/gentoo-sources-2.6.27-gentoo-r5啊,下载了个stage3,用里面的emerge降级了glibc后就能用emerge啦。

看来基于python的工具还是不大靠得住啊。


glibc还能降级啊,我记得好像不让降的啊
回复 支持 反对

使用道具 举报

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

本版积分规则

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