Pull to refresh

Собираем GIMP-2.7 из GIT своими руками

Reading time6 min
Views113
GIMP — это мощный редактор растровой графики с открытым кодом, основной конкурент Adobe Photoshop на платформах, где его нету. Да и там где есть, в принципе, тоже свою долю пользователей держит уверенно.



Я решил написать о том, как собрать актуальную версию GIMP (пользователи дистрибутивной версии вряд ли увидят эти изменения в скором времени), так как в ней появились интересные особенности, способные вызвать интерес и привлечь новых пользователей. GIMP стал ближе к пользователю, подробности под катом.

К тому же, библиотеки гимпа собираются через autogen, что позволит читателю в будущем не бояться исходников, в которых команда ./configure выдает Not Found.

Заодно, познакомлю Вас с такими вещами, как GIT и редко попадающимися в таких статьях ключами APT, способными сильно облегчить сборку приложения.

ОСТОРОЖНО: ТРАФИК!



Символы: $ и # в начале строки — это приглашение терминала. Вводить их перед командами не надо!

Подготовка



Установим компиляторы, с помощью которых и будем все собирать, GIT, для скачки исходников, а так же checkinstall, о котором попозже:

$ sudo apt-get install build-essential make checkinstall git-core

Как правило, пакет build-essential уже есть во всех актуальных debian дистрибутивах, но, если все же Вам не повезло, установите:

$ sudo apt-get install make checkinstall gcc g++ git-core

совет:

Если Вы не собираетесь останавливаться на GIMP и планируете в дальнейшем использовать «сторонний» софт, стоит так же установить эти пакеты:
scons cmake libc6-dev linux-headers-`uname -r` xserver-xorg-dev hgsvn cvs subversion
они не понадобятся сейчас, но в дальнейшем помогут сэкономить немного времени, к примеру при сборке video драйверов или установке vmware и ей подобных.


Создаем папку, где будем компилировать исходники, я создал compile в домашней директории:

$ mkdir ~/compile
$ cd ~/compile


Если Вы уже собирали ранее приложения, скорее всего, столкнулись с кучей зависимостей, которые пришлось вычленять по одной и долго и упорно докачивать. Процесс очень неприятный и способный вызвать у неподготовленного пользователя рвотные рефлексы. Чтобы облегчить себе участь, воспользуемся средствами дистрибутива, ведь пакет GIMP уже есть в репозитарии и его зависимости известны:

$ sudo apt-get build-dep libbabl-0.0-0 libgegl-0.0-0 gimp

К сожалению нам потребуются более новые версии babl и gegl (0.1.0), так что соберем их перед GIMP, стоит заранее удалить все, что к нему относится:

$ sudo apt-get remove gimp* libbabl* libgegl*

совет:

Используйте команду apt-cache showpkg gimp чтобы отслеживать зависимости пакетов.


на этом подготовка окончена, приступаем к получению исходников:

Получение исходников



Исходники GIMP находятся по адресу:
git.gnome.org/cgit/gimp

так же нам понадобятся следующие библиотеки:
git.gnome.org/cgit/babl
git.gnome.org/cgit/gegl

GIMP использует GIT, поэтому и скачивать его будем GIT'ом:
$ git clone git://git.gnome.org/gimp
$ git clone git://git.gnome.org/babl
$ git clone git://git.gnome.org/gegl




Если Вы в дальнейшем захотите обновить исходники, перекачивать их полностью не придется. Простой войдите в папку compile/gimp и выполните:
$ git pull
если исходники обновлялись — скачаются новые изменения.

Итого, у нас в папке compile теперь есть 3 подпапки с исходниками: gimp gegl и babl



Компиляция



совет:

читайте файлы, называющиеся прописными буквами. Как правило это: README, INSTALL, NEWS, HACKING или же немного измененные INSTALL.in или же README.linux. Как правило:
README — содержит информацию о приложении, ключах сборки, методах использования и др…
INSTALL — содержит рекомендации по сборке и установке приложения;
NEWS — список изменений от версии к версии;
HACKING — что можно поменять/перенастроить в процессе сборки или перед нею.

Поскольку GIMP зависит от GEGL и BABL, собирать его сейчас смысла нету, так как и библиотек этих тоже еще нет. Начнем с них.

совет:

Для всех приложений указывайте префикс: --prefix=/usr/local, обычно он по умолчанию, но бывают и исключения. Хорошим тоном считается не мусорить в системных директориях (/usr/bin /lib и др.) и все свои приложения и скрипты держать в /usr/local. Это позволит избежать конфликтов версий и других проблем.
Так же, перед сборкой смотрите ./configure --help на предмет других опций. К примеру в ГИМПе можно отключить или добавить систему печати и другие возможности. Советую использовать ключ "--enable-gimp-remote", он позволит открывать изображения по ссылке.


Собираем BaBL


Заходим в папку с исходниками и видим, знакомого и ожидаемого configure скрипта тут нету! Зато есть autogen.sh (он же buildconf), это скрипт, который подготовит исходники к сборке, как бы надстроечка, проверяющая систему сборки до configure и в дальнейшем его запускающая. Передаем ей те же опции, что и configure.

$ ./autogen.sh --prefix=/usr/local



Конфигурация должна пройти успешно благодаря apt-get build-dep, выполненному в начале. Но, если вдруг возникли ошибки — стоит их исправить до сборки. Если в конце мы видим: Now type 'make' to compile BABL — все прошло успешно.

Если у Вас многоядерный процессор, не стоит использовать make в 1 поток. К примеру у меня QUAD-CORE и я буду использовать 4:
make -j4
это позволит существенно ускорить процесс.

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



то ищем пакет с нужным файлом и устанавливаем:
$ apt-file search pygtk.h
python-gtk2-dev: /usr/include/pygtk-2.0/pygtk/pygtk.h
python-gtk2-dev: /usr/include/python2.4/pygtk-2.0/pygtk/pygtk.h
$ sudo apt-get install python-gtk2-dev


Если не видим там Error — все прошло успешно:



Теперь соберем DEB пакет и установим его. В этом нам поможет CHECKINSTALL (запускайте его с привилегиями, достаточными для установки: либо под юзером root, либо с sudo).
-S Создать Slackware пакет
-R Создать RPM пакет
-D Создать Debian пакет

совет:

Собирайте пакет с ключом --install=no, позволит избежать некоторых неприятных ситуаций. Установить пакет Вы сможете в любое время.


$ sudo checkinstall -D --install=no

Нас просят ввести описание, его можно взять из README, либо придумать самому.



Как только Вы введете описание — нажмите 2 раза Enter и попадете на следующую табличку:



ОБЯЗАТЕЛЬНО! должна быть версия пакета и релиз. В противном случае пакет не соберется вообще. Лучше привести поля к такому же виду, как на скрине. Далее просто жмем Enter и checkinstall собирает пакет.

Часто при сборке пакета появляются 2 вопроса:
Do you want me to list them? [n]: n
Исключить их из пакета? (ответить ДА-хорошая идея) [y]: y


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



Итак, мы получили DEB пакет! Просто устанавливаем его:
$ sudo dpkg -i libbabl_0.1.0-git-20091017_i386.deb


Все то же самое делаем с GEGL. Так же после сборки его устанавливаем.

Теперь мы готовы к сборке самого GIMP!

заходим в его папку и выполняем:
$ ./autogen.sh --prefix=/usr/local
$ make (или make -j4)
$ sudo checkinstall -D --intall=no


Компиляция будет достаточно длительной, так как GIMP гораздо крупнее библиотек.

Устанавливаем gimp и запускаем командой:
gimp-2.7



Перед нами первозданный GIMP в режиме SDI (Single Document Interface), а теперь то, ради чего я все это затеял!


В Gimp 2.7 появился режим MDI! Просто идем в Окна -> Однооконный режим


И видим перед собой:


Расставляем панели инструментов как больше нравится, так же хочу отметить удобный список открытых изображений в виде превью сверху:


Я не являюсь противником SDI, но при отсутствии тайлового менеджера окон, MDI лично для меня более удобен. К тому же, привыкшие к Photoshop люди будут не так сильно шарахаться от внешнего вида приложения.

Так же не забывайте что это очень нестабильный релиз, иногда могут возникнуть проблемы — не стоит удивляться. От себя добавлю что падений и нерабочих фильтров не заметил, а вот при перезапуске он иногда теряет панели. Для этого стоит отключить режим одного окна, выбрать Окна — Панель инструментов и хотя бы одну большую, к примеру Параметры инструментов. После этого снова ключаем режим одного окна и все в порядке.

А теперь о полезности README файлов. В gimp/README есть пункт:
4. Customizing
==============

The look of GIMP's interface can be customized like any other GTK app
by editing the ~/.gtkrc-2.0 file or by using «themes» (ready-made
customizations). For downloadable themes and further details, see
art.gnome.org/themes/gtk2. Additionally, GIMP reads the file
~/.gimp-2.7/gtkrc so you can have settings that only apply to GIMP.

Included is a set of keybindings similar to those in Adobe Photoshop.
You can find them in the ps-menurc file. To use them, copy this file
to ~/.gimp-2.7/menurc. You can also manually change the keybindings to
any of your choice by editing ~/.gimp-2.7/menurc.


рассказывающий о том, что скопировав файл ~/compile/gimp/etc/ps-menurc в ~/.gimp-2.7/.menurc мы получим хоткеи как в фотошопе. А так же можем изменить внешний вид ТОЛЬКО GIMP при помощи файла ~/.gimp-2.7/gtkrc

Update Не первый раз собираю эту ветку, поэтому забыл упомянуть об еще одном хорошем нововведении: группировка слоев!


так же хочу отметить, в GIMP основным форматом на сохранение стал XCF, а все остальное перенесли в File->Export (Ctrl+Shift+E), не пугайтесь, если увидите пустой список выбора файлов для сохранения.

Update 2: по просьбе добавляю собранные пакеты (debian sid, для убунты и lenny наверняка подойдут ± зависимости доставить):

GIMP
LibBABL
LibGEGL

P.S.: Мой никнейм к названию библиотеки babl отношения никакого не имеет. Все персонажи вымышлены, все совпадения с реальными личностями абсолютно случайны!

P.P.S.: Желаю удачи!
Tags:
Hubs:
Total votes 38: ↑35 and ↓3+32
Comments100

Articles