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 по дате отправления: