Дано:FreeBSD 8.2-RELEASE (amd64)
dovecot-2.0.9
mysql-server-5.5.9
apache-2.2.17_1
roundcube-0.5.1,1Сервер/порты обновлены сегодня.
Когда захожу в куб, после ввода логина/пароля он несколько минут висит, потом снова "Добро пожаловать в Roundcube Webmail!"
В логах tail -n 100 /var/log/dovecot.log вижу:
Mar 10 10:58:53 auth: Error: /libexec/ld-elf.so.1: /usr/local/lib/mysql/libmysqlclient.so.16: version libmysqlclient_16 required by /usr/local/libexec/dovecot/auth not defined
Mar 10 10:58:53 master: Error: service(auth): child 48900 returned error 1
Mar 10 10:58:53 master: Error: service(auth): command startup failed, throttling
Не могу понять, что не доставилось/криво встало?
Обгуглил тему: народ жаловался на мускл 5.5.8 ...Спасибо!
> Сервер/порты обновлены сегодня.Как именно обновлены порты? Чем? С какими ключами?
>> Сервер/порты обновлены сегодня.
> Как именно обновлены порты? Чем? С какими ключами?сегодня еще раз прогнал cvsup. потом переустановил php, mysql client&server, потом еще от безвыходности делал
portupgrade -fb php5\* pecl\* (выгуглил это).сейчас
[root@imap /etc]# ls -al /usr/local/lib/php/20090626/
total 3788
drwxr-xr-x 2 root wheel 512 Mar 10 12:35 .
drwxr-xr-x 4 root wheel 512 Mar 10 12:28 ..
-r--r--r-- 1 root wheel 32970 Mar 10 12:32 bz2.so
-r--r--r-- 1 root wheel 20305 Mar 10 12:35 ctype.so
-r--r--r-- 1 root wheel 233607 Mar 10 12:33 dom.so
-r--r--r-- 1 root wheel 49344 Mar 10 12:34 filter.so
-r--r--r-- 1 root wheel 171638 Mar 10 12:29 hash.so
-r--r--r-- 1 root wheel 46690 Mar 10 12:35 iconv.so
-r--r--r-- 1 root wheel 121597 Mar 10 12:30 imap.so
-r--r--r-- 1 root wheel 215094 Mar 10 12:34 intl.so
-r--r--r-- 1 root wheel 39593 Mar 10 12:33 json.so
-r--r--r-- 1 root wheel 63346 Mar 10 12:32 ldap.so
-r--r--r-- 1 root wheel 1951508 Mar 10 12:30 mbstring.so
-r--r--r-- 1 root wheel 60902 Mar 10 12:31 mysql.so
-r--r--r-- 1 root wheel 144610 Mar 10 12:31 openssl.so
-r--r--r-- 1 root wheel 116826 Mar 10 12:29 pdo.so
-r--r--r-- 1 root wheel 40698 Mar 10 12:29 posix.so
-r--r--r-- 1 root wheel 28114 Mar 10 12:32 pspell.so
-r--r--r-- 1 root wheel 76329 Mar 10 12:31 session.so
-r--r--r-- 1 root wheel 60009 Mar 10 12:30 simplexml.so
-r--r--r-- 1 root wheel 19691 Mar 10 12:34 tokenizer.so
-r--r--r-- 1 root wheel 63094 Mar 10 12:31 xml.so
-r--r--r-- 1 root wheel 44239 Mar 10 12:33 xmlreader.so
-r--r--r-- 1 root wheel 61034 Mar 10 12:35 xmlwriter.so
-r--r--r-- 1 root wheel 106254 Mar 10 12:34 zip.so[root@imap /etc]# ls -al /usr/local/lib/mysql/
total 26670
drwxr-xr-x 3 root wheel 512 Mar 10 10:33 .
drwxr-xr-x 16 root wheel 4096 Mar 10 12:20 ..
-rw-r--r-- 1 root wheel 4831734 Mar 10 10:28 libmysqlclient.a
lrwxr-xr-x 1 root wheel 20 Mar 10 10:28 libmysqlclient.so -> libmysqlclient.so.16
-rwxr-xr-x 1 root wheel 3368264 Mar 10 10:28 libmysqlclient.so.16
lrwxr-xr-x 1 root wheel 16 Mar 10 10:28 libmysqlclient_r.a -> libmysqlclient.a
lrwxr-xr-x 1 root wheel 17 Mar 10 10:28 libmysqlclient_r.so -> libmysqlclient.so
lrwxr-xr-x 1 root wheel 17 Mar 10 10:28 libmysqlclient_r.so.16 -> libmysqlclient.so
-rw-r--r-- 1 root wheel 19028256 Mar 9 18:29 libmysqld.a
-rw-r--r-- 1 root wheel 4150 Mar 10 10:27 libmysqlservices.a
drwxr-xr-x 2 root wheel 512 Mar 10 10:33 plugin wheel 106254 Mar 10 12:34 zip.so
> Mar 10 10:58:53 auth: Error: /libexec/ld-elf.so.1: /usr/local/lib/mysql/libmysqlclient.so.16: version libmysqlclient_16 required by /usr/local/libexec/dovecot/auth not definedДовекот вполне отчетливо жалуется, что отсутствует libmysqlclient.so.16. Мне почему-то кажется, что тотальный снос довекота и полная его пересборка (и всех модулей, включая auth) проблему рассосет.
Рекомендую попробовать /usr/ports/ports-mgmt/portmanager
# portsnap fetch update && portmanager -u -uiЭто самый простой известный мне способ обновить порты и рекурсивно пересобрать все, что от них зависит. Правда, в текущей версии портманагер не умеет управляться с некоторыми метапортами, вроде apache-mpm, но это мелочи.
только что сделал
portupgrade -rf dovecot-2.0.9помогло ...
> только что сделал
> portupgrade -rf dovecot-2.0.9
> помогло ...Это плохо, что помогло. Это значит, что вы обновляете только узловые порты, но не обновляете ветки, от этого узла зависящие.
>> только что сделал
>> portupgrade -rf dovecot-2.0.9
>> помогло ...
> Это плохо, что помогло. Это значит, что вы обновляете только узловые порты,
> но не обновляете ветки, от этого узла зависящие.можно конкретнее?
portupgrade -Rr имя_порта ?
> можно конкретнее?
> portupgrade -Rr имя_порта ?Извините, я портапгрейдом не пользуюсь, мне не нравятся тяжелые зависимости, которые он тащит за собой. Соответственно, лучше мана не посоветую.
Легковесных решений два - portmaster и portmanager. Я использую оба вперемешку, потому что у них у каждого есть уникальный функционал. Если портманагер умеет сам вычислять дерево зависимостей и рекурсивно их пересобирать после обновления n+1 узла (portmanager -u), то портмастер обновляет только узлы (portmaster -aD), а ветви зависимостей приходится вычислять самостоятельно и обновлять вручную (portmaster -rR имя_обновленного_порта)
Например, портмастер умеет поправлять поля REQUIRED_BY после обновлений, и удалять из /usr/ports/distfiles старые дистрибы. Опять же, портмастер удобнее использовать в скриптах, чтобы слать на почту список доступных обновлений, например. Портманагер более интерактивен, и в нем удобнее обновлять установленные порты выборочно. Удалять порты мне удобнее связкой portmanager -slid && portmaster -s. Первая команда позволяет интерактивно грохнуть листовые порты, вторая автоматом чистит зависимости.
>[оверквотинг удален]
> сам вычислять дерево зависимостей и рекурсивно их пересобирать после обновления n+1
> узла (portmanager -u), то портмастер обновляет только узлы (portmaster -aD), а
> ветви зависимостей приходится вычислять самостоятельно и обновлять вручную (portmaster
> -rR имя_обновленного_порта)
> Например, портмастер умеет поправлять поля REQUIRED_BY после обновлений, и удалять из /usr/ports/distfiles
> старые дистрибы. Опять же, портмастер удобнее использовать в скриптах, чтобы слать
> на почту список доступных обновлений, например. Портманагер более интерактивен, и в
> нем удобнее обновлять установленные порты выборочно. Удалять порты мне удобнее связкой
> portmanager -slid && portmaster -s. Первая команда позволяет интерактивно грохнуть листовые
> порты, вторая автоматом чистит зависимости.спасибо за развернутый ответ! но ИМХО я привел нечто очень похожее ...
man portupgrade
...
-r
--recursive Act on all those packages depending on the given
packages as well.-R
--upward-recursive Act on all those packages required by the given
packages as well. (When specified with -F, fetch
recursively, including the brand new, uninstalled
ports that an upgraded port requires)кроме того, жизнь показывает, что даже при правильном использовании стандартных тулзов для портов бывают огрехи, косяки ...
вот например, мускл 5.5.8 косячный при стандартном обновлении ...
Главное - результат.
Еще раз спасибо!
> ИМХО я привел нечто очень похожее ...В вашем случае достаточно ключа -r - от узла и вверх. -R - это вниз от узла, к корню, это немножко оверкилл. Разве что обновится одновременно и нижележащий порт, и все равно его надо будет пересобирать. Но тогда проще с ключом -r пересобрать этот нижележащий порт.
Чем хорош портманагер - он сам выбирает рекурсивно, в какой последовательности пересобирать зависимые порты, чтобы обеспечить линковку.
В принципе, можно глянуть и вручную, вот так:
/usr/local/etc > pkg_info -r dovecot-1.2.16
Information for dovecot-1.2.16:
Depends on:
Dependency: mysql-client-5.1.55
Dependency: libiconv-1.13.1_1То-есть, если обновится мускль, то достаточно запустить
# portupgrade -rf mysql-client-5.1.55
и тогда обновится мускль, и рекурсивно все пакеты, которые от него зависят, будут пересобраны. И довекот в том числе.
> # portupgrade -rf mysql-client-5.1.55
> и тогда обновится мускль, и рекурсивно все пакеты, которые от него зависят,
> будут пересобраны. И довекот в том числе.-f - это ведь просто принудиловка? просто кому-то это не нужно, так?
> -f - это ведь просто принудиловка? просто кому-то это не нужно, так?Возможно. У каждого - свой экспириенс.