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

Reply via email to