# shared library "pcre.0" does not exist



## Lames (Feb 15, 2012)

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.


```
===>   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?


----------



## DutchDaemon (Feb 15, 2012)

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.


----------



## gkontos (Feb 15, 2012)

lang/php52  and www/apache22 have been updated also, therefore rebuilding both would be sufficient.


----------



## Lames (Feb 15, 2012)

*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 

```
cd /usr/ports/devel/pcre
make deinstall
and
pkg_delete pcre-8.30
```

then *I* update PCRE with /usr/port/UPDATING recomm*e*ndation.


```
portmaster -w devel/pcre
```

but my librairy is unchanged.


```
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.


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


----------



## Lames (Feb 15, 2012)

*pcre-8.30 undeleted*


```
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


----------



## gkontos (Feb 15, 2012)

You missed the part where you have to reinstall pcre-8.21_1.tbz before upgrading.


----------



## Lames (Feb 15, 2012)

*[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)


----------



## sowosammerneger (Feb 16, 2012)

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


----------



## fmw (Feb 22, 2012)

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"


----------



## kpa (Feb 22, 2012)

1. pkg_libchk() in sysutils/bsdadminscripts to find out missing libraries, ldd(1) to see what libraries are used.

2. The library and the version they are using is set to stone at time of linking of the application.


----------



## Uniballer (Feb 23, 2012)

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.


----------



## jb_fvwm2 (Feb 23, 2012)

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.)


----------



## cabriofahrer (Apr 14, 2012)

Well, are the 9-stable-packages compiled for the new pcre by now? Or how do we learn when they will be?


----------



## jb_fvwm2 (Apr 14, 2012)

```
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.


----------

