Stata 14 не удается запуститься на Ubuntu 16.10/17.04/17.10 с “libpng12.so.0” ошибкой. Как я устанавливаю libpng12?

Собственная версия 14 программного обеспечения Stata хорошо работает на LTS 16.04, но я сделал ошибку обновления Ubuntu к 16,10, не думая о возможности, что собственное программное обеспечение (Stata является моим единственным) могло бы повредиться. Я не могу понизить. Stata заявляет:

stata-se: error while loading shared libraries: libpng12.so.0: cannot open shared object file: No such file or directory

Поддержка Stata говорит мне устанавливать libpng12.

Таким образом, мой вопрос, как я могу безопасно установить и сделать эту библиотеку доступной для Stata? (По-видимому, GUI Stata не будет работать совершенно даже с библиотекой, но функциональность будет доступна.)

Попытка Кв. дает:

E: Не мог определить местоположение пакета libpng12

libpng-dev уже установлен и, кажется, не соответствует потребности.

Я предполагаю, что поддержка Stata сказала бы мне, если легкая фиксация как это будет работать, но в попытке фальсифицировать ее с символьными ссылками,

sudo ln -s /usr/lib/i386-linux-gnu/libpng16.so.16.25.0 /usr/lib/i386-linux-gnu/libpng12.so.0

имевший никакое значение.

sudo ln -s /usr/lib/i386-linux-gnu/libpng16.so.16.25.0 /usr/lib/x86_64-linux-gnu/libpng12.so.0

дал:

stata-se: error while loading shared libraries: libpng12.so.0: wrong ELF class: ELFCLASS32
0
задан 29 November 2017 в 12:16

2 ответа

Ваши символьные ссылки не будут работать, потому что Вы создаете ссылку на i386 библиотеку в пути, который обычно разыскивается amd64 библиотеки. Исполняемые файлы, скомпилированные для одной архитектуры (amd64), не могут загрузить совместно использованные библиотеки, скомпилированные для другой архитектуры (i386).

Вы можете обманывать Stata для использования libpng16 вместо libpng12, если Вы удостоверяетесь, что это для той же архитектуры как сам исполняемый файл Stata. Я предположу, что последний для amd64 (полагающий, что сообщение об ошибке жалуется на недопустимый класс ELF ELFCLASS32 который используется только для i386 систем команд).

Похоже, что Stata явно проверяет libpng версию, таким образом, прием, описанный выше и таким образом эти два решения, полагающиеся на него ниже, не будет работать. Обратитесь к Лучшему Решению вместо этого.

Быстрое и грязное решение

Подмена libpng16.so.16 как libpng12.so.0 ко всем amd64 исполняемым файлам:

sudo ln -sfT libpng16.so.16 /usr/lib/x86_64-linux-gnu/libpng12.so.0

Все еще грязный, но с меньшим количеством будущих неожиданностей

Подмена libpng16.so.16 как libpng12.so.0 к выбранным исполняемым файлам только (таким образом устраняющий риск, что другой приложения берет поддельное libpng12.so.0 по ошибке):

  1. Создайте каталог для совместно использованных библиотек “подмены”, например:

    sudo mkdir -p /usr/local/lib/stata/shared-library-hack
    
  2. Поместите символьную ссылку на общую библиотеку маскированную в него:

    sudo ln -s /usr/lib/x86_64-linux-gnu/libpng16.so.16 /usr/local/lib/stata/shared-library-hack/libpng12.so.0
    
  3. Запустите программу с измененным путем поиска библиотеки:

    LD_LIBRARY_PATH=/usr/local/lib/stata/shared-library-hack [COMMAND] [ARGUMENTS...]
    

    Или если Вы хотите сохранить потенциально существующие изменения к пути поиска библиотеки:

    LD_LIBRARY_PATH="${LD_LIBRARY_PATH:+"${LD_LIBRARY_PATH}:"}/usr/local/lib/stata/shared-library-hack" [COMMAND] [ARGUMENTS...]
    

    Если Вы не хотите вводить такую долгую команду каждый раз, когда Вы запускаете такое приложение, можно или использовать обертку сценария оболочки или отредактировать описание начинающего приложения (т.е. Exec= строка файла конфигурации в .desktop файл) соответственно.

Лучшее решение

На самом деле установка libpng12.so.0. Самый легкий путь состоит в том, чтобы загрузить и установить пакет Deb более раннего релиза Ubuntu:

  1. Перейдите к https://packages.ubuntu.com/xenial/amd64/libpng12-0/download, выберите зеркало и загрузите архив пакета.

  2. Используйте свой любимый диспетчер пакетов для установки архива пакета.

    На командной строке можно использовать:

    sudo apt install [DOWNLOAD-PATH]/libpng12-0_*_amd64.deb
    

    (Замена [DOWNLOAD-PATH] с тем, какой бы ни соединяют Вас каналом используемый в качестве целевого каталога загрузки ранее.)

Это не надлежащее решение, потому что обновления libpng12, включая обновления системы защиты, не будет автоматически установлен, так выполнение, это представляет угрозу безопасности. – fkraiem 8 декабря '17 в 4:36

1
ответ дан 3 November 2019 в 12:29

Вот более простой/компактный ответ:

Это тестируется на Stata на 64 бита на Ubuntu 16.10 и 17.10 на 64 бита (но, кажется, перестал работать на 17,04?). Просто:

посещение http://packages.ubuntu.com/xenial/amd64/libpng12-0/download и нажимают на любую из ссылок на зеркала там. Это загрузит libpng12-0_1.2.54-1ubuntu1_amd64.deb. Нажмите на этот файл, или запустите его с чем-то как

gnome-open ~/Downloads/libpng12-0_1.2.54-1ubuntu1_amd64.deb

и нажмите кнопку установки.

Теперь Stata14 и его xstata запустятся прекрасный. Значки будут отсутствовать в меню, но все остальное, кажется, хорошо работает.

-1
ответ дан 3 November 2019 в 12:29

Другие вопросы по тегам:

Похожие вопросы: