On Wed, Oct 19, 2016 at 01:55:23PM -0400, Kevin P. Neal
wrote:> On Wed, Oct 19, 2016 at 10:08:04AM +0100, Matthew Seaman wrote:
> > On 2016/10/19 09:55, Matt Smith wrote:
> > > On Oct 19 10:38, Miroslav Lachman wrote:
> > >> Jonathan Haack wrote on 2016/10/19 10:09:
> > >>> Awe geez ... pkg won't work ... says "shared
object "libssl.so.7" not
> > >>> found, required by "pkg"
> > >>
> > >> Do not panic, just run pkg-static to upgrade pkg it-self
> > >>
> > >> /usr/local/sbin/pkg-static install -f pkg
> > >>
> > >
> > > I think that these instructions should be in the announcement
release
> > > notes as this question comes up a lot. The notes just say
something like
> > > "upgrade all your packages". Most people will then just
try and run pkg
> > > upgrade and get that error without knowing how to solve it.
It's not
> > > intuitive unless you have come across this before.
> >
> > pkg(8) does have a built-in warning when it detects an OS major
version
> > upgrade, which is to do a forced upgrade of pkg(8) so it matches the
ABI
> > versions of system shlibs. Did that warning appear in this case?
>
> Loading of shared libraries generally happens before main() is entered.
> It follows that pkg wouldn't have a chance to do anything useful before
> dying if a library is missing.
Hi,
I don't think this is strictly true
On one of my systems at least (10.x), the main pkg binary is in
/usr/sbin which is a shim which either offers to install a full
pkg binary or calls the full pkg binary with whatever arguments you
passed it. The main pkg binary lives in /usr/local/sbin/pkg.
It seems it should be possible to add some kind of check to the
shim to "do the right thing" and offer to use pkg-static to
upgrade the main pkg binary if the dynamically linked one is
broken. Or maybe it should default to calling pkg-static instead
of pkg, which would prevent the problem in the first place.
Of course this assumes the user has /usr/sbin before /usr/local/sbin
on their path, but I suspect that is true in most cases
Regards,
Gary