Вопрос зависимость apt отчетов «не установлена» для установленного (виртуального) пакета


Я пытаюсь установить armel библиотеки и gcc-поддержку на armhf система. Я установил libc6-dev:armel чтобы получить armel библиотеки и заголовки, и теперь я считаю, что мне нужно установить gcc-multilib получить gcc для их использования (когда -mfloat-abi=softfp указан). Однако установка пакета не выполняется:

$ sudo apt-get install gcc-4.6-multilib
Reading package lists... Done
Building dependency tree
Reading state information... 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:
 gcc-4.6-multilib : Depends: libsfgcc1 (>= 1:4.6.3-1ubuntu5) but it is not going to be installed or
                             libgcc1-armel but it is not installable
E: Unable to correct problems, you have held broken packages.

libgcc1-armel представляет собой виртуальный пакет, предоставляемый пакетом, который я уже установил:

$ dpkg -s libgcc1:armel | egrep 'Version|Provides'
Version: 1:4.6.3-1ubuntu5
Provides: libgcc1-armel

Почему apt считает этот пакет неустановленным, когда он уже установлен?


Примечание. Я пробовал это с помощью apt / dpkg от точного (с armel указанной в качестве иностранной архитектуры в /etc/dpkg/dpkg.cfg.d/architectures) и с apt / dpkg от кванта (который, кажется, имеет более зрелую многовариантную поддержку, например dpkg --add-architecture).

Примечание 2: Использование libsfgcc1 вместо libgcc1:armel позволяет установить эту библиотеку, но исключает установку других многовариантных библиотек, таких как libssl1.0.0:armel, что требует libgcc1:armel только. Я предполагаю, что libsfgcc1 представляет собой переходную библиотеку, которая была введена перед настоящей многоадресной поддержкой.


4
2017-10-16 18:43


происхождения




ответы:


Ошибки Apt могут быть довольно трудно понять.

Проблема здесь в том, что у вас установлен первый вариант, но мы действительно хотим установить второй вариант и удалить первый.

Дайте ему намек, с apt-get install gcc-4.6-multilib libsfgcc1 делает трюк для меня.


0
2017-11-06 14:03



Спасибо, но, пожалуйста, см. Примечание 2. Я не хочу libsfgcc1 установлен; я хочу libgcc1:armel потому что это требуется libssl1.0.0:armel, Итак, вопрос в том, почему libgcc1-armel рассматривается как неудовлетворенная зависимость, когда она предоставляется libgcc1:armel, который уже установлен? - Trevor Robinson
@Trevor, если libgcc1-armel является «предоставлением» пакета *: armel, тогда его, возможно, считают похожим на libgcc1-armel: armel (который не может удовлетворить требованиям libgcc1-armel: armhf, если только это не будет отмечено «Multi-Arch: foreign» или «Multi-Arch: allowed», а зависимость будет указана для «: armel»)? - imz -- Ivan Zakharyaschev


(Просто предположение, основанное на моем чтении спецификации Multiarch от Debian :)

В этом случае, если libgcc1-armel является «предоставлением» пакета *: armel, тогда его, пожалуй, считают похожим libgcc1-armel:armel, не так ли?

И пакет внешней архитектуры, такой как libgcc1-armel:armel не может удовлетворить требование пакета национальной архитектуры (libgcc1-armel который подобен libgcc1-armel:armhf), если только это не будет отмечено «Multi-Arch: foreign» или «Multi-Arch: allowed», и зависимость будет указана для «: armel». Но это не ясно, как достичь виртуального пакета ...


0
2018-01-07 23:48