LinuxSir.cn,穿越时空的Linuxsir!

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

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

[复制链接]
发表于 2009-2-2 22:16:19 | 显示全部楼层 |阅读模式
这个问题今天让我遇到了,郁闷。问题已解决(经过尝试,去掉"X"的USE标记!)但是怎么会产生这种现象呢?
  1. Gentoo / # emerge xorg-server  -av
  2. * Overlay eclass overrides eclass from PORTDIR:
  3. *
  4. *   '/usr/local/overlays/xfce4.git/eclass/xfce4.eclass'
  5. *
  6. * It is best to avoid overriding eclasses from PORTDIR because it will
  7. * trigger invalidation of cached ebuild metadata that is distributed with
  8. * the portage tree. If you must override eclasses from PORTDIR then you
  9. * are advised to add FEATURES="metadata-transfer" to /etc/make.conf and to
  10. * run `emerge --regen` after each time that you run `emerge --sync`. Set
  11. * PORTAGE_ECLASS_WARNING_ENABLE="0" in /etc/make.conf if you would like to
  12. * disable this warning.
  13. These are the packages that would be merged, in order:
  14. Calculating dependencies... done!
  15. [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"
  16. [ebuild  N    ]  sys-apps/hal-0.5.11-r6  USE="X acpi crypt -apm -debug -dell -disk-partition -doc -laptop (-selinux)"
  17. [ebuild  N    ]   dev-python/pyxf86config-0.3.34-r1
  18. [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"
  19. * Error: circular dependencies:
  20. ('ebuild', '/', 'x11-base/xorg-server-1.5.3-r1', 'merge') depends on
  21.   ('ebuild', '/', 'sys-apps/hal-0.5.11-r6', 'merge') (hard)
  22. ('ebuild', '/', 'sys-apps/hal-0.5.11-r6', 'merge') depends on
  23.   ('ebuild', '/', 'dev-python/pyxf86config-0.3.34-r1', 'merge') (hard)
  24. ('ebuild', '/', 'dev-python/pyxf86config-0.3.34-r1', 'merge') depends on
  25.   ('ebuild', '/', 'x11-base/xorg-server-1.5.3-r1', 'merge') (hard)
  26. * Note that circular dependencies can often be avoided by temporarily
  27. * disabling USE flags that trigger optional dependencies.
复制代码
发表于 2009-2-2 22:38:38 | 显示全部楼层
USE标记一开始加太多,这就是必然结果
bootstrap知道吧
先有鸡还是先有蛋
回复 支持 反对

使用道具 举报

发表于 2009-2-2 22:43:35 | 显示全部楼层
USE="-hal" emerge xorg-server
不过你好像应该emerge xorg-x11
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-2-2 22:58:42 | 显示全部楼层
Post by zhllg;1943334
USE标记一开始加太多,这就是必然结果
bootstrap知道吧
先有鸡还是先有蛋

恩,现在认真想想,还是想见得到的。bootstrap指的是系统的引导过程?

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

-hal倒没试过,-X可以就没再试了;xorg-x11在gentoo里好像只是一个虚拟包。
回复 支持 反对

使用道具 举报

发表于 2009-2-2 23:16:50 | 显示全部楼层
广义的bootstrap,指的是从无到有的一个过程
如果一个系统各种组件齐备,那么怎么也不会出现循环依赖
回复 支持 反对

使用道具 举报

发表于 2009-2-2 23:32:31 | 显示全部楼层
bootstrap, 從字面上, 就是說 "你自己抓著自己的頭發把自己的身體提起來"
好玩吧, 你可以試試 ~~~
所以中文也有譯作"自舉"

打個比方,

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

這個形成了簡單的bootstrap了

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

使用道具 举报

发表于 2009-2-2 23:41:38 | 显示全部楼层
这个问题前几天刚有人提过...

在置顶帖里早就有解决办法
回复 支持 反对

使用道具 举报

发表于 2009-2-2 23:46:29 | 显示全部楼层
正確來說, emerge的提示信息中有說到哪裏找解決辦法,并給出網址的 - -!!!
回复 支持 反对

使用道具 举报

发表于 2009-2-3 10:21:29 | 显示全部楼层
还真是有趣,学习了。
回复 支持 反对

使用道具 举报

发表于 2009-2-3 11:16:36 | 显示全部楼层
LZ还是先基础编译
# cd /usr/portage
# scripts/bootstrap.sh
# source /etc/profile
然后emerge -e system
再安装。这里就不要再使用use。
等到重启进入安装x等大软件的时候加USE比较好!
回复 支持 反对

使用道具 举报

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

本版积分规则

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