Собственная версия 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
Ваши символьные ссылки не будут работать, потому что Вы создаете ссылку на 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
по ошибке):
Создайте каталог для совместно использованных библиотек “подмены”, например:
sudo mkdir -p /usr/local/lib/stata/shared-library-hack
Поместите символьную ссылку на общую библиотеку маскированную в него:
sudo ln -s /usr/lib/x86_64-linux-gnu/libpng16.so.16 /usr/local/lib/stata/shared-library-hack/libpng12.so.0
Запустите программу с измененным путем поиска библиотеки:
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:
Перейдите к https://packages.ubuntu.com/xenial/amd64/libpng12-0/download, выберите зеркало и загрузите архив пакета.
Используйте свой любимый диспетчер пакетов для установки архива пакета.
На командной строке можно использовать:
sudo apt install [DOWNLOAD-PATH]/libpng12-0_*_amd64.deb
(Замена [DOWNLOAD-PATH]
с тем, какой бы ни соединяют Вас каналом используемый в качестве целевого каталога загрузки ранее.)
Это не надлежащее решение, потому что обновления
libpng12
, включая обновления системы защиты, не будет автоматически установлен, так выполнение, это представляет угрозу безопасности. – fkraiem 8 декабря '17 в 4:36
Вот более простой/компактный ответ:
Это тестируется на 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 запустятся прекрасный. Значки будут отсутствовать в меню, но все остальное, кажется, хорошо работает.