Рецепты сборки на панели запуска: как правильно указать зависимости сборки для пакетов в одном и том же PPA?

Я пытаюсь собрать IDE Code :: Blocks в Ubuntu 16.04, используя этот рецепт:

https://code.launchpad.net/~damien-moore/+recipe/codeblocks-16.01 -release

Требуется libwxgtk2.8-dev, которого нет в репозиториях 16.04, но я добавил сюда пакет:

https: // launchpad.net/~damien-moore/+archive/ubuntu/codeblocks-stable/+packages

Но когда я строю, я получаю ошибку неудовлетворенной зависимости:

https://code.launchpad.net/~damien-moore/+archive/ubuntu/codeblocks-stable/+recipebuild/1126247

Вы можете увидеть управляющий файл здесь:

http://bazaar.launchpad.net/~damien-moore/+junk/codeblocks-16.01-release/view/head:/debian/control

Любые идеи о том, что я я делаю не так?

0
задан 27 April 2016 в 16:26

1 ответ

Сообщения об ошибках, которые Вы получаете из Кв. в этом виде ситуации, являются немного вводящими в заблуждение: это на самом деле говорит Вам что libwxgtk2.8-dev пакет присутствует, но является неустанавливаемым. Можно добраться, лучшая диагностика путем установки среды, где склонный имеет PPA в sources.list ( chdist инструмент может быть полезным здесь, чтобы не нарушать Вашу нормальную среду или беспокоиться полным chroot или подобный) и выполнить развертку в интерактивном режиме:

$ chdist create codeblocks
Now edit /home/cjwatson/.chdist/codeblocks/etc/apt/sources.list
Run chdist apt-get codeblocks update
And enjoy.
$ cat >.chdist/codeblocks/etc/apt/sources.list <<EOF
deb [trusted=yes] http://ppa.launchpad.net/damien-moore/codeblocks-stable/ubuntu xenial main
deb http://archive.ubuntu.com/ubuntu xenial main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu xenial-security main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu xenial-updates main restricted universe multiverse
EOF
$ chdist apt-get codeblocks update
# ignore GPG errors in the output, which don't matter for the purposes of
# inspection
$ chdist apt-get codeblocks install libwxgtk2.8-dev
Reading package lists... Done
Building dependency tree... Done
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:

The following packages have unmet dependencies.
 libwxgtk2.8-dev : Depends: libwxgtk2.8-0 (= 2.8.12.1+dfsg2-0~48~ubuntu16.04.1) but it is not going to be installed
                   Depends: libwxbase2.8-dev (= 2.8.12.1+dfsg2-0~48~ubuntu16.04.1) but it is not going to be installed
E: Unable to correct problems, you have held broken packages.

Затем Вы добавляете имена пакета к командной строке, пока Вы не добираетесь, более определенное сообщение, чем "не будет установленным":

$ chdist apt-get codeblocks install libwxgtk2.8-dev libwxgtk2.8-0 libwxbase2.8-dev libwxbase2.8-0
Reading package lists... Done
Building dependency tree... Done
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:

The following packages have unmet dependencies.
 libwxbase2.8-0 : Depends: libwxbase2.8-0 (>= 2.8.12.1+dfsg2) but 2.8.12.1+dfsg2-0~48~ubuntu16.04.1 is to be installed
 libwxgtk2.8-0 : Depends: libwxbase2.8-0 (>= 2.8.12.1+dfsg2) but 2.8.12.1+dfsg2-0~48~ubuntu16.04.1 is to be installed
                 Depends: libwxgtk2.8-0 (>= 2.8.12.1+dfsg2) but 2.8.12.1+dfsg2-0~48~ubuntu16.04.1 is to be installed
E: Unable to correct problems, you have held broken packages.
$ dpkg --compare-versions 2.8.12.1+dfsg2-0~48~ubuntu16.04.1 gt 2.8.12.1+dfsg2 && echo yes || echo no
no

Так, переводя в английский язык, wx пакеты в Вашем PPA имеют внутренние зависимости от, по крайней мере, 2.8.12.1+dfsg2, но версия, которую Вы привыкли для Вашего порта передачи для гостеприимного в своем PPA, 2.8.12.1+dfsg2-0~48~ubuntu16.04.1 который является (тонко) на самом деле немного меньше, чем требуемая версия. Необходимо было бы зафиксировать номер версии или (более навязчиво) скорректировать зависимости, чтобы быть более либеральными.

Почему не просто копируют источник и создал двоичные пакеты из коварного, хотя? В то время как они были удалены из гостеприимного, они являются по-видимому все еще устанавливаемыми, если бы просто непосредственно скопированный вперед, и это было бы безусловно опцией наименьшего-количества-усилия. Захватите lp:ubuntu-archive-tools с bzr и выполненный:

$ ./copy-package --from ubuntu --from-suite wily --to ppa:damien-moore/ubuntu/codeblocks-stable --to-suite xenial -b wxwidgets2.8

Затем ожидайте немного, чтобы это скопировал и опубликовал, и все должны быть хорошо. Приводя это к сбою, я рекомендовал бы основывать Ваш wxwidgets2.8 исходный пакет на том в коварном (2.8.12.1+dfsg2-2ubuntu2) и удостоверяясь номер версии, который Вы используете, выдерживает сравнение больше, чем или равный этому.

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

1
ответ дан 28 April 2016 в 02:26
  • 1
    That' s хорошая идея наверняка. Должен будет выбрать между Мультисистемой и этим, я думаю, что оба - отличные решения быть честными. Большое спасибо – Spurkl3z 28 September 2017 в 11:20

Другие вопросы по тегам:

Похожие вопросы: