Ошибка установки зависимости от libstdc ++ (GLIBCXX _…) при установке RPM

У меня есть окно Linux, на котором я скомпилировал и установил более новую версию GCC (4.3.9), которая присутствует в / usr / lib.

Я использовал этот компилятор для создания набора библиотек, которые я собрал в RPM, но когда я пытаюсь установить этот RPM, он выдает следующие ошибки:

rpm -ivh my-rpm.i586.rpm
error: Failed dependencies:
libstdc++.so.6(GLIBCXX_3.4.10) is needed by my-rpm.i586
libstdc++.so.6(GLIBCXX_3.4.11) is needed by my-rpm.i586
libstdc++.so.6(GLIBCXX_3.4.15) is needed by my-rpm.i586
libstdc++.so.6(GLIBCXX_3.4.20) is needed by my-rpm.i586
libstdc++.so.6(GLIBCXX_3.4.9) is needed by my-rpm.i586

Я знаю, что эти символы предоставляются компилятором gcc:

strings /usr/lib/libstdc++.so.6 | grep GLIBCXX
...
GLIBCXX_3.4.10
GLIBCXX_3.4.11
...
GLIBCXX_3.4.15
...
GLIBCXX_3.4.20

И если я использую ldd для любого из .so файлов, упакованных в RPM, я вижу, что он ожидает правильного libstdc ++:

ldd BUILDROOT/usr/lib/libfoo.so
libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0xb7635000)

Поэтому я думаю, что моя единственная проблема заключается в том, чтобы преобразователь зависимостей RPM выглядел в нужном месте. Этот ответ подразумевает, что LD_LIBRARY_PATH определяет этот путь поиска, но установка этого в моем .bashrc, похоже, не помогла (и я вижу, что он установлен с помощью echo в той же оболочке, из которой я запускаю rpm -i).

Какие переменные мне нужно установить (и где), чтобы установщик RPM понял, где находится мой libstdc ++?

0

Решение

Проблема в том, что rpm работает с «метаданными». Официальный пакет libstdc ++ 6 обеспечивает:

...
libstdc++.so.6(GLIBCXX_3.4.10)
libstdc++.so.6(GLIBCXX_3.4.11)
...

rpm не начнет изучать установленный файл /usr/lib/libstdc++.so.6, чтобы проверить, предоставляет ли он GLIBCXX_3.4.10, Afaik нет способа сказать rpm сделать это. Я вижу несколько способов решить эту проблему; в порядке моих предпочтений:

  1. перестраивать libstdc ++ 4.3.9 rpm самостоятельно и установите его; тогда все зависимости будут работать нормально (вы можете посмотреть Вот найти gcc * src.rpm). Как по мне; это единственное решение на будущее!
  2. при упаковке my-rpm; используйте опцию AutoReqProv: no; сказать rpm не сканировать автоматически для его требований. Конечно, тогда вы можете столкнуться с проблемами зависимости; где вы должны будете определить и установить зависимости вручную.
  3. при установке my-rpm; используйте опцию --nodeps игнорировать зависимости. Это может вызвать проблемы с другими зависимостями (потому что сейчас все зависимости будут игнорироваться).
2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]