LINUX.ORG.RU

Создание пакета deb, заменяющего собой другие

 , ,


0

1

Пытаюсь создать пакет aoTuV, который при установке заменит собой libvorbis и др. таким образом, чтобы зависящие от libvorbis приложения не затронуло и чтобы при обновлениях системы не иметь проблем в будущем из-за этого.

Собираемый из исходников aoTuV пакет содержит также и libvorbisfile, libvorbisenc, которые в Debian находятся в отдельных пакетах. Почитал соответствующий мануал Дебияна, создал по нему, а также в соответствием с оригинальными зависимостями такой файл control:

Package: aotuv
Version: 6.03
Architecture: i386
Maintainer: BrainFucker <retratserif@гпочта.com>
Pre-Depends: multiarch-support
Depends: libc6 (>= 2.15), libogg0 (>= 1.1.0), libogg-dev
Conflicts: libvorbis0
Replaces: libvorbis0a, libvorbisenc2, libvorbisfile3, libvorbis-dev
Breaks: libvorbis0a, libvorbisenc2, libvorbisfile3, libvorbis-dev
Priority: optional
Description: aoTuV is the encoder and/or encode library of Ogg Vorbis. Based on libvorbis of Xiph.Org, this encoder was made, in order to improve the quality of coding. http://www.geocities.jp/aoyoume/aotuv/
Homepage: http://www.geocities.jp/aoyoume/aotuv/
Section: libs
Date: Sun, 12 May 2013 18:16:09 +0400

Собрал, попробовал установить пакет. Выхлопы мне не очень понравились, но вроде бы как пакет установился. Верно ли я сделал?

Ты сделал неправильно. Правда, как сделать правильно, я не знаю - в любом случае, твой aoutv сломает зависимости всем пакетам, зависящим от libvorbis0a, libvorbisenc2, libvorbisfile3, libvorbis-dev.

Как минимум ты не указал версий заменяемых и ломаемых пакетов.

tailgunner ★★★★★ ()
Ответ на: комментарий от tailgunner

твой aoutv сломает зависимости всем пакетам, зависящим от libvorbis0a, libvorbisenc2, libvorbisfile3, libvorbis-dev.

Но зависящие от них пакеты то остались на месте.

Как минимум ты не указал версий заменяемых и ломаемых пакетов.

Я думал можно не указывать, мне кажется это не важно в данном случае.

firestarter ★★★☆ ()
Ответ на: комментарий от firestarter

твой aoutv сломает зависимости всем пакетам, зависящим от libvorbis0a, libvorbisenc2, libvorbisfile3, libvorbis-dev.

Но зависящие от них пакеты то остались на месте.

Это ни о чем не говорит. Пакеты со сломанными зависимостями не удаляются.

Я думал можно не указывать

Может быть. Но если копипастишь пример, копипасти его точно.

tailgunner ★★★★★ ()
Ответ на: комментарий от tailgunner

Это ни о чем не говорит. Пакеты со сломанными зависимостями не удаляются.

Так dpkg не сказал что сломались какие-то пакеты, зависящие от этих пакетов. А зависит от них много что, например vlc-nox, vorbis-tools и пр. Они все зависят от libvorbis0a, libvorbisfile3, libvorbisenc2, которые я заменяю пакетом aotuv.

Может быть. Но если копипастишь пример, копипасти его точно.

О чём ты конкретно? Скопипастил полностью и файл control, и выхлоп при установке пакета.

firestarter ★★★☆ ()
Ответ на: комментарий от firestarter

Так dpkg не сказал что сломались какие-то пакеты, зависящие от этих пакетов

dpkg вообще довольно снисходительно относится к зависимостям. Попробуй apt-get install -f

О чём ты конкретно?

В мануале Debian написано:

     Replaces: foo (<< 1.2-3)
     Breaks: foo (<< 1.2-3)

Заметь явное указание версий.

tailgunner ★★★★★ ()
Ответ на: комментарий от tailgunner

Попробуй apt-get install -f

Ну да, предлагает выпилить кое что. Думаешь, явное указание версий заменяемых пакетов исправит это?

В мануале Debian написано <...> Заметь явное указание версий.

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

firestarter ★★★☆ ()
Ответ на: комментарий от firestarter

Ну да, предлагает выпилить кое что

Хм. Это единственное, что зависит от libvorbis?

Думаешь, явное указание версий заменяемых пакетов исправит это?

Это - нет. Если ты хочешь сделать чистое, ничего не ломающее обновление, у тебя изначально неправильный подход.

Ну указал я версии заменяемых пакетов в файле control, то же самое

Ну так в мануале написано, что для замены пакетов нужно указывать еще и Provides (пункт 7.6.2), и, думаю, тут ты приплыл.

tailgunner ★★★★★ ()
Ответ на: комментарий от tailgunner

Хм. Это единственное, что зависит от libvorbis?

Нет, то что зависит от libvorbis он вовсе не предложил удалить. От libvorbis зависит очень много всего, как я писал выше, это vorbis-tools, vlc-nox, ну и всякие другие установленные приложения, которые могут кодить в ogg.

Ну так в мануале написано, что для замены пакетов нужно указывать еще и Provides (пункт 7.6.2), и, думаю, тут ты приплыл.

Ничего не изменилось.

firestarter ★★★☆ ()
Ответ на: комментарий от tailgunner

А не подскажешь что означают << в версиях? С таким файлом control пакет молча установился.

Только меня терзают смутные сомнения. Не возникнет ли проблем при обновлении системы, когда в репах будут более новые версии libvorbis и сопутствующих библиотек? При попытке их переустановить вываливается такая ошибка. Сам пакет aotuv при этом удаляется без ошибок.

PS: видимо << означает примерно то же что и <, поэтому пакет и ставится без ошибок, ведь он ломает только версии ниже указанной. То есть это неправильно.

Неужели без создания dummy package нельзя? :(

firestarter ★★★☆ ()
Последнее исправление: firestarter (всего исправлений: 4)

Хм-м...
С одной стороны, есть секция Provides, в которой указываются имена виртуальных пакетов, которые твой пакет предоставляет.
С другой стороны, ЕМНИП, там нельзя указывать версии предоставляемых пакетов, поэтому при помощи Provides нельзя заменить «реальные» пакеты, Depends с версиями не будет удовлетворен.
Так что, может, сделать ве эти пакеты, но с более высокими номерами версий (сменить «эру»)? Или, например, использовать dpkg-diverts.

proud_anon ★★★★★ ()
Ответ на: комментарий от firestarter

А не подскажешь что означают << в версиях?

«Меньше».

При попытке их переустановить вываливается такая ошибка.

Конфликт по файлам - libvorbis.so.0.4.5 есть и в твоем aotuv, и в системном libvorbis0a. Зачем тебе вообще reinstall?

tailgunner ★★★★★ ()
Ответ на: комментарий от tailgunner

Зачем тебе вообще reinstall?

Ну я же написал, проверял что произойдёт при обновлении системы в будущем.

firestarter ★★★☆ ()
Ответ на: комментарий от tailgunner

Provides вообще предназначен для использования с виртуальными пакетами, судя по мануалу. Опыты показали что он в данном случае не влияет.

firestarter ★★★☆ ()
Последнее исправление: firestarter (всего исправлений: 1)
Ответ на: комментарий от firestarter

проверял что произойдёт при обновлении системы в будущем.

Вызовом aptitude reinstall? Сомнительная проверка.

tailgunner ★★★★★ ()
Ответ на: комментарий от tailgunner

Вызовом aptitude reinstall? Сомнительная проверка.

Так пакеты то до сих пор были в установленном состоянии. Когда в репах версии этих пакетов повысят, они будут ставиться оттуда снова (обновляться), что вызвало бы ту же ошибку что и reinstall.

firestarter ★★★☆ ()
Ответ на: комментарий от firestarter

Когда в репах версии этих пакетов повысят, они будут ставиться оттуда снова (обновляться), что вызвало бы ту же ошибку что и reinstall.

Ну, если ты так хорошо знаешь aptitude, тогда конечно.

tailgunner ★★★★★ ()
Ответ на: комментарий от proud_anon

Так что, может, сделать ве эти пакеты, но с более высокими номерами версий (сменить «эру»)?

Искал более простой путь. Чтобы это сделать, нужно как-то сделать так чтобы из этого исходника получались четыре разных пакета (libvorbis0a, libvorbisfile3, libvorbisenc2, libvorbis-dev).

Или, например, использовать dpkg-diverts.

Это всяко не то. И пакетом уже просто так ни с кем не поделишься.

firestarter ★★★☆ ()
Ответ на: комментарий от tailgunner

Ну, если ты так хорошо знаешь aptitude, тогда конечно.

Ну так хоть aptitude, хоть apt-get, при обновлении системы обновляют все установленные пакеты, для которых появились новые версии в репах.

firestarter ★★★☆ ()
Ответ на: комментарий от firestarter

Ну так хоть aptitude, хоть apt-get, при обновлении системы обновляют все установленные пакеты

Детали функционирования reinstall и upgrade могут различаться. Впрочем, если ты хочешь нормального обновления, ты заведомо пошел не тем путем.

tailgunner ★★★★★ ()
Ответ на: комментарий от tailgunner

Впрочем, если ты хочешь нормального обновления, ты заведомо пошел не тем путем.

Ну Ok, какой самый лёгкий и быстрый способ заменить некоторые библиотеки альтернативными так чтобы это не повторять после каждого обновления? А то я до этого тупо делал sudo make install, но приходилось периодически это повторять как минимум раз в полгода. Все говорят это неправильно и нужно собрать пакет, а тут гемора полно оказывается.

firestarter ★★★☆ ()
Ответ на: комментарий от firestarter

какой самый лёгкий и быстрый способ заменить некоторые библиотеки альтернативными

Я же сказал - не знаю. Если бы это было нужно мне, я бы попробовал сделать свои пакеты libvorbis*, со своей меткой релиза, и сделал бы pinning именно своих версий.

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

Ты пытаешься модифицировать сложную систему - это требует знаний и терпения.

tailgunner ★★★★★ ()
Ответ на: комментарий от proud_anon

сменить «эру»

После чего у мейнтейнеров самого Дебиана волосы седеют :}

Deleted ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.