-
Notifications
You must be signed in to change notification settings - Fork 0
06RU1 taglib
Была аналогичная проблема на ubuntu-14.04 (linuxmint-17) с taglib-rusxmms (1.9.1-2), а все из-за того что
- 04 Nov 2013 taglib_1.9.1-1: Drop RusXMMS flavour (libtag1-rusxmms package)
Задача свелась к наложению патчей от RusXMMS на имеющиеся исходники пакета.
$ sudo apt-get build-dep taglib
$ mkdir /tmp/taglib-rusxmms/
$ cd /tmp/taglib-rusxmms/
$ wget -c http://darksoft.org/files/rusxmms/patches/taglib-csa10.tar.bz2
$ tar -xvf taglib-csa10.tar.bz2 -p -C ./
затем были загружены исходники по которым в ubuntu/deb собирался taglib
(необходимо что бы src-репозиторий был подключен) и прописаны патчи, которые мы загрузили и распаковали:
$ cd /tmp/taglib-rusxmms/
$ apt-get source taglib
$ echo taglib-1.9.1-ds-rusxmms.patch >> /tmp/taglib-rusxmms/taglib-1.9.1/debian/patches/series
$ cp -av taglib/taglib-1.9.1-ds-rusxmms.patch /tmp/taglib-rusxmms/taglib-1.9.1/debian/patches/
$ echo taglib-1.9.1-ds-rusxmms-enforce.patch >> /tmp/taglib-rusxmms/taglib-1.9.1/debian/patches/series
$ cp -av taglib/taglib-1.9.1-ds-rusxmms-enforce.patch /tmp/taglib-rusxmms/taglib-1.9.1/debian/patches/
Укажем различные внесенные изменения:
-
cd /tmp/taglib-rusxmms/taglib-1.9.1 && dch -i
можно, например, здесь подправить билд на 2csa10 и получить что-то видаtaglib (1.9.1-2csa10)
, ну и в * (изменениях) указать:-
* taglib-csa10 < http://rusxmms.sourceforge.net >
Далее можно приступать к сборке и если сборка проходит, но в конце обрывается на
-
dpkg-buildpackage -rfakeroot
...
dpkg-gensymbols: предупреждение: появилось несколько новых символов в файле symbols: смотрите вывод diff ниже
dpkg-gensymbols: предупреждение: некоторые символы или шаблоны исчезли из файла symbols: смотрите вывод diff ниже
dpkg-gensymbols: предупреждение: debian/libtag1-vanilla/DEBIAN/symbols совпадает с debian/libtag1-vanilla.symbols не полностью
...
dh_makeshlibs: dpkg-gensymbols -plibtag1-vanilla -Idebian/libtag1-vanilla.symbols -Pdebian/libtag1-vanilla -edebian/libtag1-vanilla/usr/lib/x86_64-linux-gnu/libtag.so.1.14.0
returned exit code 1
make: *** [binary] Ошибка 1
dpkg-buildpackage: ошибка: fakeroot debian/rules binary возвратил код ошибки 2
в этом случае можно попробовать удалить debian/libtag1-vanilla.symbol
с которым идет конфликт
-
rm -v /tmp/taglib-rusxmms/taglib-1.9.1/debian/libtag1-vanilla.symbol
- перед удалением конечно же заново перезагрузите дерево сборки (
apt-get source taglib
) и пропишите патчи (действия выше) и сборка пройдет!dpkg-buildpackage -rfakeroot
- перед удалением конечно же заново перезагрузите дерево сборки (
libtag1c2a_1.9.1-2csa10_amd64.deb
libtag1-dev_1.9.1-2csa10_amd64.deb
libtag1-doc_1.9.1-2csa10_all.deb
libtag1-vanilla_1.9.1-2csa10_amd64.deb
libtagc0_1.9.1-2csa10_amd64.deb
libtagc0-dev_1.9.1-2csa10_amd64.deb
taglib_1.9.1-2csa10_amd64.changes
taglib_1.9.1-2csa10.debian.tar.gz
taglib_1.9.1-2csa10.dsc
Когда пакеты получите необязательно ставить все, достаточно установить конкретные:
$ sudo dpkg -i /tmp/taglib-rusxmms/libtag1c2a_1.9.1-2csa10_amd64.deb /tmp/taglib-rusxmms/libtag1-vanilla_1.9.1-2csa10_amd64.deb
Если подобный способ получился в deb-подобном дистрибутиве, давайте подобное провернем в slackware и сравним так сказать.
И еще раз по порядку. Есть проект, который осуществляет поддержку патчей для taglib: RusXMMS. Наша задача наложить их патчи на иходники пакета, т.е. мы пропатчим taglib для русских тегов mp3 отличных от utf-8 для плееров Amarok, Clementine, Qmmp &etc, т.е. те которые обращаются к taglib для прочитывания информации из mp3-тегов.
-
Стоит отметить еще есть немного другое решение в качестве использования другого плеера или просто поставьте/соберите плеер deadbeef / DeaDBeeF / 0xDEADBEEF (an audio player) - он не обращается к тегам через taglib, и не надо taglib патчить и пересобирать этот пакет (taglib), собранный Патриком.
SBo-14.1 # sbopkg -Bki "deadbeef"
SBo-14.2 # sbopkg -Bki "jansson deadbeef"
-
За дополнительной информацией про сборку из исходников и установку пакетов обращайтеся в последующие разделы, здесь же учтем, то что вы знаете про данное и приступим к пересборке taglib.
Необходимо собрать librcc и пересобрать taglib с патчем и этой библиотекой.
LibRCC - Russian Charset Conversion Library
- Исходники librcc берем отсюда: rusxmms project
- Патчи для taglib: rusxmms project/patches
Итак, для начала, нам необходима librcc из этого самого проекта, который предоставляет патчи для taglib, но прежде чем собирать librcc, хотелось бы оговориться об возможностях данной библиотеки. Если запустите сборку (LibRCC) заметите следующую информацию:
./configure
...
Enca Charset Detection Support: dynamic
LibRCD Charset Detection Support: dynamic
Это нас информируют о том то что в /usr/lib${LIBDIRSUFFIX}
не найден один из файлов указанной библитеки, а именно:
- Enca: /usr/lib${LIBDIRSUFFIX}/libenca.so
- LibRCD: /usr/lib${LIBDIRSUFFIX}/librcd.so
В принципе, можете продолжить сборку, установить и потом собрать пропатченный taglib, а затем доустановить enca или librcd, тем самым taglib будет обращаться к librcc, а та в свою очередь запрашивать информацию у enca или librcd.
- Но если же будете собирать с установленным enca или librcd учитывайте что taglib_librcc не будет работать, если вы удалите enca или librcd.
LibRCD is used by RusXMMS project for encoding auto-detection.
На мой взгляд, здесь правильнее всего собрать:
librcd -> librcc -> taglib
Просто исходя из того что LibRCD, как LibRCC является частью проекта RusXMMS, того самого у которого мы берем данные патчи для taglib. А еще могу добавить, что и правильным будем собирать так и с Enca без установленного LibRCD, если по каким-то причинам вы так или иначе пользуйтесь Enca, скажем enconv из этого итогового пакета для каких-то своих целей в том числе я для перегонки man-страниц в нестандартной кодировке, если таковые установлены у вас в системе (н-р: LANG=ru_RU.UTF-8 /usr/bin/man xfce4-terminal), в общем вам решать, это я просто относительно enca пометку сделал в большей степени для тех людей которые систему в минимальном размере стараются держать, хоть она много и не занимает эта библиотека.
Ниже ссылки где можно взять готовые SlackBuild'ы:
собираем librc* по этим СлакБилдам (или пишем свои) - они нам необходимы для пересборки с патчем taglib.
Далее, берем патчи из rusxmms/patches, распаковываем и пересобираем taglib:
- SlackBuild, slack-desc и исходники берем у самого Патрика: source/l/taglib
- taglib-csaВЕРСИЯ.tar.bz2 распаковываем в каталог вместе с исходниками, единственное что нам необходимо добавить в SlackBuild строчки с применением патчей перед cmake:
cd $TMP/taglib-$VERSION || exit 1
for p in `ls ../taglib | grep -e .patch -e .diff | grep $VERSION` ; do
patch -p1 --verbose < ../taglib/$p || exit 1
install -Dm644 ../taglib/$p $PKG/usr/doc/taglib-${VERSION}
done
Добавляем данные строчки (строчку) в taglib.SlackBuild, собирайте и устанавливайте.
И в принципе все, перезапускайте плеер, если запущен и наслаждайтесь реультатом.
- После каждой сборки
./*.SlackBuild
, как собрали устанавливайте так:# upgradepkg --reinstall --install-new ПАКЕТ.txz
- После пересборки taglib, н-р: qmmp, clementine,
- плеер перезапускаем и по-новой закидываем файлы в плейлист.
- LibRCD: librcd-0.1.14 +/- Enca: enca-1.19
- LibRCC: librcc-0.2.12
- taglib-1.10: taglib-csa11
cd $TMP/taglib-$VERSION || exit 1
patch -p1 --verbose < $CWD/taglib-1.10-ds-rusxmms.patch || exit 1
- я задействовал librcc-0.2.12, librcd-0.1.11
- патчи для taglib-1.9.1 из taglib-csa10
patch -p1 --verbose < $CWD/taglib-1.9.1-ds-rusxmms.patch || exit 1
patch -p1 --verbose < $CWD/taglib-1.9.1-ds-rusxmms-enforce.patch || exit 1
Для сравнение, как это все выглядет в Ubuntu-14.04-LTS / LinuxMint-17:
sudo apt-get build-dep taglib
mkdir /tmp/taglib-rusxmms/
cd /tmp/taglib-rusxmms/
wget -c http://darksoft.org/files/rusxmms/patches/taglib-csa10.tar.bz2
tar -xvf taglib-csa10.tar.bz2 -p -C ./
cd /tmp/taglib-rusxmms/
apt-get source taglib
echo taglib-1.9.1-ds-rusxmms.patch >> /tmp/taglib-rusxmms/taglib-1.9.1/debian/patches/series
cp -av taglib/taglib-1.9.1-ds-rusxmms.patch /tmp/taglib-rusxmms/taglib-1.9.1/debian/patches/
echo taglib-1.9.1-ds-rusxmms-enforce.patch >> /tmp/taglib-rusxmms/taglib-1.9.1/debian/patches/series
cp -av taglib/taglib-1.9.1-ds-rusxmms-enforce.patch /tmp/taglib-rusxmms/taglib-1.9.1/debian/patches/
rm -v /tmp/taglib-rusxmms/taglib-1.9.1/debian/libtag1-vanilla.symbol
cd /tmp/taglib-rusxmms/taglib-1.9.1
dch -i
dpkg-buildpackage -rfakeroot
sudo dpkg -i /tmp/taglib-rusxmms/libtag1c2a_*.deb /tmp/taglib-rusxmms/libtag1-vanilla_*.deb
07PKGS0PKGTOOLS.md 07PKGS1SLACKPKG+.md 07PKGS9RM.md
08BUILD.md 08BUILD1SBOPKG-14.2.md 08BUILD1SBOPKG.md
- KDE-4 в 14.x
- KDE-5 в 14.x
- MATE-1.X в 14.x
- VirtualBox и VBox Guest Additions
- VirtualBox и iTunes-windows
09PKGS3GAMES.md
10DISTUPGRADE