|
假设,
在系统中只有packageA提供的libA的情况下,安装packageX后libX会链接到libA;
在系统中同时有libA和和packageB提供的libB的情况下,安装packageX后libX会链接到libB。
那么,以如下顺序安装能使libX最终链接到libB么?
- emerge packageA
- emerge packageX
- emerge packageB
- revdep-rebuild
复制代码
这样的情况在gentoo中是存在的。xorg-x11包含的包里有20多个没有xcb相关的USE,但在安装时会根据系统中是否已经有了libxcb自动判断是链接到xcb还是其替代者。
如果哪位朋友还没有安装X,按以下顺序安装xorg就能发现这个问题。
- USE='xcb' emerge xorg-x11
复制代码
这时系统里有libxcb
- USE='-xcb' emerge -avuDN world
- emerge -a --depclean
复制代码
这会把libxcb和另外一两个包卸掉
做完这步后系统里是没有libxcb的。
有30个左右的包因为没有了xcb相关的共享库被重新emerge。
- USE='xcb' emerge -avuDN world
- emerge --depclean
- revdep-rebuild
复制代码
这次revdep-rebuild没有重新emerge任何包。做完这步后系统里有了libxcb,但最初链接到libxcb并在第一次revdep-rebuild时重新emerge的包现在链接到libxcb的替代品而不是libxcb。
总结。
我的看法是,即使系统的USE状态一样,但链接库的链接状态并不一定一样。revdep-rebuild没有超能力。 |
|