中国Linux公社论坛's Archiver

if_else 发表于 2012-10-24 17:36

gentoo 更新内核,make 时报错

今天升级系统后,最后升级 kernel 时遇到了问题:

我参照 wiki :
[url=http://www.gentoo.org/doc/en/kernel-upgrade.xml]http://www.gentoo.org/doc/en/kernel-upgrade.xml[/url]

更新内核源码,用 eselect 更新软链接[code]# emerge -u gentoo-sources

# ll /usr/src
total 8.0K
drwxr-xr-x 17 root root 4.0K Oct 24 16:56 linux-3.5.7-gentoo
lrwxrwxrwx  1 root root   18 Oct 24 16:33 linux -> linux-3.5.7-gentoo
drwxr-xr-x 24 root root 4.0K Sep 13 16:36 linux-3.3.8-gentoo
[/code]复制 linux-3.3.8-gentoo 的 .config 文件到 /usr/src/linux 进入该目录下
准备编译内核,报如下错误:[code]
gentoo linux # make oldconfig
scripts/kconfig/conf --oldconfig Kconfig
init/Kconfig:1111: can't open file "usr/Kconfig"
make[1]: *** [oldconfig] Error 1
make: *** [oldconfig] Error 2

gentoo linux # make menuconfig
scripts/kconfig/mconf Kconfig
init/Kconfig:1111: can't open file "usr/Kconfig"
make[1]: *** [menuconfig] Error 1
make: *** [menuconfig] Error 2
[/code]

[[i] 本帖最后由 if_else 于 2012-10-24 17:39 编辑 [/i]]

jiangtao9999 发表于 2012-10-24 19:52

检查内核文件是否完整

if_else 发表于 2012-10-24 23:06

我重新 emerge ,仔细查看,输出发现是 failed 了[code]>>> Failed to install sys-kernel/gentoo-sources-3.5.7, Log file:
>>>  '/var/tmp/portage/sys-kernel/gentoo-sources-3.5.7/temp/build.log'
* GNU info directory index is up-to-date.
[/code]/var/tmp/portage/sys-kernel/gentoo-sources-3.5.7/temp/build.log 部分输出放在这里了:

[url]http://bpaste.net/show/53273/[/url]

谢谢!

zy_sunshine 发表于 2012-10-25 10:29

这个包安装失败,所以内核文件在 /usr/src 中的不完整,所以你编译会提示没有找到某些文件。
sys-kernel/gentoo-sources-3.5.7

其实内核的实际配置文件是
/usr/portage/sys-kernel/gentoo-sources/*.ebuild
里面会inherit
/usr/portage/eclass/kernel-2.eclass

so,这里面做的操作大体是,下载kernel,解压kernel到
/var/tmp/portage/sys-kernel/gentoo-sources-3.5.7/work
在这里面要对源码打补丁啦,configure 和 编译(当然kernel在这里的编译几乎是没有操作)

然后会把这写准备好的文件(如果是其他包,那么这写文件应该已经编译成了二进制,不过这是source包,所以都是源文件)安装到
/var/tmp/portage/sys-kernel/gentoo-sources-3.5.7/image/

那看你的log,上面的这几个步骤都是正常的,
最后将
/var/tmp/portage/sys-kernel/gentoo-sources-3.5.7/image/
里面的文件安装到系统的
/usr/src
里面出现了collision 冲突。
你之前是不是拷贝 kernel文件到 /usr/src 中过,你把那里的文件删除后再安装。

jiangtao9999 发表于 2012-10-25 13:27

之前的内核源代码怎么装的?

if_else 发表于 2012-10-25 16:53

我移除 /usr/src 下的源码:

# ll
total 12K
drwxr-xr-x 17 root root 4.0K Oct 24 22:16 bak.linux-3.5.7-gentoo

重新 # emerge -u gentoo-sources 还是失败了。这是没有提示,文件冲突:
安装日志信息贴在这里:

[url]http://bpaste.net/show/53478[/url]

编译时提示下面的错误:[code] # make oldconfig
  HOSTCC  scripts/basic/fixdep
  HOSTCC  scripts/kconfig/conf.o
  SHIPPED scripts/kconfig/zconf.tab.c
  SHIPPED scripts/kconfig/zconf.lex.c
  SHIPPED scripts/kconfig/zconf.hash.c
  HOSTCC  scripts/kconfig/zconf.tab.o
  HOSTLD  scripts/kconfig/conf
scripts/kconfig/conf --oldconfig Kconfig
init/Kconfig:1111: can't open file "usr/Kconfig"
make[1]: *** [oldconfig] Error 1
make: *** [oldconfig] Error 2[/code]

[[i] 本帖最后由 if_else 于 2012-10-25 16:57 编辑 [/i]]

if_else 发表于 2012-10-25 17:07

[quote]原帖由 [i]jiangtao9999[/i] 于 2012-10-25 13:27 发表 [url=http://forum.linuxfans.org/redirect.php?goto=findpost&pid=4962710&ptid=198676][img]http://forum.linuxfans.org/images/common/back.gif[/img][/url]
之前的内核源代码怎么装的? [/quote]

开始是通过升级方式安装的,安装 kernel 报错后换用 emerge -u gentoo-sources[code]
# time emerge -aDjNuv @world
[ebuild  NS    ] sys-kernel/gentoo-sources-3.5.7 [3.3.8] USE="-build -deblob -symlink" 0 kB[/code]

zy_sunshine 发表于 2012-10-25 17:07

>>> Installing (1 of 1) sys-kernel/gentoo-sources-3.5.7

>>> Failed to install sys-kernel/gentoo-sources-3.5.7, Log file:

>>>  '/var/tmp/portage/sys-kernel/gentoo-sources-3.5.7/temp/build.log'
看你的log,还是安装 gentoo-sources 失败了,把/var/tmp/portage/sys-kernel/gentoo-sources-3.5.7/temp/build.log贴上来看..

if_else 发表于 2012-10-25 17:09

[quote]原帖由 [i]zy_sunshine[/i] 于 2012-10-25 17:07 发表 [url=http://forum.linuxfans.org/redirect.php?goto=findpost&pid=4962714&ptid=198676][img]http://forum.linuxfans.org/images/common/back.gif[/img][/url]
>>> Installing (1 of 1) sys-kernel/gentoo-sources-3.5.7

>>> Failed to install sys-kernel/gentoo-sources-3.5.7, Log file:

>>>  '/var/tmp/portage/sys-kernel/gentoo-sources-3.5.7/temp/build.log'
看你的 ... [/quote]

log 里面和我上面贴的输出一样,下面是原始 log:
[url]http://bpaste.net/show/53475/[/url]

zy_sunshine 发表于 2012-10-25 17:22

if_else 同学, 错误已经很明显了...
包没安装好..你能解决的。只要包安装正确,编译肯定没问题。

jiangtao9999 发表于 2012-10-25 18:27

[quote]原帖由 [i]if_else[/i] 于 2012-10-25 05:07 PM 发表 [url=http://forum.linuxfans.org/redirect.php?goto=findpost&pid=4962713&ptid=198676][img]http://forum.linuxfans.org/images/common/back.gif[/img][/url]


开始是通过升级方式安装的,安装 kernel 报错后换用 emerge -u gentoo-sources
# time emerge -aDjNuv @world
[ebuild  NS    ] sys-kernel/gentoo-sources-3.5.7 [3.3.8] USE="-build -deblob -symlink" 0 kB ... [/quote]
以前这个源代码没有存入 portage 的数据库,导致 emerge 提示出现已存在文件的问题而报错。
按理上说如果你用 emerge 安装的,不应该出现这个错误信息。

zy_sunshine 发表于 2012-10-25 19:31

taotao,我和他连线对话了,这个问题是emerge的bug,可悲的emerge终于遭遇bug了。
我们把这个bug绕过去了。

[[i] 本帖最后由 zy_sunshine 于 2012-10-25 19:32 编辑 [/i]]

jiangtao9999 发表于 2012-10-25 21:58

这个 bug 我没遇到过。

zy_sunshine 发表于 2012-10-26 00:19

emerge 在生成最后安装文件的时候,对每一个文件做检查的时候突然退出了,log里面也没有错误记录。
我直接用ebuild而没有用emerge把这个问题绕过去了。

jiangtao9999 发表于 2012-10-26 09:04

:roll:
删了内核源代码目录之后重新 emerge 就行了。

zy_sunshine 发表于 2012-10-26 09:31

试过

jiangtao9999 发表于 2012-10-26 16:06

话说我觉得这纯粹是 RPWT 。
:?

页: [1]

Powered by Discuz! Archiver 6.1.0F  © 2001-2007 Comsenz Inc.