* [gentoo-user] What is the definition of a gentoo "binary" package? @ 2015-05-30 1:48 walt 2015-05-30 2:11 ` Andrew Savchenko 2015-05-30 7:49 ` Alan McKinnon 0 siblings, 2 replies; 4+ messages in thread From: walt @ 2015-05-30 1:48 UTC (permalink / raw To: gentoo-user <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. ^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [gentoo-user] What is the definition of a gentoo "binary" package? 2015-05-30 1:48 [gentoo-user] What is the definition of a gentoo "binary" package? walt @ 2015-05-30 2:11 ` Andrew Savchenko 2015-05-30 7:50 ` Rich Freeman 2015-05-30 7:49 ` Alan McKinnon 1 sibling, 1 reply; 4+ messages in thread From: Andrew Savchenko @ 2015-05-30 2:11 UTC (permalink / raw To: gentoo-user [-- Attachment #1: Type: text/plain, Size: 1794 bytes --] 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 [-- Attachment #2: Type: application/pgp-signature, Size: 819 bytes --] ^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [gentoo-user] What is the definition of a gentoo "binary" package? 2015-05-30 2:11 ` Andrew Savchenko @ 2015-05-30 7:50 ` Rich Freeman 0 siblings, 0 replies; 4+ messages in thread From: Rich Freeman @ 2015-05-30 7:50 UTC (permalink / raw To: gentoo-user On Fri, May 29, 2015 at 10:11 PM, Andrew Savchenko <bircoph@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 ^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [gentoo-user] What is the definition of a gentoo "binary" package? 2015-05-30 1:48 [gentoo-user] What is the definition of a gentoo "binary" package? walt 2015-05-30 2:11 ` Andrew Savchenko @ 2015-05-30 7:49 ` Alan McKinnon 1 sibling, 0 replies; 4+ messages in thread From: Alan McKinnon @ 2015-05-30 7:49 UTC (permalink / raw To: gentoo-user 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.mckinnon@gmail.com ^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2015-05-30 7:50 UTC | newest] Thread overview: 4+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2015-05-30 1:48 [gentoo-user] What is the definition of a gentoo "binary" package? walt 2015-05-30 2:11 ` Andrew Savchenko 2015-05-30 7:50 ` Rich Freeman 2015-05-30 7:49 ` Alan McKinnon
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox