# Последние пробелемы -  libexpat.so.0 и другие

## fank

Вопрос:

После обновления системы получаю сообщение при работе/старте различных сервисов, например, apache: 

"/usr/sbin/apache2: error while loading shared libraries: libexpat.so.0: cannot open shared object file: No such file or directory"

Ответ:

Это происходит при обновлении expat с версий 1.х до версий 2.х. Нужно пересобрать несколько пакетов по нижеследующему сценарию:

```
#first, expat itself

emerge -u1 expat

#now some basic libraries that are needed for building stuff

emerge -1 gettext XML-Parser

#make sure that old revdep-rebuild stuff is removed

rm /root/.revdep*

#now, everything else that is broken

revdep-rebuild -Xp

revdep-rebuild -X --library libexpat.so.0

```

Источники:

https://forums.gentoo.org/viewtopic-t-575655.html

https://forums.gentoo.org/viewtopic-t-577453.html

----------

## user11

Вопрос:

При обновлении системы компиляция qt заткнулась на:

 *Quote:*   

> /usr/lib/gcc/i686-pc-linux-gnu/4.1.2/../../../../i686-pc-linux-gnu/bin/ld: warning: libexpat.so.0, needed by /usr/X11R6/lib/libfontconfig.so, not found (try using -rpath or -rpath-link)
> 
> /usr/X11R6/lib/libfontconfig.so: undefined reference to `XML_SetElementHandler'
> 
> ...
> ...

 

Ответ:

По-видимому, при обновлении системы исчез /lib/libexpat.so.0 (вероятно, просто обновился на libexpat.so.1), а от него зависит fontconfig. От fontconfig зависит qt. Однако, emerge решил обновлять qt сразу, не пересобирая fontconfig, и это ему не удалось. Лечение - пересобрать libfontconfig.so:

```
emerge -1 fontconfig
```

После этого сделать revdep-rebuild.

В моём случае это выглядело так:

```
emerge -NDu world 

emerge -1 fontconfig

emerge -NDu world

revdep-rebuild --library libexpat.so.0

```

Альтернативное решение: попробовать временно вернуть на место потерянную библиотеку (например, сделать на ёё месте символьную ссылку на новую библиотеку), дообновлять систему, а затем вычистить ссылки на старую библиотеку:

```
ln -s /lib/libexpat.so.1 /lib/libexpat.so.0

emerge -NDu world

revdep-rebuild --library=libexpat.so.0

rm /lib/libexpat.so.0
```

Вполне возможно, эти рецепты могут оказаться полезными и при других аналогичных проблемах.

Литература:

https://forums.gentoo.org/viewtopic.php?p=4224739 # мои личные грабленаступания

https://forums.gentoo.org/viewtopic-t-575655.html # более репрезентативный источник

man revdep-rebuild

----------

