LinuxSir.cn,穿越时空的Linuxsir!

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

[求助]emerge软件时出现的奇怪错误

[复制链接]
发表于 2009-1-6 01:03:20 | 显示全部楼层 |阅读模式
sudo emerge cairo
错误提示如下:
>>> Failed to emerge x11-libs/cairo-1.6.4-r1, Log file:
>>>  '/var/tmp/portage/x11-libs/cairo-1.6.4-r1/temp/build.log'

* Messages for package x11-libs/cairo-1.6.4-r1:
* You need to rebuild libXft with newspr USE enabled
* before you can compile cairo with newspr.

*
* ERROR: x11-libs/cairo-1.6.4-r1 failed.
* Call stack:
*               ebuild.sh, line   49:  Called pkg_setup
*   cairo-1.6.4-r1.ebuild, line   68:  Called die
* The specific snippet of code:
*              die "lease rebuild libXft with newspr enabled."
*  The die message:
*   Please rebuild libXft with newspr enabled.
然后我按照提示
USE="newspr" sudo emerge  libXft
更新成功后,然后再输入:
sudo emerge cairo结果还是不行。
然后我输入:ls  -la /usr/portage/x11-libs/cairo/
结果如下:
drwxr-xr-x   3 root root  4096 01-05 02:06 .
drwxr-xr-x 139 root root  4096 01-05 17:08 ..
-rw-r--r--   1 root root  1968 2007-12-12 cairo-1.4.12.ebuild
-rw-r--r--   1 root root  1968 2008-04-14 cairo-1.4.14.ebuild
-rw-r--r--   1 root root  2116 01-05 02:06 cairo-1.6.4.ebuild
-rw-r--r--   1 root root  2284 01-05 02:06 cairo-1.6.4-r1.ebuild
-rw-r--r--   1 root root  2399 01-01 06:06 cairo-1.8.0.ebuild
-rw-r--r--   1 root root  2399 01-01 06:06 cairo-1.8.2.ebuild
-rw-r--r--   1 root root  2399 01-01 06:06 cairo-1.8.4.ebuild
-rw-r--r--   1 root root  2983 01-01 06:06 cairo-1.8.6.ebuild
-rw-r--r--   1 root root 29029 01-05 02:06 ChangeLog
drwxr-xr-x   2 root root  4096 12-31 01:41 files
-rw-r--r--   1 root root  3765 01-05 02:06 Manifest
-rw-r--r--   1 root root   692 12-31 01:41 metadata.xml
里面有1.8.*版本的软件,为什么我emerge的时候,会让我安装1.6版本的呢?
望各位指教,谢谢!
发表于 2009-1-6 01:45:37 | 显示全部楼层
然后我按照提示
USE="newspr" sudo emerge libXft
请确认 USE="newspr" sudo emerge libXft -av 以后看到libXft的newspr是开启的(注意-av参数)。

正常情况下这样操作USE设置应该是不起作用的。
回复 支持 反对

使用道具 举报

发表于 2009-1-6 09:30:05 | 显示全部楼层
sudo env USE=......
sudo可以传递环境变量,也可以不传递,可以配置
保险的话用env
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-1-6 11:04:00 | 显示全部楼层
sudo env USE="newspr" emerge -av libXft
[ebuild   R] x11-libs/libXft-2.1.12  USE="-debug" 0 kB
Total: 1 package (1 reinstall), Size of downloads: 0 kB
我在Gentoo官方的USE List并里面没有找到newspr,这个newspr好像是overlay里面的。
我在网上搜点文章,但是还是没找到解决办法,文字见下:
那是因为 Gentoo 官方源里的 Cairo 、libXft 两个基础库都不带次像素渲染,这个对字体的显示有着重要影响,所以我们必须将 Cairo 、libXft 两个基础库利用 overlay 进行升级。
请问使用什么命令指定emerge时优先使用overlay里的东西而不是官方的东西呢?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-1-6 11:39:26 | 显示全部楼层
我又看里下overlay里的东西:
ls /usr/portage/local/layman/gentoo-china/x11-libs/libXft/
ChangeLog  files  libXft-2.1.13.ebuild  Manifest  metadata.xml


接着查看官方的东西:
ls /usr/portage/x11-libs/libXft
ChangeLog  libXft-2.1.12.ebuild  libXft-2.1.13.ebuild  Manifest  metadata.xml


里面多里个2.1.12的版本,而我emerge时正是用的2.1.12版本,为什么不用新的版本呢?
回复 支持 反对

使用道具 举报

发表于 2009-1-6 14:03:32 | 显示全部楼层
将所有的overlay全部去掉看看.
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-1-6 14:36:28 | 显示全部楼层
谢谢LS的兄弟!去掉overlay和在USE里面加上-newspr都是可以解决的。
但是我想知道:
1.为什么emeger的时候有新版本它不用,它要去安装旧的,我能不能指定一个版本安装?
2.如何在overlay和portage里同时存在一个软件时,如果选择overlay里的软件?
回复 支持 反对

使用道具 举报

发表于 2009-1-6 20:20:34 | 显示全部楼层
1. emerge =package-version,如果不行,emerge会告诉你为什么不行
2. 默认就是用overlay里的
回复 支持 反对

使用道具 举报

发表于 2009-2-27 23:03:56 | 显示全部楼层
遇到LZ同样的问题,搜到这里来,上面的方法都试过了,newspr在USE里还是不起作用。
回复 支持 反对

使用道具 举报

发表于 2009-2-28 18:13:49 | 显示全部楼层
在irc:<trasher32>兄弟的指导下,解决问题了。
echo "x11-libs/libXft ~x86" >> /etc/portage/package.keywords && emerge libXft
就OK了。
原来我用的是x86, 默认的libXft是2.1.12, 而~86时才用overlay的2.1.13(带有newspr USE)。
回复 支持 反对

使用道具 举报

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

本版积分规则

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