+ -
当前位置:首页 → 问答吧 → USE的循环依赖是怎样产生的?

USE的循环依赖是怎样产生的?

时间:2009-02-03

来源:互联网

这个问题今天让我遇到了,郁闷。问题已解决(经过尝试,去掉"X"的USE标记!)但是怎么会产生这种现象呢?
代码:
Gentoo / # emerge xorg-server -av
 * Overlay eclass overrides eclass from PORTDIR:
 * 
 * '/usr/local/overlays/xfce4.git/eclass/xfce4.eclass'
 * 
 * It is best to avoid overriding eclasses from PORTDIR because it will
 * trigger invalidation of cached ebuild metadata that is distributed with
 * the portage tree. If you must override eclasses from PORTDIR then you
 * are advised to add FEATURES="metadata-transfer" to /etc/make.conf and to
 * run `emerge --regen` after each time that you run `emerge --sync`. Set
 * PORTAGE_ECLASS_WARNING_ENABLE="0" in /etc/make.conf if you would like to
 * disable this warning.

These are the packages that would be merged, in order:

Calculating dependencies... done!


[nomerge ] x11-base/xorg-server-1.5.3-r1 USE="hal nptl sdl xorg -3dfx -debug -dmx -ipv6 -kdrive -minimal -tslib" INPUT_DEVICES="keyboard mouse -acecad -aiptek -calcomp -citron -digitaledge -dmc -dynapro -elo2300 -elographics -evdev -fpit -hyperpen -jamstudio -joystick -magellan -microtouch -mutouch -palmax -penmount -spaceorb -summa -synaptics -tek4957 -tslib -ur98 -vmmouse -void -wacom" VIDEO_CARDS="nv nvidia -apm -ark -ast -chips -cirrus -cyrix -dummy -epson -fbdev -fglrx -geode -glint -i128 -i740 (-impact) -imstt -intel -mach64 -mga -neomagic (-newport) -nsc -r128 -radeon -radeonhd -rendition -s3 -s3virge -savage -siliconmotion -sis -sisusb (-sunbw2) (-suncg14) (-suncg3) (-suncg6) (-sunffb) (-sunleo) (-suntcx) -tdfx -tga -trident -tseng -v4l -vermilion -vesa -vga -via -vmware -voodoo -xgi" 
[ebuild N ] sys-apps/hal-0.5.11-r6 USE="X acpi crypt -apm -debug -dell -disk-partition -doc -laptop (-selinux)" 
[ebuild N ] dev-python/pyxf86config-0.3.34-r1 
[ebuild N ] x11-base/xorg-server-1.5.3-r1 USE="hal nptl sdl xorg -3dfx -debug -dmx -ipv6 -kdrive -minimal -tslib" INPUT_DEVICES="keyboard mouse -acecad -aiptek -calcomp -citron -digitaledge -dmc -dynapro -elo2300 -elographics -evdev -fpit -hyperpen -jamstudio -joystick -magellan -microtouch -mutouch -palmax -penmount -spaceorb -summa -synaptics -tek4957 -tslib -ur98 -vmmouse -void -wacom" VIDEO_CARDS="nv nvidia -apm -ark -ast -chips -cirrus -cyrix -dummy -epson -fbdev -fglrx -geode -glint -i128 -i740 (-impact) -imstt -intel -mach64 -mga -neomagic (-newport) -nsc -r128 -radeon -radeonhd -rendition -s3 -s3virge -savage -siliconmotion -sis -sisusb (-sunbw2) (-suncg14) (-suncg3) (-suncg6) (-sunffb) (-sunleo) (-suntcx) -tdfx -tga -trident -tseng -v4l -vermilion -vesa -vga -via -vmware -voodoo -xgi" 

 * Error: circular dependencies:

('ebuild', '/', 'x11-base/xorg-server-1.5.3-r1', 'merge') depends on
 ('ebuild', '/', 'sys-apps/hal-0.5.11-r6', 'merge') (hard)
('ebuild', '/', 'sys-apps/hal-0.5.11-r6', 'merge') depends on
 ('ebuild', '/', 'dev-python/pyxf86config-0.3.34-r1', 'merge') (hard)
('ebuild', '/', 'dev-python/pyxf86config-0.3.34-r1', 'merge') depends on
 ('ebuild', '/', 'x11-base/xorg-server-1.5.3-r1', 'merge') (hard)

 * Note that circular dependencies can often be avoided by temporarily
 * disabling USE flags that trigger optional dependencies.

作者: LongerZ   发布时间: 2009-02-03

USE标记一开始加太多,这就是必然结果
bootstrap知道吧
先有鸡还是先有蛋

作者: zhllg   发布时间: 2009-02-03

USE="-hal" emerge xorg-server
不过你好像应该emerge xorg-x11

作者: harttmann   发布时间: 2009-02-03

引用:
作者: zhllg
USE标记一开始加太多,这就是必然结果
bootstrap知道吧
先有鸡还是先有蛋
恩,现在认真想想,还是想见得到的。bootstrap指的是系统的引导过程?

引用:
USE="-hal" emerge xorg-server
不过你好像应该emerge xorg-x11
-hal倒没试过,-X可以就没再试了;xorg-x11在gentoo里好像只是一个虚拟包。

作者: LongerZ   发布时间: 2009-02-03

广义的bootstrap,指的是从无到有的一个过程
如果一个系统各种组件齐备,那么怎么也不会出现循环依赖

作者: zhllg   发布时间: 2009-02-03

bootstrap, 從字面上, 就是說 "你自己抓著自己的頭發把自己的身體提起來"
好玩吧, 你可以試試 ~~~
所以中文也有譯作"自舉"

打個比方,

你要過對岸,要用到船,但船放在對岸那邊

這個形成了簡單的bootstrap了

用在解釋emerge時加開始USE加太多,但A的USE標志需要用來B軟件來安裝,而B軟件又依賴于C, 但很不幸,C軟件要用到A這個USE標志 @@ !!! , 這樣你遇到的情況就出現了

作者: gogonkt   发布时间: 2009-02-03

这个问题前几天刚有人提过...

在置顶帖里早就有解决办法

作者: kimux   发布时间: 2009-02-03

正確來說, emerge的提示信息中有說到哪裏找解決辦法,并給出網址的 - -!!!

作者: gogonkt   发布时间: 2009-02-03

还真是有趣,学习了。

作者: jl789   发布时间: 2009-02-03

LZ还是先基础编译
# cd /usr/portage
# scripts/bootstrap.sh
# source /etc/profile
然后emerge -e system
再安装。这里就不要再使用use。
等到重启进入安装x等大软件的时候加USE比较好!

作者: xiaorui   发布时间: 2009-02-03

引用:
作者: zhllg
USE标记一开始加太多,这就是必然结果
bootstrap知道吧
先有鸡还是先有蛋
这里我想问下。是在安装系统过程中先更新base系统的程序。把gcc等升级最新版本再安装kernel,还是安装handbook上安装重启后再升级呢?》

作者: xiaorui   发布时间: 2009-02-03

看个人喜好,无所谓

作者: zhllg   发布时间: 2009-02-03

我遇到的情况是ACCEPT_KEYWORDS="x86 ~x86"的原因,去掉不稳定分支
改成ACCEPT_KEYWORDS="x86"后就没有问题了,还有,如果不支持X的话,能好用吗?

作者: zxbing   发布时间: 2009-02-04

只是暂时的
等装上了想装的包,再加上想加的USE标记

作者: zhllg   发布时间: 2009-02-04

热门下载

更多