GIMP — это мощный редактор растровой графики с открытым кодом, основной конкурент Adobe Photoshop на платформах, где его нету. Да и там где есть, в принципе, тоже свою долю пользователей держит уверенно.
Я решил написать о том, как собрать актуальную версию GIMP (пользователи дистрибутивной версии вряд ли увидят эти изменения в скором времени), так как в ней появились интересные особенности, способные вызвать интерес и привлечь новых пользователей. GIMP стал ближе к пользователю, подробности под катом.
К тому же, библиотеки гимпа собираются через autogen, что позволит читателю в будущем не бояться исходников, в которых команда ./configure выдает Not Found.
Заодно, познакомлю Вас с такими вещами, как GIT и редко попадающимися в таких статьях ключами APT, способными сильно облегчить сборку приложения.
ОСТОРОЖНО: ТРАФИК!
Символы: $ и # в начале строки — это приглашение терминала. Вводить их перед командами не надо!
Установим компиляторы, с помощью которых и будем все собирать, GIT, для скачки исходников, а так же checkinstall, о котором попозже:
Как правило, пакет build-essential уже есть во всех актуальных debian дистрибутивах, но, если все же Вам не повезло, установите:
Создаем папку, где будем компилировать исходники, я создал compile в домашней директории:
Если Вы уже собирали ранее приложения, скорее всего, столкнулись с кучей зависимостей, которые пришлось вычленять по одной и долго и упорно докачивать. Процесс очень неприятный и способный вызвать у неподготовленного пользователя рвотные рефлексы. Чтобы облегчить себе участь, воспользуемся средствами дистрибутива, ведь пакет GIMP уже есть в репозитарии и его зависимости известны:
К сожалению нам потребуются более новые версии babl и gegl (0.1.0), так что соберем их перед GIMP, стоит заранее удалить все, что к нему относится:
на этом подготовка окончена, приступаем к получению исходников:
Исходники GIMP находятся по адресу:
git.gnome.org/cgit/gimp
так же нам понадобятся следующие библиотеки:
git.gnome.org/cgit/babl
git.gnome.org/cgit/gegl
GIMP использует GIT, поэтому и скачивать его будем GIT'ом:
Если Вы в дальнейшем захотите обновить исходники, перекачивать их полностью не придется. Простой войдите в папку compile/gimp и выполните:
если исходники обновлялись — скачаются новые изменения.
Итого, у нас в папке compile теперь есть 3 подпапки с исходниками: gimp gegl и babl
Поскольку GIMP зависит от GEGL и BABL, собирать его сейчас смысла нету, так как и библиотек этих тоже еще нет. Начнем с них.
Заходим в папку с исходниками и видим, знакомого и ожидаемого configure скрипта тут нету! Зато есть autogen.sh (он же buildconf), это скрипт, который подготовит исходники к сборке, как бы надстроечка, проверяющая систему сборки до configure и в дальнейшем его запускающая. Передаем ей те же опции, что и configure.
Конфигурация должна пройти успешно благодаря apt-get build-dep, выполненному в начале. Но, если вдруг возникли ошибки — стоит их исправить до сборки. Если в конце мы видим: Now type 'make' to compile BABL — все прошло успешно.
Если у Вас многоядерный процессор, не стоит использовать make в 1 поток. К примеру у меня QUAD-CORE и я буду использовать 4:
это позволит существенно ускорить процесс.
Смотрим внимательно последние строки, если появилось нечто подобное (ошибка вызвана искусственно, как правило 90% именно такие):
то ищем пакет с нужным файлом и устанавливаем:
Если не видим там Error — все прошло успешно:
Теперь соберем DEB пакет и установим его. В этом нам поможет CHECKINSTALL (запускайте его с привилегиями, достаточными для установки: либо под юзером root, либо с sudo).
-S Создать Slackware пакет
-R Создать RPM пакет
-D Создать Debian пакет
Нас просят ввести описание, его можно взять из README, либо придумать самому.
Как только Вы введете описание — нажмите 2 раза Enter и попадете на следующую табличку:
ОБЯЗАТЕЛЬНО! должна быть версия пакета и релиз. В противном случае пакет не соберется вообще. Лучше привести поля к такому же виду, как на скрине. Далее просто жмем Enter и checkinstall собирает пакет.
Часто при сборке пакета появляются 2 вопроса:
советую отвечать так же. Обычно это временно созданные библиотеки, которые к работе приложения отношения иметь уже не будут и устанавливаться будут в папку сборки, чего нам не нужно.
Итак, мы получили DEB пакет! Просто устанавливаем его:
Все то же самое делаем с GEGL. Так же после сборки его устанавливаем.
Теперь мы готовы к сборке самого GIMP!
заходим в его папку и выполняем:
Компиляция будет достаточно длительной, так как GIMP гораздо крупнее библиотек.
Устанавливаем gimp и запускаем командой:
Перед нами первозданный GIMP в режиме SDI (Single Document Interface), а теперь то, ради чего я все это затеял!
В Gimp 2.7 появился режим MDI! Просто идем в Окна -> Однооконный режим
И видим перед собой:
Расставляем панели инструментов как больше нравится, так же хочу отметить удобный список открытых изображений в виде превью сверху:
Я не являюсь противником SDI, но при отсутствии тайлового менеджера окон, MDI лично для меня более удобен. К тому же, привыкшие к Photoshop люди будут не так сильно шарахаться от внешнего вида приложения.
Так же не забывайте что это очень нестабильный релиз, иногда могут возникнуть проблемы — не стоит удивляться. От себя добавлю что падений и нерабочих фильтров не заметил, а вот при перезапуске он иногда теряет панели. Для этого стоит отключить режим одного окна, выбрать Окна — Панель инструментов и хотя бы одну большую, к примеру Параметры инструментов. После этого снова ключаем режим одного окна и все в порядке.
А теперь о полезности README файлов. В gimp/README есть пункт:
рассказывающий о том, что скопировав файл ~/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.: Желаю удачи!
Я решил написать о том, как собрать актуальную версию 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.: Желаю удачи!