LINUX.ORG.RU

Сборка deb пакета из исходников

 


1

1

Привет.

Хочу поковыряться в библиотеке libvte9. Сделал apt-get source, распаковал, поменял что хотел, сделал dpkg-source --commit

Проблема в сборке пакета.

Делаю dpkg-buildpackage и почему-то создаются пакеты с зависимостью от libc6-amd64, хотя оригинальные deb зависят от libc6.

Полученные пакеты ставиться не хотят (ни через dpkg -i ни через debi), хотя libc6-amd64 установлен (версия новей).

uname -a: Linux thestation 3.2.0-4-amd64 #1 SMP Debian 3.2.51-1 x86_64 GNU/Linux

Почему генерится такая зависимость и как такой пакет поставить?

Ответ на: комментарий от Towelie

Оригинальный пакет (из кэша apt): Depends: libatk1.0-0 (>= 1.12.4), libc6 (>= 2.4), libcairo2 (>= 1.2.4), libfontconfig1 (>= 2.9.0), libfreetype6 (>= 2.2.1), libgdk-pixbuf2.0-0 (>= 2.22.0), libglib2.0-0 (>= 2.31.8), libgtk2.0-0 (>= 2.24.0), libncurses5 (>= 5.5-5~), libpango1.0-0 (>=1.22.0), libtinfo5, libx11-6, libvte-common (= 1:0.28.2-5)

Мой пакет: Depends: libatk1.0-0 (>= 1.12.4), libc6-amd64 (>= 2.14), libcairo2 (>= 1.2.4), libfontconfig1 (>= 2.11), libfreetype6 (>= 2.2.1), libgdk-pixbuf2.0-0 (>= 2.22.0), libglib2.0-0 (>= 2.31.8), libgtk2.0-0 (>= 2.24.0), libncurses5 (>= 5.5-5~), libpango-1.0-0 (>= 1.22.0), libpangocairo-1.0-0 (>= 1.22.0), libpangoft2-1.0-0 (>= 1.22.0), libtinfo5, libx11-6, libxext6, libvte-common (= 1:0.28.2-5)

aquirel ()

Делаю dpkg-buildpackage и почему-то создаются пакеты с зависимостью от libc6-amd64, хотя оригинальные deb зависят от libc6.

собранный код зависит от того, что ЕСТЬ. Это вообще-то решает скрипт ./configure, а пакет и вообще Debian тут не при чём. buidpackage просто создаёт зависимость от того, что у тебя есть.

libc6-amd64 установлен (версия новей).

новее чего? Должно быть то, что у тебя во время сборки было. Точнее, то, что ldconfig нашла. Если этого нет (ИМЕННО этого), оно ставится из репов по зависимости.

и как такой пакет поставить?

убить все версии либы, и поставить те, что нужно. Да, можно в chroot'е, даже желательно (а то можно всю систему так запороть).

emulek ()
Ответ на: комментарий от Excavator

сборка в чистом чруте.

Он через debootstrap создается?

Или хотя бы libc6-amd64 удалить из системы (на время сборки)

На него куча зависимостей.

aquirel ()
Ответ на: комментарий от emulek

собранный код зависит от того, что ЕСТЬ. Это вообще-то решает скрипт ./configure, а пакет и вообще Debian тут не при чём. buidpackage просто создаёт зависимость от того, что у тебя есть.

Я понял. Я думал, в сырцы пакета жестко зашиты его зависимости.

новее чего? Должно быть то, что у тебя во время сборки было. Точнее, то, что ldconfig нашла. Если этого нет (ИМЕННО этого), оно ставится из репов по зависимости.

dpkg -l libc6-amd64 говорит, что в системе установлена версия 2.17-97 В пакете стоит зависимость от libc6-amd64 (>= 2.14) Ему нужна именно 2.14? 2.17 не пойдет?

убить все версии либы, и поставить те, что нужно. Да, можно в chroot'е, даже желательно (а то можно всю систему так запороть).

Есть пакеты, которые от неё зависят. Мне, по сути, обновить нужно.

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

В пакете стоит зависимость от libc6-amd64 (>= 2.14) Ему нужна именно 2.14? 2.17 не пойдет?

Если руководствоваться школьным курсом математики - то пойдет.

Towelie ()
Ответ на: комментарий от aquirel

у вас какая-то путаница с архитектурами. libc6-amd64 - это 64-битная библиотека для кросс-компиляции в 32-битной системе, даже не представляю зачем она может понадобиться, если система и так х64.

http://packages.debian.org/wheezy/libc6-amd64 обратите внимание на архитектуру пакета

поэтому и «не хотят устанавливаться» собранные вами пакеты. Они требуют libc6-amd64, но для архитектуры amd64 такого пакета не существует

Excavator ()
Ответ на: комментарий от aquirel

Ему нужна именно 2.14? 2.17 не пойдет?

пойдёт. ПМу пойдёт, т.е. программа поставится с такой зависимостью.

emulek ()
Ответ на: комментарий от Excavator

у вас какая-то путаница с архитектурами. libc6-amd64 - это 64-битная библиотека для кросс-компиляции в 32-битной системе, даже не представляю зачем она может понадобиться, если система и так х64.

http://packages.debian.org/wheezy/libc6-amd64 обратите внимание на архитектуру пакета

поэтому и «не хотят устанавливаться» собранные вами пакеты. Они требуют libc6-amd64, но для архитектуры amd64 такого пакета не существует

Да, только сейчас обратил внимание. Действительно, в системе установлена 32-битная версия. При обновлении с stable до testing были проблемы с libc. Видимо тогда что-то пошло не так.

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

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

Удалось собрать и поставить пакет. Удалил libc6-amd64, сломал систему (: Файлы libc6-amd64 были в /lib64 (динамический линкер). Загрузился с systemrescuecd, вручную распаковал правильный libc6 в /lib64, перегрузился - все работает, пакет с правильной зависимостью, ставиться.

Не знаю, как система работала с libc6-amd64 (: Подозреваю, что libc6-amd64 подставлялся в зависимости потому что у него было что-то типа provides: libc6 или что-то в этом духе.

Сейчас у меня в /lib64 только ld-linux-x86-64.so.2, который является символической ссылкой на /lib/x86_64-linux-gnu/ld-2.17.so Это нормально?

Спасибо всем ответившим.

aquirel ()

Делаю dpkg-buildpackage и почему-то создаются пакеты с зависимостью от libc6-amd64, хотя оригинальные deb зависят от libc6.

Внимательно изучи скрипты и control

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