Ошибка при загрузке общих библиотек: libssl.so.10: не удается открыть файл общих объектов в Docker - PullRequest
0 голосов
/ 15 мая 2019

Я пытаюсь создать образ с помощью stunnel.

Моя базовая версия ОС,

Linux 2338b11efbe1 4.9.93-linuxkit-aufs # 1 SMP Ср 6 июня 16:55:56 UTC 2018 x86_64 x86_64 x86_64 GNU / Linux

Установка libssl, как показано ниже.

RUN apt-get -y update
RUN apt-get -y install libssl1.0.0 libssl-dev && \
    ln -s libssl.so.1.0.0 libssl.so.10 && \
    ln -s libcrypto.so.1.0.0 libcrypto.so.10

Ниже команды перечислены библиотеки.

RUN ls libssl.so. * Libcrypto.so *

Вывод ------ >>>

libcrypto.so.10
libssl.so.10

Тем не менее, приведенная ниже команда не выполняется.

RUN ./stunnel

Ошибка: -

. / Stunnel: ошибка при загрузке общих библиотек: libssl.so.10: невозможно открыть общий объектный файл: нет такого файла или каталога

Я пропускаю какие-либо другие инструкции здесь.

Вот мой полный докер-файл.

from <BASE_IMAGE>
COPY stunnel .
ENV DEBIAN_FRONTEND noninteractive
RUN apt-get -y update && \
    apt-get -y install libssl1.0.0 libssl-dev && \
    ln -s libssl.so.1.0.0 libssl.so.10 && \
    ln -s libcrypto.so.1.0.0 libcrypto.so.10
RUN ./stunnel

1 Ответ

0 голосов
/ 15 мая 2019

Режим сбоя предполагает, что ваш libssl.so.10 является неработающей символической ссылкой.Значение файла libssl.so.1.0.0 не существует.

Команда, такая как ln -s libssl.so.1.0.0 libssl.so.10, будет выполнена успешно, даже если цель символической ссылки еще не существует.Обычные ls на сломанных символических ссылках также не сообщат ничего плохого.

Если вы хотите убедиться, что символические ссылки не повреждены, проверьте каждую символическую ссылку с помощью test -e.

Более конкретно, используяln -s libssl.so.1.0.0 libssl.so.10 как своего рода 'fix' указывает, что у вас есть другие проблемы: компонент версии soname состоит из полей совместимости abi-version.patch-level.backwards-, и это используется загрузчиком, чтобы определить, является ли данныйфайл библиотеки (символическая ссылка или другое) может соответствовать библиотеке, запрошенной приложением.Как вы можете видеть, используя ln, вы заявляете, что версия ABI 1 совпадает с версией ABI 10. Это может работать не так, как ожидалось.

Наконец, ваши команды ln используют относительные пути, поэтому вывозможно, вы работаете не в том каталоге - поэтому вы в конечном итоге создаете неработающие символические ссылки.В системах на основе Debian libssl.so обычно можно найти в /usr/lib/x86_64-linux-gnu/.Бит x86_64-linux-gnu зависит от архитектуры (как определено поддержкой нескольких арок Debian), этот конкретный пример действителен для 64-битного кода x86.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...