shared library "pcre.0" does not exist

Hi,

I'm running freebsd FreeBSD 8.2.

I made a mistake when I updated my port devel/pcre, I did not preserve its old shared library before updating (with portmaster -w devel/pcre).

PCRE is updating in pcre-8.30 but php52-pcre-5.2.17_7 needs shared library pcre.0.

Code:
===>   Compressing manual pages for pcre-8.30
===>   Running ldconfig
/sbin/ldconfig -m /usr/local/lib
===>   Registering installation for pcre-8.30
===>   Returning to build of php52-pcre-5.2.17_7
Error: shared library "pcre.0" does not exist
*** Error code 1

How could I recover this library pcre.0?
 
Options:
  • Check whether portmaster created a backup package, which should be located in /usr/ports/packages/portmaster-backup as pcre-8.21_1.tbz. If it exists, pkg_delete the installed PCRE, and reinstall this package, and then use the proper portmaster -w command to upgrade PCRE. This will place the old pcre.0 as /usr/local/lib/compat/pkg/libpcre.so.0.
  • The binary package for the older version of PCRE is still available via [cmd=]pkg_add -r pcre-8.21_1[/cmd]. You can pkg_delete the new version, and then revert back to this package. Then upgrade using portmaster -w, as above.
  • Last option, and this is not the way you should be doing it, but you could get away with linking the old library to the new one. As I understand it from /usr/ports/UPDATING all dependent ports will be updated to point to the new library in the near future, so you may be able to keep working in the meantime by [cmd=]cd /usr/local/lib && ln -s libpcre.so.1 libpcre.so.0[/cmd] This may or may not lead to errors. Note that you should make a note of this and remove the link when all dependent packages are upgraded to use the new PCRE. Again: last option, try the previous ones first.
 
Probleme dependecies

Hi,

I choose the first option, I have a backup of pcre-8.21_1.tbz.

I have deleted pcre-8.30 whith
Code:
cd /usr/ports/devel/pcre
make deinstall
and
pkg_delete pcre-8.30

then I update PCRE with /usr/port/UPDATING recommendation.

Code:
portmaster -w devel/pcre

but my librairy is unchanged.

Code:
ll /usr/local/lib/compat/pkg/libpcre.so.0 368244 Feb  9 12:00

and php52-pcre-5.2.17_7 always claims pcre.0.

Code:
===>   Registering installation for pcre-8.30
===>   Returning to build of php52-pcre-5.2.17_7
Error: shared library "pcre.0" does not exist
 
pcre-8.30 undeleted

Code:
pkg_delete pcre-8.30
pkg_delete: package 'pcre-8.30' is required by these other packages
and may not be deinstalled:
cairo-1.10.2_3,1
gamin-0.1.10_4
gio-fam-backend-2.28.8
glib-2.28.8_4
gobject-introspection-0.10.8
libslang2-2.2.4_1
mc-4.7.5.5_1
munin-master-1.4.6
nginx-1.0.12_1,1
pango-1.28.4
pear-Auth_SASL-1.0.6
pear-Mail-1.2.0,1
pear-Net_SMTP-1.6.1
pear-Net_Socket-1.0.10
php52-dom-5.2.17_6
php52-filter-5.2.17_6
php52-mysqli-5.2.17_6
php52-spl-5.2.17_6
postfix-2.9.0_1,1
rrdtool-1.4.5

thaks a lot for your help
 
[SOLVED]: shared library pcre.0

Thanks a lot DutchDaemon and gkontos, I'm updating my port tree, lang/php52 need to be updated.

Then, I update my port.

(could you close my ticket, I don't find the command)
 
DutchDaemon said:
Options:
  • Last option, and this is not the way you should be doing it, but you could get away with linking the old library to the new one. As I understand it from /usr/ports/UPDATING all dependent ports will be updated to point to the new library in the near future, so you may be able to keep working in the meantime by [cmd=]cd /usr/local/lib && ln -s libpcre.so.1 libpcre.so.0[/cmd] This may or may not lead to errors. Note that you should make a note of this and remove the link when all dependent packages are upgraded to use the new PCRE. Again: last option, try the previous ones first.

Just at the moment, we can't build ImagMagick, because of the missing libpcre.so.0. Creating this link fixes it. Thanks for that, even if it is a dirty way to do the job. :stud
 
I just proceeded according to /usr/ports/UPDATING, and so far everything seems to work. Now of course, this brings up a few questions:

1. Is there any way to find out which applications still use the old library?
2. How do the applications know they're supposed to use the old one?

Thanks,
Frank,
"ein Auto das nicht fährt ouououououououuouououou" :)
 
Unfortunately, today showed what I think is the major weakness of the current ports system: I removed all ports/packages on an 8-stable system and attempted to rebuild it with portmaster (--packages-if-newer). Gnome2 wouldn't install because some things needed the pcre.0 library. So I tried to build everything from source, and Gnome2 wouldn't build for a different reason (can't remember what it was). So if I didn't have a set of packages I built a while ago I would have been dead in the water. Maybe I could have gotten the ports tree distributed with 9.0-RELEASE and built from that.

Everybody agrees that you can't use HEAD for production, but that is the situation we have with the ports tree. Perhaps something as simple as making snapshots of the ports tree available would help. Having a "known good" snapshot to roll back to when there are problems would be awesome.
 
I exited the /pcre upgrade with a tidy set of very long cli including /portmaster, that will save many hours monthly upgrading ports across several machines. So while it may be a difficulty (you may encounter it in a /gettext/ upgrade, for example, if one preplans enough it could be easy as anything, relatively speaking. (Albeit with shell scripting tricks learned from this and the other relevant forum.)
 
Code:
ncftp ftp://ftp.freebsd.org/pub/FreeBSD/ports/i386/packages-9-stable/devel 
devel> get pcre- [tab]
It shows pcre-8.30_1.tbz as there. So one can download it today.
 
Back
Top