Re: [gentoo-user] What is the definition of a gentoo binary package?

2015-05-30 Thread Alan McKinnon
On 30/05/2015 03:48, walt wrote:
 gory details of many frustrating hours of fighting with one particular
 gentoo package have been snipped to eliminate uncouth language
 
 I think of a gentoo binary package (e.g. oracle-jdk-bin) as an ebuild
 that fetches a file from somewhere, then merely unpacks that file and
 sticks the results in /opt/whatever.
 
 My experience today with libreoffice-bin has broken my mental model of
 how a gentoo binary package behaves.
 
 While trying to debug some broken behavior in the (non-binary) localc
 spreadsheet app, I decided to install libreoffice-bin as an experiment.
 
 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.)
 
 Any thoughts from you gentoo gurus would be most appreciated.


binary package is a fuzzy definition. It's a package that can be
compiled (i.e. not purely shell scripts) but for whatever reason that is
not viable for a large enough number of users. So a precompiled version
is made available, and this is what we call a binary.

Example reasons could be license restrictions that forbid redistributing
sources (eg nvidia-drivers), or the damn thing just takes too bloody
long to build (libreoffice).

Either way, a binary package still has to work in the larger Gentoo
ecosystem. It still has deps, blockers, even devs who commit bugs.

A completely self-contained package that can never interfere with
another package is NOT part of the definition, and reading between the
lines I think you might have a part of that thinking lurking around in
your mental model.

Binary packages are more prone to break stuff than non-binary packages
when viewing as a group. A binary package from a vendor may require
specific versions of deps, or require a dep be built with certain config
options for example - this can so easily interfere with what you already
have installed and your choice of USE. With source packages, we can
often work around this easily and patch stuff. With binary packages we
all too often cannot and are stuck.

Add in the Gentoo attitude where binary packages are the evil step-child
that only serve expediency and the devs mostly won't change things to
accomodate binary packages, and what you ran into is actually quite common.

If you want to use a binary package, be prepared to compromise and
change your system to accommodate it, as the other way round is often
unfeasible.


-- 
Alan McKinnon
alan.mckin...@gmail.com




Re: [gentoo-user] What is the definition of a gentoo binary package?

2015-05-30 Thread Rich Freeman
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



[gentoo-user] What is the definition of a gentoo binary package?

2015-05-29 Thread walt
gory details of many frustrating hours of fighting with one particular
gentoo package have been snipped to eliminate uncouth language

I think of a gentoo binary package (e.g. oracle-jdk-bin) as an ebuild
that fetches a file from somewhere, then merely unpacks that file and
sticks the results in /opt/whatever.

My experience today with libreoffice-bin has broken my mental model of
how a gentoo binary package behaves.

While trying to debug some broken behavior in the (non-binary) localc
spreadsheet app, I decided to install libreoffice-bin as an experiment.

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.)

Any thoughts from you gentoo gurus would be most appreciated.




Re: [gentoo-user] What is the definition of a gentoo binary package?

2015-05-29 Thread Andrew Savchenko
On Fri, 29 May 2015 18:48:55 -0700 walt wrote:
 gory details of many frustrating hours of fighting with one particular
 gentoo package have been snipped to eliminate uncouth language
 
 I think of a gentoo binary package (e.g. oracle-jdk-bin) as an ebuild
 that fetches a file from somewhere, then merely unpacks that file and
 sticks the results in /opt/whatever.
 
 My experience today with libreoffice-bin has broken my mental model of
 how a gentoo binary package behaves.
 
 While trying to debug some broken behavior in the (non-binary) localc
 spreadsheet app, I decided to install libreoffice-bin as an experiment.
 
 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.

As for terminology, there are two kinds of binary packages:
1) binpkg — (usually) user-build binary packages, just a tarballs
of source build packages. They are usufull for clustering, fast
deployment, fast downgrades and so on.
2) The same binpkg packages, but put into the portage tree for
specific hard to build packages, they usually have -bin suffix.
That is your case.

Best regards,
Andrew Savchenko


pgpE1rzm3lUeq.pgp
Description: PGP signature