Я только что установил Ubuntu 16.04, Гостеприимную на ноутбуке, который я использую для разработки.
Я в настоящее время работаю над плагином для gcc, и я хочу, чтобы мой плагин был совместим с несколькими различными версиями компилятора (в настоящее время от gcc-4.6
кому: gcc-6
). Поэтому мне нужны несколько различных версий компилятора и сменных заголовков, установленных на моей рабочей станции разработки одновременно, так, чтобы я мог создать плагин против различных версий. Это работало как очарование со старым LTS 14.04, но с новым LTS у меня есть проблема, которую я не могу решить.
Я могу легко установить всю версию gcc от gcc-4.7
кому: gcc-5
из репозитория по умолчанию, но когда я пробую, начинают устанавливать gcc-*-plugin-dev
пакеты я сталкиваюсь с проблемами. В основном все прекрасно, если я устанавливаю только gcc-4.8-plugin-dev
, gcc-4.9-plugin-dev
и gcc-5-plugin-dev
. После этого, если я пытаюсь установить gcc-4.7-plugin-dev
Я получаю следующее:
fez@vbox1604:~$ sudo apt install gcc-4.7-plugin-dev
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following additional packages will be installed:
libgmpv4-dev
Suggested packages:
gmp-doc libgmp10-doc libmpfr-dev
The following packages will be REMOVED:
gcc-4.8-plugin-dev gcc-4.9-plugin-dev gcc-5-plugin-dev libgmp-dev libmpc-dev libmpfr-dev
The following NEW packages will be installed:
gcc-4.7-plugin-dev libgmpv4-dev
0 upgraded, 2 newly installed, 6 to remove and 0 not upgraded.
Need to get 1003 kB of archives.
After this operation, 15.0 MB disk space will be freed.
Do you want to continue? [Y/n] n
Abort.
fez@vbox1604:~$
Поскольку Вы видите, что это не позволяет мне установить пакет, если я не удаляю другие. Проблема, кажется, то, что различные версии gcc полагаются на различные версии libgmp
. Если факт gcc-4.8-plugin-dev
и выше потребуйте пакета libgmp-dev
, в то время как gcc-4.7-plugin-dev
требует libgmpv4-dev
. Эти последние два являются на самом деле двумя отдельными пакетами, и они в источнике конфликта.
Это казалось очень странным для меня, с тех пор в Ubuntu 14.04 все работало просто великолепно. Следовательно я решил смотреть на packages.ubuntu.com, Вот то, что я узнал:
о нас libgmp-dev
и libgmpv4-dev
libgmpv4-dev
не существует и все версии gcc-*-plugin-dev
зависьте от libgmp-dev
libgmp-dev
и libgmpv4-dev
. По-видимому, единственная разница между двумя из них - то, что первый остается дома main
репозиторий, в то время как последний находится в universe
. libgmp-dev
зависимости являются тем же в обеих Ubuntu 14.04 и 16.04libgmpv4-dev
на Ubuntu 16.04, вместо этого, зависит от в основном тех же пакетов, но именование и версии немного отличаются, чем те, которые в libgmp-dev
. И libgmpv4-dev
отчеты" (GCC 4.x совместимый)" в его описании. Но я не понимаю, почему это значительно, так как gcc-4.8 находится в 4.x ряд, но он работает превосходный с (non-4.x-compatible?) libgmp-dev
. И до Ubuntu 14.04 также gcc-4.7 работал только с libgmp-dev
таким образом, я не понимаю то, что изменилось.о нас gcc-4.7-plugin-dev
и gcc-4.8-plugin-dev
libgmp-dev
gcc-4.7-plugin-dev
зависит от libgmpv4-dev
gcc-4.8-plugin-dev
зависит от libgmp-dev
У кого-либо из Вас есть какая-либо идея о том, почему вещами является этот путь? Вы знаете, если и как я могу установить обоих версии gcc-4.7-plugin-dev
и gcc-4.8-plugin-dev
на той же машине с Ubuntu 16.04? Я не ниндзя способных зависимостей, но что-то выглядит странным для меня, и мне действительно нужно это для работы как прежде, потому что мне нужен он для моей работы. Иначе я должен откатывать к 14,04 (или сохранить более старую версию gcc в chroot, но я хотел бы избежать его если возможный).
Заранее спасибо
феска
Я сожалею, но кажется, что моя репутация на просит, чтобы человечность не была достаточно высока для регистрации всех ссылок на информацию, которую я обеспечиваю о пакетах и их зависимостях. Я могу обеспечить их позже или в комментариях, если Вам нужны они. Так или иначе достаточно считать packages.ubuntu.com и искать точные имена пакета, которые я обеспечил для нахождения их.
Я знаю, что там существуют ppa для gcc набора инструментальных средств (https://launchpad.net / ~ ubuntu-toolchain-r / + archive/ubuntu/ppa), и я также пытался добавить его к своим источникам. Это позволяет мне установить более широкий диапазон gcc версий (от gcc-4.5
кому: gcc-6
) но это не решает проблему, ни это изменяет что-либо с конфликтами.
Я уже попытался установить версию, которые имеют конфликты в chroot, и это, кажется, работает, но я действительно хотел бы знать, существует ли способ решить эту проблему зависимости без злых шуток. В принципе я хотел бы найти способ сделать установку управляемой с Кв.
Ну, что я делаю должен использовать докера или контейнер LXD для создания "Хостов Компилятора" для предотвращения таких проблем. Может это работать также на Вас?