Проблема с установкой PHP с поддержкой IMAP/Kerberos в Ubuntu 11

Я пытаюсь установить PHP на Ubuntu 11.04. Я компилирую из исходников.

Вот я устанавливаю зависимости:

apt-get -y install php5-dev php-pear
apt-get -y install libxml2-dev libevent-dev zlib1g-dev libbz2-dev libgmp3-dev libssl-dev libcurl4-openssl-dev libjpeg-dev libpng-dev libgd2-xpm-dev libmcrypt-dev memcached libmemcached-dev libc-client-dev libkrb5-dev

И вот мой скрипт настройки:

./configure --enable-fpm --enable-cli --with-fpm-user=php-fpm --with-fpm-group=php-fpm --prefix=/usr/local/php --exec-prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc --with-config-file-scan-dir=/usr/local/php/etc --enable-bcmath --enable-ctype --with-curl --with-curlwrappers --enable-dba --with-cdb --with-flatfile --with-inifile --enable-exif --enable-ftp --disable-fileinfo --with-gd --with-jpeg-dir --with-png-dir --with-zlib-dir --with-xpm-dir --with-ttf --with-freetype-dir --enable-gd-native-ttf --with-gettext --with-gmp --with-imap --with-imap-ssl --with-ldap --with-ldap-sasl --enable-mbstring=all --with-mcrypt --with-mhash --with-mysql --with-mysqli --with-pdo-mysql --with-openssl --with-kerberos --with-pspell --enable-shmop --enable-simplexml --with-snmp --enable-soap --enable-sockets --with-tidy --enable-wddx --enable-xmlreader --with-xmlrpc --with-xsl --with-zip --with-zlib --enable-sysvsem --enable-sysvshm

Однако я получаю сообщение об ошибке:

configure: error: Kerberos libraries not found.

  Check the path given to --with-kerberos (if no path is given, searches in /usr/kerberos, /usr/local and /usr )

Я не указал путь, но в моей системе нет такого каталога, как /usr/kerberos. Примерно через пять строк над ошибкой есть запись в журнале, которая говорит checking for IMAP Kerberos support... yes.

Нужно ли указывать каталог для --with-kerberos и каким именно будет этот каталог? Я был на этом весь день, и, кажется, не могу понять это.

Заранее спасибо.

РЕДАКТИРОВАТЬ:

Я смог решить эту проблему с помощью символической ссылки.

Ниже показано, что вы делаете перед запуском команды configure.

mkdir /usr/kerberos
ln -s /usr/lib/x86_64-linux-gnu /usr/kerberos/lib

Ваше здоровье.


person BannerMan    schedule 21.09.2011    source источник


Ответы (3)


Я имел дело с этой проблемой, устанавливая PHP 5.3.8 из исходного кода на Ubuntu 11.04. Я использовал:

./configure '--with-libdir=lib64' '--with-mysql=/usr' '--with-curl' '--with-imap' '--with-imap-ssl' '--with-kerberos' '--with-mhash=shared' '--with-gd' '--with-jpeg-dir' '--with-png-dir' '--with-zlib-dir' '--with-freetype-dir' '--with-mcrypt' '--with-mysqli' '--enable-gd-native-ttf' '--enable-calendar' '--enable-ftp' '--with-openssl' '--enable-pcntl' '--enable-soap' '--enable-sockets' '--enable-spl' '--enable-tokenizer' '--enable-wddx' '--with-apxs2=/usr/local/apache/bin/apxs' '--with-config-file-path=/usr/local/apache/conf'

и получал ту же ошибку:

configure: error: Kerberos libraries not found.

Проверьте путь, указанный для --with-kerberos (если путь не указан, ищите в /usr/kerberos, /usr/local и /usr )

Я понял, что мои установочные файлы kerberos находились в совсем другом каталоге /usr/lib/x86_64-linux-gnu. Я попробовал предложенный «--with-kerberos=/usr/lib/x86_64-linux-gnu», но, как предлагает одна из связанных страниц, поиск автоматически добавляет «lib» в конец предоставленного пути.

Как уже упоминалось, на одной из других страниц, связанных здесь, обсуждается, что сценарий автоматически добавляет «lib» в пути (поэтому без указания пути он ищет в /usr/kerberos/lib, /usr/local/lib и /usr /lib), но я не понял, что если вы используете "--with-libdir=lib64", это приводит к тому, что скрипт фактически ищет /usr/kerberos/lib64, /usr/local/lib64, /usr/ библиотека64).

Осознав это, я просто создал следующие символические ссылки и попытался снова, не указывая путь kerberos.

mkdir -p /lib/kerberos
ln -s /usr/lib/x86_64-linux-gnu/ /usr/kerberos/lib
ln -s /usr/lib64/x86_64-linux-gnu/ /usr/kerberos/lib64

Это сработало для меня. Надеюсь, это поможет кому-то еще.

person Kevin Gwynn    schedule 20.10.2011
comment
Большое спасибо, Кевин. Я на самом деле разобрался с проблемой некоторое время назад и забыл обновить это. Я сделаю это сейчас. Ваше здоровье. - person BannerMan; 21.10.2011

Поскольку у меня была эта ошибка и с 10.04, я решил также вставить свое решение. Может быть, это может помочь кому-то когда-нибудь. Запустив компиляцию на lucid, я изменил с --with-kerberos на with-kerberos=shared,/usr/lib. Похоже, это было все волшебство, поскольку компилятор пропустил lib64, упустив его.

person Chris    schedule 12.03.2012

Вы пробовали гуглить свое сообщение об ошибке? Эта страница кажется эффективное решение вашей проблемы.

" Я проверил свою систему и обнаружил, что библиотеки Kerberos были установлены в /usr/lib64. Поэтому я передал –with-kerberos=/usr/lib64 скрипту configure, но скрипт по-прежнему сообщал, что библиотеки Kerberos не могут быть найдены."

" На страницах вывода, которые заполнили мой терминал, я обнаружил, что скрипт configure добавлял "lib" к пути –with-kerberos, который я указал, поэтому он просматривал несуществующий "/usr/ lib64/lib". Однако я обнаружил, что могу изменить "lib" на "lib64", передав –with-libdir=lib64 скрипту configure.

person Anson    schedule 21.09.2011
comment
Да, я был на этой конкретной странице (после нескольких поисков в Google) и пробовал предложения, но это не сработало. Я пробовал /usr/lib64, /usr/lib, /usr/include, /usr/include/krb5 и один или два других, но это не сработало. Я не уверен, в чем проблема на данный момент. - person BannerMan; 21.09.2011
comment
Вы пробовали –-with-kerberos вместо –with-kerberos? Не знаю, опечатка на странице или нет. Исчезает ли ошибка «Проверить путь, указанный для --with-kerberos», когда вы вызываете скрипт с одним из этих параметров? Кроме того, где установлены ваши библиотеки kerberos? Вы можете выполнить dpkg -L имя_пакета, чтобы запросить расположение файлов, принадлежащих пакету. Кроме того, можете ли вы уточнить, что вы подразумеваете под тем, что это не сработало? - person Anson; 21.09.2011
comment
Хорошо, это не сработало, это означает, что я получаю ту же ошибку при компиляции, и я все еще там, где я есть. -with-kerberos — это опечатка, у меня на самом деле это --with-kerberos. Я получаю ошибку независимо от того, предоставляю ли я каталог или нет. Я попробовал dpkg -L kerberos и получил сообщение о том, что пакет kerberos не установлен. Означает ли это, что мне нужно установить его, и вы знаете, как я могу это сделать? - person BannerMan; 21.09.2011
comment
Ну, вам нужно указать точное имя пакета, когда вы делаете dpkg -L. Чтобы получить список установленных пакетов, вы можете использовать dpkg -l (нижний регистр l). man dpkg для получения дополнительной информации. Пакеты Kerberos обычно имеют в названии krb, поэтому вы можете запустить dpkg -l "*krb*". Пакет, для которого вы, вероятно, хотите получить расположение файлов, — это libkrb5-dev, который, похоже, вы установили в своей первой команде, но мы хотим точно знать, где он установлен, а не просто гадать. - person Anson; 22.09.2011
comment
Спасибо за помощь, я очень ценю это. Я сделал dpkg -L libkrb5-dev и получил длинный список файлов в нескольких каталогах, включая /usr/lib, /usr/bin, usr/include, /usr/lib/x86_64-linux-gnu. Есть ли конкретный файл или каталог, который я должен искать? - person BannerMan; 22.09.2011
comment
Мои ставки были бы на каталог, содержащий файлы .so (общий объект). После того, как вы это выясните, можете ли вы вставить команду, которую пытаетесь выполнить? - person Anson; 22.09.2011
comment
давайте продолжим это обсуждение в чате - person Anson; 22.09.2011