Re: psql undefined symbol error on Ubuntu

Поиск
Список
Период
Сортировка
От Michael Wood
Тема Re: psql undefined symbol error on Ubuntu
Дата
Msg-id 5a8aa6680907091009h2d1bceb2s77ca50a70f5eefa5@mail.gmail.com
обсуждение исходный текст
Ответ на Re: psql undefined symbol error on Ubuntu  (Tom Lane <tgl@sss.pgh.pa.us>)
Ответы Re: psql undefined symbol error on Ubuntu  ("Harsha Hegde" <harsha.hegde@vonage.com>)
Список pgsql-novice
2009/7/9 Tom Lane <tgl@sss.pgh.pa.us>:
> Michael Wood <esiotrot@gmail.com> writes:
>> Google returns many results for the error
>> "/usr/local/lib/libreadline.so.5: undefined symbol: PC".  It is not
>> clear to me why so many people encounter this error, though.
>
> Historically the problem with readline has been that it can function
> with either of two underlying libraries (termcap or ncurses, if memory
> serves) and somebody thought it would be a brilliant idea to postpone
> the decision to runtime.  Which meant that instead of having a package
> manager dependency on one or the other, libreadline packages were
> shipped with no explicit dependency on *either*.  Everything was fine
> if you actually had one of the two installed; if not, not so much.

OK, thanks for the explanation, but it still doesn't really explain
why so many people seem to have a broken libreadline in
/usr/*local*/lib :)

> Of course this approach is pretty idiotic in the context of modern
> package-manager-based distributions.  Red Hat started forcing a choice
> some years ago.  I'm not sure what Ubuntu does.  I suspect what the OP
> has got is one of these ill-considered packages with no hard dependency;
> but as you say, if it were an official Ubuntu package it wouldn't be
> installing into /usr/local.

Ubuntu appears to depend on libncurses:

$ apt-cache show libreadline5 | grep ^Depends
Depends: readline-common, libc6 (>= 2.6-1), libncurses5 (>= 5.6)

although dpkg supports dependencies which say that one package depends
on one of X or Y.

e.g. the dependencies for the gnome-desktop-environment package contains this:
totem-gstreamer (>= 2.22.2) | totem-xine (>= 2.22.2)

There's also another way to do this sort of thing.  Packages can say
what they provide, and that can be basically the name of the package,
or a sort of virtual package.  e.g. all MTAs on Debian and Ubuntu
provide "mail-transport-agent":

$ apt-cache show exim4-daemon-light | grep ^Provides
Provides: exim4-localscanapi-1.0, exim4-localscanapi-1.1, mail-transport-agent

so if another package depends on an MTA, but doesn't care which one,
it can just depend on mail-transport-agent.

I seem to remember RPM also supports this, so I don't see why anyone
would have decided not to depend on either one, unless it was possible
to use some of the functionality of libreadline without needing
ncurses or termcap.

> I don't have anything to add to your advice about how to fix it, just
> wanted to shed a bit of light on why readline has got a history of this
> kind of issue.

Thanks :)

--
Michael Wood <esiotrot@gmail.com>

В списке pgsql-novice по дате отправления:

Предыдущее
От: Michael Gould
Дата:
Сообщение: Re: Setting up security for development
Следующее
От: "Harsha Hegde"
Дата:
Сообщение: Re: psql undefined symbol error on Ubuntu