Ubuntu для веб-разработчика или как заполучить GD bundled

Столкнулся недавно с интересной ситуацией: с пакетом php5.2.4-2ubuntu5.1 (свежайшая сборка php5, из имеющихся в официальном репозитории Ubuntu) библиотека GD идёт хоть и второй версии, но оригинальная, а не в том варианте, что поставляется в комплекте с php от его разработчиков (GD bundled). Последняя же умеет много чего полезного, например, позволяет использовать целый ряд дополнительных фильтров применительно к обрабатываемому изображению. Для веб-разработчиков — нужный функционал.

Как же получить требуемую версию библиотеки? Нашлось целых два непохожих варианта, о которых далее.

Первый вариант: собрать, а потом установить php5 из исходников с нужной версией библиотеки. Приступим. Для сборки нам потребуется несколько дополнительных утилит, так что установим их:
sudo apt-get install build-essential debhelper fakeroot

Теперь получим исходники php5:
cd /usr/src
sudo apt-get source php5

Получим все пакеты, необходимы для сборки php5:
sudo apt-get build-dep php5

Перейдём в директорию с нашими исходниками:
cd php5-5.2.3

Теперь нам и нужно указать, что php5 следует собрать с GD bundled. Для этого нужно отредактировать следующий файл:

sudo nano ./debian/rules

Теперь нужно найти в файле строку (в редакторе nano поиск запускается сочетанием Ctrl+W):
--with-gd=shared,/usr --enable-gd-native-ttf \

И заменить её на:
--with-gd=shared --enable-gd-native-ttf \

Теперь собираем пакет:
dpkg-buildpackage -rfakeroot

И устанавливаем его:
cd ..
dpkg -i php5-gd_5.2.4-2ubuntu5.1_i386.deb

Естественно, к тому моменту, как вы займетесь сборкой пакета версия у вас уже может быть другая. Указанная актуальна на момента написания этой заметки. Так что пакет, возможно, будет называться немного иначе.

После установки пакета достаточно перезапустить Apache, чтобы ваши скрипты смогли работать уже с новой библиотекой:
/etc/init.d/apache2 restart

С помощью php-файла с вызовом функции phpinfo() проверьте, на всякий случай, какая версия библиотеки теперь у вас имеется (см. значение GD version). Должно быть что-то вроде: bundled (2.0.34 compatible).

Второй способ ещё более прост. Предлагается воспользоваться сторонним репозиторием, где php5 (и за одно прочие составляющие LAMP-сервера) имеется в своей последней версией и уже с нужной LibGD.

Добавляем новый репозиторий, для этого в конец файла /etc/apt/sources.list дописываем:
deb http://dotdeb.debian.skynet.be/ stable all
deb-src http://dotdeb.debian.skynet.be/ stable all

Другие зеркала этого репозитория доступны на странице http://dotdeb.org/mirrors.

И обновляемся:
sudo aptitude update
sudo aptitude upgrade

Если вдруг вы столкнетесь с сообщением, вроде такого «The following packages have been kept back:» и далее перечисление пакетов, которые не будут обновлены, то вам необходимо попробовать разобраться с возникшими проблемами в зависимостях. Скорее всего, новый пакет зависит от другого нового пакета, который пока тоже отсутствует в вашей системе. Решается ситуация просто:
sudo aptitude dist-upgrade

На текущий момент в названном репозитории доступен php версии 5.2.6. После обновления не забудьте перезапустить Apache.

»

Оцените статью
Про Ubuntu — блог о популярном СПО GNU/Linux-дистрибутиве Ubuntu (Убунту Линукс)