On Fri, May 29, 2015 at 10:11 PM, Andrew Savchenko <birc...@gentoo.org> wrote: > On Fri, 29 May 2015 18:48:55 -0700 walt wrote: >> >> The libreoffice-bin package wanted to drag in dozens of other non-binary >> gentoo packages before it would install itself, and even caused a blocker >> between two different versions of poppler. (I said "no" because I thought >> the blocker would make the entire experiment fail in the end.) > > It requires many other packages because it was compiled with > specific versions of that packages. Of course that other packages > will be source ebuilds mostly. > > You have blockers because your current system have different > versions of some of that packages. These issues are usually solved > either via slot installs or update of your currently installed > system. Sometimes emerge -DNu @world may be needed. >
Just a bit more explanation... Binary distros, like Debian, typically solve this problem by using releases. In a release most packages have fixed versions, especially those which have many reverse dependencies, like core libraries. When Debian 9 is being prepared for release, somebody will decide that it will use poppler version 0.35 or whatever is in vogue at the time, and so on. Then all the maintainers will build all the packages that use it against poppler-0.35. This prevents the blocker situation that you're witnessing. If there is a later security patch, any fixes will be backported as needed so that they can stay with poppler-0.35 which prevents them from having to update dozens or hundreds of other packages in some kind of coordinated mini-release. Eventually a new release comes along, and they update all of their packages in lockstep to a new set of versions, so that they reach a new consistent depgraph. Of course, they can use the equivalent of slots as well, so for some libraries they may support more than one specific version, but it is still coordinated in this manner. With Gentoo we're spoiled by the ability to generally be able to install arbitrary pairings of package versions, since we build everything from source and emerge will link everything against whatever we're using. When we do change a key dependency, then a combination of slot-operator-deps, preserved-rebuild, and revdep-rebuild will rebuild everything that breaks. Of course, we're still limited by API-compatibility and feature use, which puts some constraints on what we can install. We're even more limited when braindead upstreams don't properly use SONAMEs and such, which creates blockers that can't be resolved using slots. However, in general we get a lot of flexibility, which lets us keep most packages closer to upstream and we don't have to packport fixes to poppler-0.35 for 3 years since we can just use poppler-0.36 instead, and so on. However, the moment you start installing packages that use precompiled dynamic binaries we become just like Debian, except we DON'T use releases and thus we don't guarantee tree-wide compatibility with a very specific version of every library. So, once you start installing these packages you're much more likely to run into blockers and other issues, especially if you have a fair number of them. They exist for convenience, but you'll never get the full "Gentoo experience" using them, and if you're really looking to use a lot of standardized binary packages for everything, well, you're probably better-off with a distro designed with that in mind (ie, basically everybody else). -- Rich