Сборка Krita под Linux для котанов

http://davidrevoy.com/article193/guide-building-krita-on-linux-for-cats
  • Перевод
  • Tutorial

Наконец, перевод очередной статьи от Давида Ревуа — прекрасного художника, использующего свободное программное обеспечение, а также постоянного члена сообществ Krita Foundation и Blender Institute. Мастер делится с начинающими художниками инструкцией по сборке самой свежей версии графического редактора Krita из исходных кодов. Он считает, что этот процесс на самом деле не так сложен и заковырист, как кажется на первый взгляд. Все этапы прекрасно проиллюстрированы. Приобщайтесь!

Вступление


Почти через год после того, как я выпустил Compilscripts на GitHub, я понял, что допустил ошибку. Сама идея подхода Compilscript оказалась неверной, поэтому я решил прекратить его поддержку

Что такое Compilscript ? 
Проект Compilscript был набором скриптов, помогающих пользователям собрать и установить Krita (последнюю версию для разработчиков) и осуществлять «автомагическое» техническое обслуживание программы. Скрипты достигли небольшого успеха. Я до сих пор горжусь тем, как много я узнал, пока его делал.

Что было не так?
Если случалось что-то необычное, то, чего я не учел, Compilscript выдавал ошибку и прекращал работу… А так как «необычности» — это обычное явление в Linux, пользователь сильно зависел от системы, которую не понимал. И когда она ломалась, она также ломала весь рабочий процесс пользователя, не оставляя ему возможности чего-либо исправить. Это не решение.

Новый подход
Поэтому я решил, что лучше всего путь Arch Linux не давать автоматического инструмента, но вместо этого создать документацию, позволяющую художнику с легкостью выполнить процесс самостоятельно и понять, что происходит. Художник должен иметь возможность произвести установку, обновление и, в случае если что-то не будет работать, вернуться к старой версии кода; всё это просто и легко сделать, используя инструкцию.

Всё проиллюстрировано
Также я предлагаю ряд иллюстраций о компиляции (распространяются под лицензией CC-By). Надеюсь, эти изображения помогут другим проектам стать более дружелюбными к пользователю и понятнее донести смысл через простую аналогию: кот строит домик.

Почему кот?
Потому что котиков хорошо знает весь Интернет: с котиками невозможно ошибиться.

Готовим директории



Первый обязательный шаг: подготовка места. Потребуется примерно 5GB свободного пространства в вашем домашнем каталоге. Мы будем использовать структуру, рекомендованную разработчиками:

/home/<имя-пользователя>/kde4/src для исходного кода
/home/<имя-пользователя>/kde4/build для сборки Krita
/home/<имя-пользователя>/kde4/inst для установки Krita

Примечание: в этой инструкции воспринимайте <имя-пользователя> как ваше имя пользователя (напр.: /home/deevad/kde4/src )

Чтобы сделать это, откройте Терминал, скопируйте строку (Ctrl+C) и вставьте в Терминал (Ctrl+Shift+V ):

mkdir -p ~/kde4/src ~/kde4/build ~/kde4/inst

Также проверьте в менеджере пакетов вашего дистрибутива, чтобы не были установлены пакеты calligra и krita. Используйте поиск по названию и, при необходимости, удалите их.

Получаем исходный код



Перейдите в папку, используя команду cd (change directory) и клавишу Tab для авто-дополнения названий.

cd ~/kde4/src

Установите git с помощью менеджера пакетов вашего дистрибутива.
Затем дайте git команду получить исходный код, вставьте в Терминале эту строку, находясь в директории ~/kde4/src:

git clone git://anongit.kde.org/calligra.git


Внимание! В настоящий момент (март 2015-го) в связи с переходом на Qt5 основная разработка Krita ведется в ветке calligra/2.9, поэтому сразу после получения исходных текстов необходимо переключить текущую ветку командами

cd ~/kde4/src/calligra
git checkout calligra/2.9


Получаем библиотеки и зависимости



Эта часть может быть сложноватой: каждый дистрибутив использует свой способ управления пакетами, поэтому устанавливаем библиотеки. Krita — часть Calligra, поэтому зависит от большого количества библиотек; и не всегда получается их установить одной командой. На некоторых дистрибутивах (Ubuntu, openSUSE) для этого есть основной мета-пакет, но на других — нет. Читайте официальную документацию по ссылке, чтобы уточнить код для автополучения необходимых библиотек. (Примечание: это ссылка на wiki-страницу, поэтому не стесняйтесь редактировать, добавлять, вносить правки, чтобы облегчить данный процесс другим пользователям.)

Если вашего дистрибутива нет в списке, перейдём к плану «Б» и будем искать пакеты по одному в вашем менеджере пакетов. Это звучит ужасно, но не должно занять слишком много времени. (Примечание: в некоторых дистрибутивах эти библиотеки называются по принципу: <имя-библиотеки>-dev или <имя-библиотеки>-devel ).

Этот список будет вам полезен:
git make cmake boost boost-build kdepimlibs eigen kdegraphics-okular
libgsf libwpd libwpg libwps pstoedit glew gsl automoc4 boost libkdcraw
libpqxx fftw opengtl lcms2 vc exiv2

В редких случаях, а также если ваш дистрибутив устарел, может получиться так, что вам будут доступны только старые версии библиотек. Вам потребуется собрать эти зависимости вручную. Запомните, файлы README и поисковые системы — ваши друзья.

Конфигурирование



Конфигурирование с помощью cmake проверит, достаточно ли установлено библиотек для сборки Krita. Если вы получите ошибки при конфигурировании, посмотрите, каких именно библиотек не хватает, в выводе команды будет об этом написано. Вот почему важно проверять, всё ли в порядке.

Мы информируем cmake о нашей структуре папок, а также даём команду на сборку только Krita. Но сначала делаем cd, чтобы сделать все в правильном месте:

cd ~/kde4/build
cmake -DCMAKE_INSTALL_PREFIX=$HOME/kde4/inst $HOME/kde4/src/calligra -DCMAKE_BUILD_TYPE=RelWithDebInfo -DPRODUCTSET=KRITA

Сборка



После того как вы прочтете отчет о конфигурации, если всё выглядит нормально, настанет время собирать Krita.
Оставаясь в папке /kde4/build, вызовите make с параметром -j<количество>, где <количество> должно быть заменено числом параллельных операций, поддерживаемым вашим процессором ( иногда рекомендуется +1). Например, у меня 8 ядер, поэтому я использую -j9.

make -j9

Совет: если вы не знаете, сколько у вас ядер, можно узнать это простой командой:

cat /proc/cpuinfo | grep processor | wc -l

Установка



Если сборка дошла до 100% без ошибок, вы можете дать команду make установить файлы в вашу папку.

make install -j9

Пути и переменные окружения




Установка завершена, но ваша система еще не рассматривает содержимое папки установки как часть набора приложений в системе. Давайте укажем системе правильный путь, в Терминале скопируем по очереди строки:

export KDEDIRS=$HOME/kde4/inst:$KDEDIRS
export PATH=$HOME/kde4/inst/bin:$PATH

К сожалению, эти переменные окружения не постоянны, после выключения или перезагрузки системы они будут потеряны и наш мостик разрушится. Чтобы они задавались при каждом входе в систему, вставьте их в конце файла ~/.profile с помощью своего любимого текстового редактора (в некоторых дистрибутивах профиль называется xprofile, проверьте скрытые файлы в папке home/<имя-пользователя>). Затем вам нужно зарегистрировать Krita в системе, kbuildsycoca4 сделает это после запуска в терминале:

kbuildsycoca4

Первый запуск



Поздравляем! Вы можете запустить «Krita-минутной-свежести», написав krita в Терминале или с помощью системного меню.
Если там не отображается Krita, почитайте документацию по вашему окружению рабочего стола: «Как создать пользовательскую кнопку запуска».

Обновление



Вы услышали о добавлении новой потрясающей возможности или прочитали об исправлении раздражающей ошибки и хотите обновить версию? Спокойствие, снова вызовите git. Настало время добавить недостающие строки кода в вашу папку. Не надо перекачивать весь пакет.

Перейдите (cd) в папку с кодом, затем попросите git pull обновить ваш код:
cd ~/kde4/src/calligra/
git pull


Но только обновления кода недостаточно; чтобы испытать новую версию Krita, нужно повторить конфигурирование, компиляцию и установку:
cd ~/kde4/build
cmake -DCMAKE_INSTALL_PREFIX=$HOME/kde4/inst $HOME/kde4/src/calligra -DCMAKE_BUILD_TYPE=RelWithDebInfo -DPRODUCTSET=KRITA
make -j8
make install -j8

Если вы обновляетесь ежедневно, вы можете автоматизировать процесс, создав свой минимальный скрипт. Я поделился своим с помощью сервиса 'KDE paste'.

Восстановление



Последняя версия для разработчиков может иногда падать или быть непригодной для работы. Экспериментальные изменения добавляются ежедневно. Это может подорвать вашу продуктивность, если вы не знаете как 'вернуться назад во времени' (напр.: ваша любимая кисть больше не работает). Но если вы знаете, как это сделать, ничто не смутит вас, потому что вы можете вернуться к предыдущему состоянию.

Чтобы путешествовать сквозь код и время, надо ознакомиться с хронологией. В Терминале для этого используется git log
cd ~/kde4/src/calligra/
git log

С помощью git log, вы можете отследить любые изменения кода, которые называются «коммитами» ('commit'). Нас интересует длинный идентификационный номер (напр.: 15c1749105a7e7cc56b646a66919c29646f8653a ). Вы можете пролистать git log, скопировать номер ID и выйти ( буква Q на клавиатуре). Теперь отправимся в прошлое вашей папки с кодом:
git checkout 15c1749105a7e7cc56b646a66919c29646f8653a

Теперь конфигурируем, компилируем и мы снова в безопасности. Также я рекомендую пакеты gitg или gitk, чтобы иметь графический интерфейс для отображения истории git. Также здесь доступна онлайн-версия.

Чтобы снова обновиться до кода минутной свежести, именуемого master, просто попросите git сходить к нему с git checkout и получите (pull) обновление:
git checkout master
git pull


Итог


Надеюсь, эта инструкция поможет многим пользователям насладиться возможностями версии Krita для разработчиков.
Вы можете оставлять отзывы и поправки в комментариях, я сделаю всё, что смогу для поддержания актуальности данной страницы (прим. пер.: я тоже буду стараться поддерживать перевод этой статьи актуальным).

Полезные ссылки:
Группа русскоязычных пользователей в ВК

Форма сообщения об ошибке (официальная база ошибок)
Форма сообщения об ошибке на русском
Официальный блог Krita
Официальный форум Krita
Ещё ссылки
— Официальная wiki-страница документации по сборке Calligra.
Calligra Git: активность и история
Список обнаруженных и исправленных багов Krita
— Старый репозиторий Compilscript (скоро будет удалён)
  • +35
  • 18,1k
  • 9

Krita Foundation

34,00

Компания

Поделиться публикацией
Комментарии 9
    +31
    Можно весь текст выкинуть, а картинки оставить? ^-_-^
      +12
      Это волшебно. Огромный респект художнику.
        0
        Отличные картинки!

        Только я не понял почему был проигнорирован checkinstall…
          0
          С checkinstall'ом нельзя сделать несколько одновременных установок Криты из разных веток. А так можно установить в разные префиксы и из разных терминалов запускать разные версии. Плюс этот метод позволяет легко быстро применять/тестировать патчи от разработчиков ;)
            +1
            В checkinstall'е можно дать разные имена пакетам от разных версий, так что проблема решаема
              0
              Мжоно вобоще свой манифест написать и крутить как хочешь.
              Добавлять к имени пакета его гитовскую версию и устанавливать, получается, каждый раз в разную директорию.
              Да, мэйкинсталлом проще с точки зрения быстрого старта. Но никакого контроля. Все на уровне работы с директориями и файлами.
              Это откат на много лет назад. Зачем? Я не понимаю.
                +1
                Это руководство написано Давидом Ревуа, активным пользователем коммьюнити, который помогает разработчикам и поэтому, фактически, описывает, как создать окружение разработчика, чтобы можно было смотреть самые свежие сборки, тестировать патчи и давать обратную связь. Для данного юзкейса checkinstall не подходит, и уж тем более не подходит сборка пакетов манифестами/pbuilder'ом. Для тех, кому нужны пакеты, у нас есть Krita Lime и репозитарии для openSUSE.

                Ответ на вопрос «Зачем?»:

                1) Пакет, собранный checkinstall, нужно каждый раз ставить и удалять. Когда мы просим пользователя протестировать патч, а потом еще один, а потом еще один поверх предыдущих двух (ну мало ли, может, у него какой-то китайский ноунейм планшет, который говорит, что он клавиатура, и мы должны его все-таки как-то подцепить), установка и удаление пакетов сильно замедлят процесс.

                2) 'make install' можно запускать из поддиректорий проекта, устанавливая только его часть. Полная установка Криты RelWithDebInfo занимает 750 МБ, поэтому полноценный запуск 'make install' может занимать до двух минут времени. При работе с патчами это напрягает.

                3) Права суперпользователя. Инструкция для котанов, прав суперпользователя здесь лучше избежать.

                4) Я говорил про несколько одновременных установок Криты. То есть то, какая версия сейчас запустится, определяется лишь переменными окружения, установленными в текущем терминале. Смысл ставить checkinstall'ом несколько пакетов в разные префиксы, если они все-равно по умолчанию в системе недоступны? Это только создаст путаницу с именами пакетов/директорий.

                Да, в этом руководстве про установку нескольких версий Криты нет ни слова. Но некоторые пользователи это используют, и у нас даже есть дополнение к этому руководству для этого (пока не оформлено как следует).

                А по поводу
                Мжоно вобоще свой манифест написать и крутить как хочешь
                Ну вообще-то это руководство не предназначено для продвинутых пользователей, которые могут самостоятельно решить все проблемы, возникающие при сборке пакетов на разных системах. Тем более, что манифесты и control-файлы сильно отличаются в зависимости от дистрибутива. Для одной только Ubuntu у нас два вида control-файлов: для Precise и для всех остальных.

            0
            Потому что ставится в домашнюю директорию, а не общесистемно.
              0
              Да, и не требует прав суперпользователя

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

          Самое читаемое