Авг 14

Известно, что релиз Amarok версии 2.1.1 будет последним в ветке 2.1 и следующий выйдет уже только в ветке 2.2, которую ещё ждать и ждать. Тем временем, в 2.2 исправлено много ошибок и реализованы некоторые интересные фичи: «плавающие» док-виджеты, новый тулбар, breadcrumb-навигация, многоуровневая сортировка в плейлисте — только некоторые из них.

Конечно, существует Project Neon — сервис, предоставляющий ночные сборки Amarok и KDE для (k)ubuntu, но на текущий момент amarok-nightly не собирается (UPD: таки починили), и такие поломки вполне вероятны в будущем. Попробуем скомпилировать свежайший Amarok самостоятельно.

UPDATE
Amarok 2.2 «Sunjammer» вышел и этим релизом ним обновились некоторые зависимости:
taglib (>= 1.6) и taglib-extras (>= 1.0.1) Соответсвующие изменения были добавлены в руководсвво. Также были внесены правки относительно использования ccache и make -j5

Данное руководство основано на следующих материалах:

Необходимые требования

Версия KDE не ниже 4.2, c KDE 4.3 из kubuntu backports собирается нормально. Установка производится в папку

~/myRepo/Amarok

а в оригинальном руководстве в

~kde

вы тоже можете заменить её на свой вариант.

Установка

Шаг 1:
Удалить текущую версию amarok командой

sudo apt-get remove amarok amarok-common amarok-dbg

Или с помощью графических пакетных менеджеров Synaptic/KPackageKit.

Но прежде всего, нужно забекапить файлы конфигурации и базу данных, где Amarok хранит коллекцию и собранную статистику. Это папка

~/.kde/share/apps/amarok

и файлы

~/.kde/share/config/amarok-appletsrc
~/.kde/share/config/amarok_homerc
~/.kde/share/config/amarokrc

Шаг 2:
Устанавливаем необходимые для сборки пакеты (w32codecs для 32битной архитектуры, w64codecs — для 64битной; libmysqlclient15-dev либо libmysqlclient16-dev — я собирал с 16 версией)

sudo apt-get install kubuntu-restricted-extras w32codecs
build-essential kde-devel subversion git libmysqlclient15-dev
libncurses5-dev libtag1-dev libstrigiqtdbusclient-dev
qtscriptgenerator liblastfm-dev ccache libqca2-dev

Шаг 3:
Вносим поправки в файлы .bashrc и .myenv.sh

Для пользователей KDE

echo '' >> ${HOME}/.bashrc
echo 'export PATH=$HOME/myRepo/Amarok/bin:$PATH' >> ${HOME}/.bashrc
echo 'export PATH=/usr/lib/ccache:$PATH' >> ${HOME}/.bashrc
mkdir -p ${HOME}/.kde/env
echo 'export KDEDIR=$HOME/myRepo/Amarok' >> ${HOME}/.kde/env/myenv.sh
echo 'export KDEDIRS=$KDEDIR' >> ${HOME}/.kde/env/myenv.sh

Всем остальным

echo '' >> ${HOME}/.bashrc
echo 'export PATH=$HOME/myRepo/Amarok/bin:$PATH' >> ${HOME}/.bashrc
echo 'export PATH=/usr/lib/ccache:$PATH' >> ${HOME}/.bashrc
echo 'export KDEDIR=$HOME/myRepo/Amarok' >> ${HOME}/.bashrc
echo 'export KDEDIRS=$KDEDIR' >> ${HOME}/.bashrc

Визуальная проверка

cat ${HOME}/.bashrc
cat ${HOME}/.kde/env/myenv.sh

Обратите внимание на экспорт пути для ccache:
ссache (сикэш) — хэширующий препроцессор компиляторов языка С и С++ для GNU/Linux.
Использование ссache может значительно ускорить сборку некоторых пакетов или проектов, которые компилируются несколько раз, так как заново компилироваться будут только файлы, которые изменились с последней компиляции.

Командой

 ccache -M 2G

зададим размер кэша препроцессора, который будет храниться в домашней директории.

Шаг 4:
Перезагружаем .bashrc

source ${HOME}/.bashrc

Шаг 5:
Создаём необходимые папки

mkdir -p ${HOME}/myRepo/Amarok/src
mkdir -p ${HOME}/myRepo/Amarok/build/amarok

Шаг 6:
Загружаем Amarok, taglib (>= 1.6) и taglib-extras (>= 1.0.1) из git и SVN-репозиториев

cd ${HOME}/myRepo/Amarok/src
git clone git://gitorious.org/amarok/amarok.git
svn co svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib
svn co svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib-extras/taglib-extras

C taglib-extras из svn у меня возникла проблема при конфигурировании, поэтому пришлось скачать тарбол:

wget http://kollide.net/~jefferai/taglib-extras-1.0.1.tar.gz
ark -ab taglib-extras-1.0.1.tar.gz
mv taglib-extras-1.0.1 taglib-extras

Шаг 7:
Скачиваем MySQL Embedded, на текущий момент это версия 5.1.39
Если вышла более новая версия MySQL — исправьте цифры на нужные

cd ${HOME}/myRepo/Amarok/src
wget http://dev.mysql.com/get/Downloads/MySQL-5.1/mysql-5.1.40.tar.gz/from/http://mirror.switch.ch/ftp/mirror/mysql/

Шаг 8:
Извлекаем MySQL из архива

tar xzvf mysql-5.1.40.tar.gz
cd mysql-5.1.40
cp -R ${HOME}/myRepo/Amarok/src/amarok/supplementary_scripts/mysqle/* .

Если вы являетесь счастливым владельцем многоядерного процессора, то можно ускорить сборку задействовав сразу все доступные ядра указав команде make ключ -j5,
где j5 — количество ядер (в моём случае 4) +1

Собираем MySQL

./build-mysqle.sh --prefix=${HOME}/usr

Шаг 9:
Собираем taglib

cd ${HOME}/myRepo/Amarok/src/taglib/
mkdir build
cd build
export LD_LIBRARY_PATH=${HOME}/myRepo/Amarok/build/taglib/taglib
cmake -DWITH_ASF=On -DWITH_MP4=On -DCMAKE_INSTALL_PREFIX=${HOME}/myRepo/Amarok ..
make -j5
make install

Шаг 10:
Собираем taglib-extras

cd ${HOME}/myRepo/Amarok/src/taglib-extras/
mkdir build
cd build
export LD_LIBRARY_PATH=${HOME}/myRepo/Amarok/build/taglib-extras/taglib-extras
cmake -DCMAKE_INSTALL_PREFIX=${HOME}/myRepo/Amarok ..
make -j5
make install

Шаг 11:
Собираем сам Amarok 2

cd ${HOME}/myRepo/Amarok/src/amarok
mkdir build
cd build
cmake -DCMAKE_INSTALL_PREFIX=${HOME}/myRepo/Amarok -DCMAKE_BUILD_TYPE=debugfull ${HOME}/myRepo/Amarok/src/amarok
make -j5
make install

Для обновления сборки делаем

cd ${HOME}/myRepo/Amarok/src/amarok
git pull

И снова

cmake -DCMAKE_INSTALL_PREFIX=${HOME}/myRepo/Amarok
-DCMAKE_BUILD_TYPE=debugfull
${HOME}/myRepo/Amarok/src/amarok
make  -j5
make install

Автоматизировать процедуру обновления до последней git-ревизии можно следующим скриптом:

#!/bin/bash
cd ${HOME}/myRepo/Amarok/src/amarok
git pull
cmake -DCMAKE_INSTALL_PREFIX=${HOME}/myRepo/Amarok -DCMAKE_BUILD_TYPE=debugfull ${HOME}/myRepo/Amarok/src/amarok
make -j5
make install

Сохранить его, например, как amarok-git-pull.sh, дать права на исполнение и положить в директорию /usr/bin
Для ещё большего удобства, в ~/.bashrc можно прописать соответствующий алиас, например, такой:

alias agp="amarok-git-pull.sh"

Шаг 12:
Обновляем конфиг KDE

kbuildsycoca4 --noincremental

Шаг 13:
Запускаем Amarok командой в консоли, предварительно перезагрузив (для верности, но возможно достаточно перелогиниться) компьютер

amarok

Также можно создать новый пункт в меню запуска приложений, либо отредактировать старый — правый клик мышью по меню запуска приложений -> Редактор меню.
В поле «Команда» вписываем

~/myRepo/Amarok/bin/amarok

Деинсталляция

  • Удалить папку, где производилась сборка, в моём случае это ~/myRepo/Amarok
  • Удалить скрипт из ~/.kde/env/myenv.sh
  • Удалить строку
export PATH=$HOME/myRepo/Amarok/bin:$PATH

из файла ~/.bashrc

  • Выполнить в терминале
kbuildsycoca4 --noincremental
  • Перелогиниться (для верности можно и перезагрузиться)
  • Интересно, когда в Amarok вернут визуализацию?

  • Когда её добавят в Phonon :)
    http://gitorious.org/~sandsmark/phonon/visualization-gsoc

  • кому как, видимо поэтому я и ушёл в своё время (: оставим эту дискуссию.

  • Насчет checkinstall -d не в курсе, думаю, что суть понятна: в пакетном дистре нужно собирать пакеты, а уж потом их устанавливать.


  • в пакетном дистре нужно собирать пакеты, а уж потом их устанавливать.



    Спорно. Кривособранный пакет в последствии может немало нервов попортить. Тут кстати не только amarok, но taglib пакетить.
    В конце концов, любители свежака сидят на генте/арче куда более приспособленных для этого дела.


  • mysql собирать не нужно – сойдёт дистрибный (нужны mysql-client-5.0, mysql-server-core-5.0, libmysqlclient15-dev)



    Пробовал, причём разные сочетания пакетов - cmake не нашёл нужного ему.



    Чекинсталом можно в /usr поставить, чтобы не засорять /home. А ещё лучше написать конфиг и правила для CPack’a. Тогда обновление из гита + конфигуряние + установка сократится до трёх (!) простых команд, а если их ещё в скрипт записать да в крон повесить...



    Это уже на изобретение велосипеда похоже - amarok-nightly с сегодняшнего утра снова собирается. Весь смысл установки в home имхо в возможности не засоряя систему посмотреть на текущее положение дел в разработке приложения и проверить исправлены ли в апстриме интересующие лично тебя баги.
    Шаги 10 и 11 вполне скриптуемы, кстати.


    И вообще, "руководство не моё, я просто разместил перевод".

  • eule

    mysql собирать не нужно - сойдёт дистрибный (нужны mysql-client-5.0, mysql-server-core-5.0, libmysqlclient15-dev). Так чище будет и место экономится. :) Чекинсталом можно в /usr поставить, чтобы не засорять /home. А ещё лучше написать конфиг и правила для CPack'a. Тогда обновление из гита + конфигуряние + установка сократится до трёх (!) простых команд, а если их ещё в скрипт записать да в крон повесить...


    В конце ещё не хватает ldconfig (на случай установки в /usr).

  • Опять же, в случае чего можно просто удалить одну папку в хомяке, запись из .bashrc и скрипт из /.kde/env -- всего делов по откату.


  • предлагаю везде make install заменить на checkinstall -d



    AFAIR чекинсталл плохо переваривает установку в хомяк.
    Ну и с git pull && make && make install проще до актуального гита догоняться.

  • А чем такой вариант плох? Амарок собирается и ставится в хомяка

  • а ещё говорят, что ubuntu for human beings... вообще не тру-вей.
    предлагаю везде make install заменить на checkinstall -d или как там и собирать\устанавливать пакетами, ибо собирать программы в пакетном дистрибутиве не кошерно

blog comments powered by Disqus