Я пытаюсь собрать 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
Любые идеи о том, что я я делаю не так?
Сообщения об ошибках, которые Вы получаете из Кв. в этом виде ситуации, являются немного вводящими в заблуждение: это на самом деле говорит Вам что 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.