# apache + libexpat.so.0 - гм?

## Balancer

Ну, ладно. Обновление libexpat на десктопе мы пережили. Но сейчас на сервере (вернее - сразу на двух) наткнулся на такую проблему. При попытке выполнения apache2 вываливается известное сообщение про libexpat.so.0. Прекрасно. Пересобираем. /usr/bin/apache2 обновился. Запускаем... "/usr/sbin/apache2: error while loading shared libraries: libexpat.so.0: cannot open shared object file: No such file or directory". Пересобираем - пофиг. Естественно, revdep-rebuild до потери пульса. И даже 

ruby /usr/share/paludis/ruby/demos/check_linkage.rb --pretend - всё пофиг.

Что за эзотерика? Почему apache2 собирается с неверным libexpat?

----------

## calculator

```
# ldd /usr/sbin/apache2
```

видимо говорит что файла нет. Просто симлинки можно сделать для того что ему не хватает. Почему revdep-rebuild не цепляет сложно сказать. Может ~/.revdep-rebuild* почистить?

----------

## Balancer

Я revdep-rebuild всегда с -i запускаю. Ну и paludis'овский аналог гонял, тот кеши не использует.

Сейчас пересобирается по emerge -av `equery -q d dev-libs/expat|sed -r s/^/=/`, посмотрим, что выйдет...

----------

## ArtSh

Вы только сперва проверьте, что там со ссылками на эту библиотеку

----------

## _Sir_

Когда люди поймут, что XML=ZLO, не останется ни одной программы, которая бы его не использовала... И вот тогда, стоит только изменить парсер...  :Smile: 

Это я жду результата -- а то тоже надо сервера обновлять, а грабли лежат себе...  :Smile: 

----------

## ba

apr-util пересобери

----------

## Balancer

 *ba wrote:*   

> apr-util пересобери

 

Так при его сборке вызывается apache2  :Very Happy:  Так что apr-util  в такой ситуации не собирается.

Проблема решилась пересборкой всех пакетов, зависящих от expat.

----------

## ba

 *Balancer wrote:*   

>  *ba wrote:*   apr-util пересобери 
> 
> Так при его сборке вызывается apache2 :D Так что apr-util  в такой ситуации не собирается.

 

не правда, он является зависимостью для apache, так что апач для его сборки никак не нужен...

----------

## sa10

Кажется я успешно лечил по этому топику

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

```
#first, expat itself

emerge -u1 expat

#now some basic libraries that are needed for building stuff

emerge -1 gettext XML-Parser

#now, everything else that is broken

revdep-rebuild -Xp

revdep-rebuild -X 
```

----------

## fank

вот и я попался в эту ловушку!

в точности по сценарию первого поста

черт, стабильная (x86) система, называется...

proxy ~ # /etc/init.d/apache2 restart

 * Apache2 has detected a syntax error in your configuration files:

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

proxy ~ # ldd /usr/sbin/apache2

        linux-gate.so.1 =>  (0xffffe000)

        libz.so.1 => /lib/libz.so.1 (0xb7ef4000)

        libssl.so.0.9.8 => /usr/lib/libssl.so.0.9.8 (0xb7ebf000)

        libcrypto.so.0.9.8 => /usr/lib/libcrypto.so.0.9.8 (0xb7dbb000)

        libaprutil-0.so.0 => /usr/lib/libaprutil-0.so.0 (0xb7da8000)

        libgdbm.so.3 => /usr/lib/libgdbm.so.3 (0xb7da2000)

        libdb-4.3.so => /usr/lib/libdb-4.3.so (0xb7cd5000)

        libexpat.so.0 => not found

libapr-0.so.0 => /usr/lib/libapr-0.so.0 (0xb7cb9000)

        librt.so.1 => /lib/librt.so.1 (0xb7cb0000)

        libm.so.6 => /lib/libm.so.6 (0xb7c88000)

        libcrypt.so.1 => /lib/libcrypt.so.1 (0xb7c59000)

        libnsl.so.1 => /lib/libnsl.so.1 (0xb7c40000)

        libpthread.so.0 => /lib/libpthread.so.0 (0xb7c29000)

        libdl.so.2 => /lib/libdl.so.2 (0xb7c25000)

        libc.so.6 => /lib/libc.so.6 (0xb7adb000)

        libssl.so.0.9.8 => /usr/lib/libssl.so.0.9.8 (0xb7ebf000)

        libcrypto.so.0.9.8 => /usr/lib/libcrypto.so.0.9.8 (0xb7dbb000)

        libaprutil-0.so.0 => /usr/lib/libaprutil-0.so.0 (0xb7da8000)

        libgdbm.so.3 => /usr/lib/libgdbm.so.3 (0xb7da2000)

        libdb-4.3.so => /usr/lib/libdb-4.3.so (0xb7cd5000)

        libexpat.so.0 => not found

        libapr-0.so.0 => /usr/lib/libapr-0.so.0 (0xb7cb9000)

        librt.so.1 => /lib/librt.so.1 (0xb7cb0000)

        libm.so.6 => /lib/libm.so.6 (0xb7c88000)

        libcrypt.so.1 => /lib/libcrypt.so.1 (0xb7c59000)

        libnsl.so.1 => /lib/libnsl.so.1 (0xb7c40000)

        libpthread.so.0 => /lib/libpthread.so.0 (0xb7c29000)

        libdl.so.2 => /lib/libdl.so.2 (0xb7c25000)

        libc.so.6 => /lib/libc.so.6 (0xb7adb000)

        libexpat.so.1 => /usr/lib/libexpat.so.1 (0xb7abf000)

        /lib/ld-linux.so.2 (0xb7f0b000)

proxy ~ # equery b /usr/lib/libapr-0.so.0

[ Searching for file(s) /usr/lib/libapr-0.so.0 in *... ]

dev-libs/apr-0.9.12 (/usr/lib/libapr-0.so.0 -> libapr-0.so.0.9.12)

proxy ~ # emerge apr -pv

These are the packages that would be merged, in order:

Calculating dependencies... done!

[ebuild  NS   ] dev-libs/apr-1.2.8  USE="-debug -ipv6 -urandom" 1,082 kB

Total: 1 package (1 in new slot), Size of downloads: 1,082 kB

proxy ~ #

чет я не догоняю...

если туплю, прошу пардону, ночь не спал   :Embarassed: 

----------

## suslik

 *Balancer wrote:*   

> Ну, ладно. Обновление libexpat на десктопе мы пережили. Но сейчас на сервере (вернее - сразу на двух) наткнулся на такую проблему. При попытке выполнения apache2 вываливается известное сообщение про libexpat.so.0. Прекрасно.

 Гы ))) говорили-ж вам добрые люди - не используйте генту на сервере! ))) и что теперь делать? пересобирать по часу каждое приложение, а сервер тем временем будет простаивать??? ерунда какая-то! давно пора было об этом подумать и использовать на сервере исключительно бинарные дистрибутивы, а гента - это для разработчиков линукс дистрибутивов.

----------

## _Sir_

1. Сервера бывают разные, а не только те, что обслуживают эмэском

2. Бинарные дистрибутивы никто не обновляет, их заменяют целиком раз в полгода, каждый раз покупая новую коробочку   :Laughing: 

3. Поклонникам красного ада -- чековую книжку в руки, и веру в могущество красноголовых  :Smile: 

4. Вам, уважаемый suslik, никто не мешает делать все, как Вам нравится, но тема здесь немного иная -- не какой дистрибутив лучше, а как решить совершенно конкретную проблему. 

Примерно так. Учитывая, что это довольно редкий и быстро проходящий (в отличие от опять-таки, бинарных дистров) случай.

----------

## Laitr Keiows

 *ba wrote:*   

> apr-util пересобери

 

dev-libs/apr-util в слоты ставится. Пересобирать нужно старую версию, например как у меня:

```
emerge -va1 =dev-libs/apr-util-0.9.12-r1
```

----------

## fank

 *Quote:*   

> dev-libs/apr-util в слоты ставится. Пересобирать нужно старую версию, например как у меня:

 

да, я так и подумал

у меня все решилось revdep-rebuild

но очень пугает, что такие вещи случаются в стабильной ветке....

и еще...

ходит тут у меня идея в голове

на мой взгляд, в gentoo необходимо более настойчиво предупреждать администратора системы о таких процедурах после обновления, вплоть до принудительного запуска revdep-rebuild

минимальным средством я считаю постоянные предупреждения, рассылаемые portage локальному root

наиболее подходящими средствами мне представляются два:

1. Предупреждения при логоне.

2. По почте, причем в данном случае ввести в практику обязательную настройку локальной почтовой системы.

хотя, конечно, может, я замахнулся слишком и все дело в элементарном моем неумении управлять системой, но если рассмотреть такую возможность, то как, например, я мог предотвратить такую ситуацию?

сделать quickpkg apache?

----------

## ba

 *fank wrote:*   

> то как, например, я мог предотвратить такую ситуацию?
> 
> сделать quickpkg apache?

 

скорее quickpkg expat тогда.

FEATURES="buildpkg" наверное самый правильный вариант, тк позволяет быстро откатиться... ну и когда машин несколько, то в качестве quick fix-а можно было просто с-scp-ить старую so-шку expat-а с соседней машины...

а вообще зачем постоянно обновлять сервера? имхо только то о чем glsa кричит обновлять и все... даже на бинарных дистрибах я не один раз напарывался на то что что-то сломали...

----------

## Laitr Keiows

 *fank wrote:*   

> хотя, конечно, может, я замахнулся слишком и все дело в элементарном моем неумении управлять системой, но если рассмотреть такую возможность, то как, например, я мог предотвратить такую ситуацию?
> 
> сделать quickpkg apache?

 

У меня несколько серверов прям в офисе стоит. Сервера это сильно сказано, просто компы под разработку используются. Вот на одном из них я все обновления проверяю. Если все прошло хорошо то обновляю дальше всюду. Следствие этого: обновляюсь не так часто как возможно, все больше glsa-chech -l affected пользую.

----------

## Balancer

 *suslik wrote:*   

> Гы ))) говорили-ж вам добрые люди - не используйте генту на сервере! ))) и что теперь делать? пересобирать по часу каждое приложение

 

Ну, во-первых, сервер может и не простаивать. Достаточно сделать только симлинк, а уже потом - играть с прочими настройками.

Во-вторых, меня-то это как раз не шибко коснулось, та как основные мощности крутятся не под Апачем, а в lighttpd.

В-третьих, суммарное время простоя машины из-за тех или иных проблем связанных с обновлением бинарного дистрибутива RH 7.3 у меня всё ещё на порядки превосходит время простоя, связанное с Gentoo  :Smile: 

Как тут уже было сказано - бинарные дистры это только когда раз в год-два будет меняться вся машина... Ещё добавлю - когда не требуется редкий и/или специфический софт.

...

В общем, я использовал бинарные дистрибутивы с 1997-го по 2003..2004 гг. Потом перешёл всюду на Gentoo - и не дай мне Бог снова вернуться на бинарники  :Very Happy: 

...

По сабжу - голову ломать не стал, пересобрал всё по emerge -av `equery -q d dev-libs/expat|sed -r s/^/=/`, благо на сервере такого софта немного.

----------

## fank

 *Quote:*   

> скорее quickpkg expat тогда. 

 

это просто я позволил себе немного иронии =)

конечно же, apache тут ни при чем и бинарный пакет должен делаться всегда

к слову, и сервер-то не шибком важный и тот час (слава богу в субботу, и слава богу у меня хватило мозгов настроить monit)  на пересборку ничего не решит

хотя мне представляется, что все же лучше делать бинарник сначала, а потом его ставить

а по поводу бинарный дистров, и, в частности, Debian, да - многое там сделано и предусмотрено, но есть 2 НО:

1. Черта с два я бы узнал, для чего нужен ldd, если б сидел на Debian.

2. Недавно получив крайне неприятную ситуацию неконсистентности базы о пакетах, мне пришлось потратить несколько часов, чтобы решить её, и я могу поклясться, что если до этого не юзал 3 года Gentoo, хрена б я разобрался так быстро. И то до конца не уверен, что сделал правильно.

 *Quote:*   

> а вообще зачем постоянно обновлять сервера? имхо только то о чем glsa кричит обновлять и все... даже на бинарных дистрибах я не один раз напарывался на то что что-то сломали...

 

да, этим давно переболел, так как дома нестабильная система, щас тока раз в несколько месяцев провожу тотальное обновление, сидя за компом и пристально наблюдая за процессом =) , преимущественно, потому, что диалап дома, и потому, что deltup постоянно горбится. Но опыт, полученный при работе с ~x86 считаю бесценным =). Разве что сырцы сам не правил, просто потому что C не знаю =).

----------

## sa10

Починил еще несколько серверов

Начинаем с 

```
emerge expat
```

По завершении он посоветует сразу сделать

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

Но я предварительно сделал

```
emerge -1 gettext XML-Parser
```

и удалил хвосты прежних разборок с revdep-rebuild

```
rm /root/.revdep*
```

Ну и потом 

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

Он будет брыкаться, махать красным флагом что

```
*** /usr/lib/libaprutil-0.so.0.9.12 not owned by any package is broken! ***
```

Но пересоберет все что надо и наступит щастье.

Я не держу на серверах ~x86, но у меня нет ни одной системы  где бы не были нужны пакеты из нестабильных веток.

flagedit в руки и вперед...

А вот скажите кто нибудь, что будет в дебиане (я редко с ним работаю) если я попытаюсь поставить пакет который потянет за собой обновление либ до версий несовсетимых с другими пакетами? Или просто другие пакеты залинкованы на другие (отсутствующие) версии.

Разве они не посыпятся, или там это как то разруливается ?

----------

## ba

 *sa10 wrote:*   

> А вот скажите кто нибудь, что будет в дебиане (я редко с ним работаю) если я попытаюсь поставить пакет который потянет за собой обновление либ до версий несовсетимых с другими пакетами? Или просто другие пакеты залинкованы на другие (отсутствующие) версии.
> 
> Разве они не посыпятся, или там это как то разруливается ?

 

ну если ты возьмешь пакет от другой версии дистриба, то конечно... но тут уж сам виноват :)

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

в анстейбле и тестинге тоже стараются поддерживать целостность, но в определенный момент времени оно может быть сломано...

----------

## sa10

 *ba wrote:*   

> 
> 
> ну если ты возьмешь пакет от другой версии дистриба, то конечно... но тут уж сам виноват 
> 
> 

 

То то и оно, что нельзя ветки смешивать.

И почему виноват? Я просто хочу иметь стабильную систему и свежайшие версии отдельных софтов которые не могут повлиять на надежность или стабильность системы в целом. 

Но это все как бы не совсем  в тему, проблема с libexpat возникла в генте в пределах одной ветки дистрибутива. Это нехорошо.

----------

## ba

 *sa10 wrote:*   

> Я просто хочу иметь стабильную систему и свежайшие версии отдельных софтов которые не могут повлиять на надежность или стабильность системы в целом.

 

собираешь тогда deb-ку сам и все...

сорри за офтоп

----------

## sa10

 *ba wrote:*   

> 
> 
> собираешь тогда deb-ку сам и все...
> 
> 

 

Ага и в красненькую книжечку записываешь - в этом сервере я поставил две дебки, надо бы не забыть проследить за обновлениями...

И в синенькую книжечку - надо не забыть про красненькую... Не все же комп может сделать

 :Rolling Eyes: 

 за офтоп не бейте .... 

----------

## ba

 *sa10 wrote:*   

> Ага и в красненькую книжечку записываешь - в этом сервере я поставил две дебки, надо бы не забыть проследить за обновлениями...

 

если для тебя свежайшие версии этого софта так критичны - почему бы и нет...

----------

## fank

насчет демьяна...

deb там нормально отслеживается в системе, то есть удалить обновить можно

правда, опять ручками, потому как в оф репозитарии лежат все сведения об обновлениях

правда горб с базой я получил когда вручную его пытался поставить, слив с оффсайта

зависимости там тоже нормально разруливаются, когда спорная ситуация - админа спросят

если ставишь пакет вручную, то и зависимости придется ставить тоже вручную

вроде, так...

----------

## fank

 *Quote:*   

> если для тебя свежайшие версии этого софта так критичны - почему бы и нет...

 

а почему бы и не в крон запихнуть?

кстати, вопрос для ЧАВО....

я имею в виду сабж, конечно же

Вопрос:

После обновления системы получаю сообщение при работе/старте различных сервисов, например, 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

```

----------

## Laitr Keiows

 *fank wrote:*   

> кстати, вопрос для ЧАВО....
> 
> я имею в виду сабж, конечно же
> 
> 

 

Очень просто:

https://forums.gentoo.org/posting.php?mode=reply&t=556773

----------

