pan-users
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Pan-users] ssl problems, not working on ports 443 or 563


From: Duncan
Subject: Re: [Pan-users] ssl problems, not working on ports 443 or 563
Date: Tue, 3 Apr 2012 08:05:50 +0000 (UTC)
User-agent: Pan/0.136 (I'm far too busy being delicious; GIT 72905f5 /st/portage/src/egit-src/pan2)

Joe Zeff posted on Mon, 02 Apr 2012 12:03:24 -0700 as excerpted:

> On 04/02/2012 11:46 AM, Duncan wrote:
>> On gentoo I build from sources, but I've not had dependency hell since
>> my Mandrake days, as there's usually at least a masked version of the
>> ebuild that I can unmask somewhere, that has all the deps listed.
> 
> I know that apt-get, the Debian/Ubuntu package manager, will resolve
> deps and bring them in as needed, as I've seen it happen on my sister's
> Ubuntu box.  And, yum, the Fedora equivalent, does the same.  I'm not
> familiar with gentoo, so I have to ask: doesn't your package manager
> take care of such things, or are you talking about building packages
> that are not from the gentoo repos?

Umm... somewhere along the line, one or both of us got off track.  I 
/thought/ what I wrote was perfectly clear, but obviously not, at least 
not to you, or your question either wouldn't be needed or would itself be 
clear to me as well.

So I'll try backing up a bit and do a retrace.  Let's see if that helps.

1) Bob is trying to build pan from current git sources (so presumably he 
has a pan package and its deps are installed, but any new deps in the git 
version are not).  It builds fine without SSL support (thus the original 
question, since he didn't know the ssl support wasn't built), but won't 
build with it as his gnutls is too old (that's a new dep, since the ssl 
support is new, no released version with it, yet).

2) So he needs a new gnutls to build the new pan with ssl support.  
Again, the package he has would take care of deps as of the old gnutls, 
but he needs a newer one for pan, with newer deps.

3) As it happens, one of those newer gnutls deps is nettle, and in gentoo 
(what I use here) as well, the "stable" gnutls was too old for pan.  They 
hadn't stabilized the newer gnutls due to API changes related to its new 
nettle dependencies.

I suspect that we're all clear to that point.

4) This is where I think the confusion may have started so I'll include a 
bit more detail this time around.  I don't know what distro bob is on but 
I'm presuming it's not the Gentoo ~arch (aka testing) that I run.  
Whatever it is, tho, they seem to be in about the same position Gentoo 
itself was a couple months ago when I went thru the gnutls upgrade in 
ordered to satisfy pan's new deps, myself.  Originally I left out a bit 
of gentoo detail as I doubted it mattered to him, but eh... throw it in 
this time and see if it clears things up.

5) On gentoo the in-tree available versions of gnutls and their stability 
level has changed since March 16:

2.10.x (2.10.5 currently, might have been 2.10.4 or whatever then):
No nettle required, stable for quite some time.  (This is what Dave S 
says is in Ubuntu latest, also.)

2.12.x (2.12.18 added in gentoo on March 16): Requires nettle AND p11-
kit.  In theory, it's still 2.x so should maintain API, but apparently 
there were some issues, as gentoo, and now it seems bob's distro... and 
dave shocket's (which he said is Ubuntu latest)... stuck at 2.10.x stable 
for quite some time.

Since March 16's gentoo addition of 2.12.18, various archs appear to be 
stabilizing on it, with about a third of them (including the big ones, 
amd64 and x86) now stable on 2.12.18, while the rest are still stable on 
2.10.5.

3.0.x (3.0.16 also gentoo-added on March 16): 3.x major version.  Gentoo 
has this available in-tree, but it's not stable yet, only ~arch 
(testing).  Before March 16's 3.0.16, 3.x was in-gentoo-tree but I 
believe hard-masked, not visible for installation even for ~arch users, 
unless they queried for it specifically, and deliberately unmasked it.

>From what I can see both from gentoo, and now from this thread I see the 
same in other distros, the 2.12 version is where a lot of the BIG changes 
occurred, including nettle and p11-kit dependencies, and really SHOULD 
have been 3.0.  The 2.x series should have remained stable at 2.10.x, 
without the nettle and p11-kit deps, which only should have been added 
for the 3.x series.

Oh, well, upstreams decide, distros (and end users advanced enough to 
care) have to cope with it.

6) Now, it should be mentioned that gentoo is both automated-from-source 
(end-user builds, but using an automated dependency tracking and build-
script system) and rolling distribution (no real distro version upgrades 
after installation, individual package upgrades are introduced and 
unmasked to ~arch, then to stable, over time).  Additionally, unlike a 
lot of distros but as can be seen from #4 above, it's the norm for 
multiple versions of a particular package to be in-tree at the same time, 
with various users on various versions, depending on whether they're 
~arch or stable (or even have unmasked hard-masked versions), their 
upgrade schedule and whether they religiously deep-upgrade (as I do), or 
only pull in dependency upgrades when some leaf package they've installed 
ups its dependency to require it, or the old versions get pruned from the 
tree.

7) On gentoo, ~arch (testing) is generally defined as upstream-stable, 
but gentoo-package testing, tho in practice, there's a bit of variance on 
that per individual package.  So with some exceptions, unless upstream 
defines it as stable, it's not even a candidate for ~arch and later 
stable.  Upstream development versions, betas and rcs are often available 
in-tree, but they normally remain hard-masked, only visible to those who 
deliberately unmask them for their own reasons.  Additionally, in many 
cases especially for major projects such as kde/gnome/xorg/mozilla, 
upstream unstable/development versions are not added to the main tree, 
but can be found in various overlays.  Often, the overlays have live-vcs-
version builds available as well, for the REALLY adventurous.  There's a 
few of them (hard-masked, of course) in the main tree, but not many.


***>>>
8) Dependency-wise, gentoo's ebuilds (the build-scripts for individual 
packages) specify all the usual dependency information, which is then 
automatically handled by the package manager.  That's why I said I'd not 
seen dependency hell since back when I was on Mandrake.  That's I guess 
the short and direct answer to your question, but it's not complete.
***<<<


9) Here, I normally run ~arch, but in addition to the main tree, have the 
kde, x11/xorg and mozilla (for firefox) overlays added, and routinely 
unmask various packages before they're unmasked in-tree.

For example, due to gentoo's build-from source, gcc is a critical system 
package, and it doesn't tend to be unmasked even to ~arch until it can 
build nearly everything at that stability level (so ~arch for me).  gcc 
4.6 still remains hard-masked, for instance, due to the fact that gentoo's 
still stable on grub-legacy (0.97 with a whole slew of patches), with 
grub2 packages in-tree but hard-masked, and there's apparently some 
blocking boot-bugs when grub-legacy is built with gcc-4.6.

But I unmasked gcc 4.6.2 a few months ago here and did a full rebuild.  
Everything I'm running (I've unmasked grub2 here) builds and appears to 
run fine with gcc 4.6.2.

Similarly, I unmasked and ran the kde 4.8 prereleases, betas 1 and 2, and 
rcs 1 and 2. (FWIW, kde 4.8.0 was released at the end of January, with 
4.8.1 a month later.  4.8.2 should be out this week.  So the pre-releases 
were late last fall and early winter.)  They were never in-tree at all as 
they're pre-releases and weren't stable candidates, but I'm running the 
kde overlay, which had them available.

***>>> (to end)
10) Because I'm always running at least ~arch, which by definition is 
gentoo testing level ebuilds for upstream stable, and am often 
deliberately unmasking the even less mature hard-masked versions, not 
even ~arch, while gentoo's ebuilds DO specify dependency information, at 
the immaturity level I run them, that dependency information isn't always 
100% current.

Thus, a more complete answer to your dependency question is yes, gentoo's 
package management deals with it in general, but at the immature package 
testing level I routinely run, those dependencies aren't 100% guaranteed 
to be current and upto date.  So I do very occasionally see too-low-a-
version errors when I try to build something.

However, because I DO religiously run deep upgrades (I don't ever NOT do 
deep upgrades and my own helper scripts all assume deep), in practice, I 
very seldom see such errors, because generally I've long since done that 
upgrade anyway.  Instead, I much more often see errors because I'm trying 
to run versions too new as I've unmasked something that's hard-masked 
precisely for that reason, an incompatible API change or the like, and 
either the deps are specified in the ebuild and I have to try to figure 
out how to get everything playing on either the old or new version, or 
they're not yet high-side version limited or patches applied to build 
with the new versions (I unmasked the still-masked version, not yet 
expected by the currently specified dependencies, after all), and I have 
to go looking for patches or unmasking sometimes live-vcs versions of the 
depending packages, in ordered to get everything working with the new 
versions.

But that's not dependency hell, since (1) it's almost always due to a 
deliberate unmask on my part, and (2) it's almost always only a single 
level of dependency changes I need to figure out.  Beyond that, generally 
I'm already updated, and/or the existing dependency specs are correct, so 
I don't get into the sort of recursive "but I can't build this because it 
depends on that, and I can't build that because it depends on something 
else, N levels deep" sort of situation that is normally referred to as 
"dependency hell".

11) Another contrast between gentoo and most distributions that helps 
with this sort of thing, is that since gentoo assumes build-from-source 
at the user end, it really doesn't make sense at all to try to split 
packages into run-time and development sub-packages.  IOW, there's no 
libXXXX-dev packages on gentoo, there's only the libXXXX package, 
including both the binary library and the related headers, *.pc files, 
etc, that are normally only required if you're building a package 
depending on that library.  Since in gentoo, EVERY package is assumed to 
be built from source, (almost, servant-ware binary-only packages are an 
exception) ANY package depending on that library would require the build-
time bits to build and install anyway, and why would someone only install 
the library, if they weren't going to be using it as a dependency for 
some other package.  On a source-based distro, it really doesn't make 
sense to split up packages into runtime and -dev sub-packages, so gentoo 
doesn't do so.

That alone seriously diminishes dependency hell issues, since it roughly 
halves the number of package dependencies required. No more having to 
track down libXXX-dev, even when one *IS* doing manual builds outside the 
package system, because if the library is installed, so are the bits of 
it normally found in the -dev package on binary-based distros. =:^)

12) So much for the general gentoo case, now we're back to the specific 
case at hand, pan from live-git-repo sources. =:^)

As mentioned above, only git-pan requires gnutls at all, and that only 
when the --with-gnutls configure option is enabled in ordered to handle 
secure connections.  FWIW, gentoo does have a live-git pan ebuild 
(pan-9999, in gentoo, -9999 versions are used for live-vcs packages) 
available, but it doesn't have a gentoo developer following things 
closely enough to keep up with deps like this.  As a result, I've 
customized my pan-9999, keeping it in my own personal overlay, where I 
can manage the deps changes myself.  I'd submit the changes back to 
gentoo, with optional deps changes hooked up to gentoo USE flags as 
necessary, and do occasionally do so (usually in relation to a release 
version bump), but generally only test the side of the option I'm 
interested in (in this case, --with-gnutls), not both sides, and 
sometimes don't even know how to properly define the mapping for both 
sides, so I'm afraid I'm not ready to be a proper proxy-maintainer of the 
gentoo pan-9999 ebuild yet -- my fixes only help on the one side, and 
require real gentoo developer help to get them setup for the other.

So of course, when git-pan's deps change, I'm making the changes to my 
ebuild to reflect them, myself.  The package management system obviously 
can't do that by itself, tho as with most distros, there's various 
maintainer tools available to help with the process.

But a lot of the time, I'm not even aware of minimum version requirement 
changes, because as I said, I routinely do deep upgrades myself, and with 
occasional exceptions like this gnutls thing, generally have well above 
minimal versions long since installed.  So usually, the only time I 
actually bump the in-ebuild deps is when Heinrich or someone mentions 
current deps on list, and I go back and compare what's in the ebuild 
against them, or when I sync to changes made in the gentoo ebuild since I 
last checked it, sometimes in preparation for submitting a gentoo pan 
package version-bump request, etc.

Of course right now, with gnutls being such a new dep, when the new pan 
version comes out this summer (assuming a continuation of the annual bump 
pattern, on or about August 1), if I file the version-bump request with 
gentoo, I'll probably have to say I don't know exactly how to specify the 
new deps and how to hook them up to the relevant SSL USE flag (there's no 
old one yet to pattern after).  Meanwhile, I haven't modified my ebuild 
at all for that, but instead, have a bashrc file setup that portage 
(gentoo's main PM and the one I use) will source before reading the 
ebuild, that adds the --with-gnutls option via an available user 
extension syntax.  ( EXTRA_ECONF='--with-gnutls' )  So the ebuild doesn't 
specify gnutls dependencies at all, I use the extension to inject the 
configure script option, and with that the configure script simply picks 
up the gnutls (3.0.16) I've manually unmasked and upgraded to.

13) But of course, most of that, being gentoo specific, was irrelevant to 
bob and dave, as dave's running ubuntu and bob's presumably not running 
gentoo either.  So I had skipped all that, apparently leaving you with 
the impression that gentoo's ebuilds don't handle deps automatically, 
even tho I specifically stated that I hadn't experienced dependency hell 
since my mandrake era, before I switched to gentoo.  I still don't quite 
understand how you got from that specific statement that I had NOT had 
dependency hell on gentoo, that it didn't handle the deps well, but since 
I had skipped the details as irrelevant in that context, I guess it must 
have been due to omitted information.

I trust that my usual information overload approach has corrected that 
problem now?  =:^)

14) Fully back to the thread topic, now.  Based on data from multiple 
distros now, it seems that gnutls 2.10.x has been where many stabilized, 
because 2.12.x and above require nettle and p11-kit.  Meanwhile, pan's 
new secure-connections feature requires the --with-gnutls configure 
option, which requires gnutls 2.12+ as earlier versions apparently didn't 
work so well in Heinrich's testing.

So it is that users trying that feature in git-pan are having to build a 
newer gnutls from sources, since their distros are still stabilized on 
2.10, and end up running into both the nettle and p11-kit recursive 
dependency issues when they do so.  Those in turn may recurse into 
further necessary updates, thus triggering "dependency hell", the seeming 
unending series of manual updates required just to build what was 
originally thought to be a single package update.

Luckily for me, most of the work was already done for me in gentoo and 
because I run quite new versions of everything anyway; I only had a 
couple unmasks to do, plus of course rebuilding a couple other packages 
that depended on gnutls after the upgrade, due to the ABI issues.  But 
I'd say about 95% of the complexity was already handled, and what wasn't, 
was a level of issue that I'm used to dealing with relatively routinely 
anyway, in my normal course of early unmaskings, running kde betas, etc.

People on the more ordinary binary distros, however, will be far more 
likely to have to deal with at least 20% of the issues manually (unless 
they're running redhat 5 or something, the packaging system will still 
deal with the majority of the problem, but it'll still look like 
dependency hell, especially to the uninitiated), where I had to deal with 
only perhaps 5%, and on average, they'll be less accustomed to dealing 
with that level of dependency resolution issue in the first place.  So 
they'll have perhaps 4X the exposed problem, but only be perhaps a third 
as well prepared to deal with it, resulting in an experience that's 
likely 4*3=12 times more difficult for them to deal with!

But I've seen suitably determined people bring even a redhat 5 system up 
to current kde, taking days of recursive dependency builds to even get 
kdelibs to build, but getting it done.  If a suitably determined person 
can do that, then surely, a suitably determined person can do the much 
less difficult as it's far closer to current, upgrade from pan 0.133+ to 
git-pan, and with it from gnutls 2.10 to at minimum 2.12, along with its 
recursive dependencies in turn.  There, there's only the two of them, 
nettle and p11-kit, the others are likely to be upto date, instead of the 
several dozen just to build kdelibs, that the poor guy upgrading that 
redhat system was dealing with!

-- 
Duncan - List replies preferred.   No HTML msgs.
"Every nonfree program has a lord, a master --
and if you use the program, he is your master."  Richard Stallman




reply via email to

[Prev in Thread] Current Thread [Next in Thread]