Stata 14 не запускается на Ubuntu 16.10 / 17.04 / 17.10, с & ldquo; libpng12.so.0 & rdquo; ошибка. Как установить libpng12?

Проприетарное программное обеспечение Stata версии 14 отлично работает на 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? (По-видимому, графический интерфейс Stata не будет работать идеально даже с библиотекой, но функциональность будет доступна.)

Попытка с помощью apt дает:

E: Не удается найти пакет libpng12

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

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

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

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

0
задан 29 November 2017 в 23:16

8 ответов

Ваши символические ссылки не будут работать, потому что вы создаете ссылку на библиотеку 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), :

Создайте каталог для разделяемых библиотек «masquerade», например. g .:
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...]
Или если вы хотите сохранить потенциально существующие изменения в пути поиска библиотеки: [ f5] Если вы не хотите вводить такую ​​длинную команду каждый раз при запуске такого приложения, вы можете использовать оболочку оболочки оболочки или изменить описание стартера приложения (т. е. строфу Exec= в файле .desktop), соответственно.

Правильное решение

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

Создать каталог для разделяемых библиотек «masquerade», например. g .:
sudo mkdir -p /usr/local/lib/stata/shared-library-hack

Создайте каталог для разделяемых библиотек «masquerade», например. g.:

В командной строке вы можете использовать:
sudo apt install [DOWNLOAD-PATH]/libpng12-0_*_amd64.deb
(Заменить [DOWNLOAD-PATH] с помощью того пути, который вы использовали в качестве целевого каталога загрузки ранее.)
0
ответ дан 22 May 2018 в 23:57
  • 1
    До 17.04: ваш " быстрый и грязный " приводит к: «stata: /usr/lib/x86_64-linux-gnu/libpng12.so.0: версия` PNG12_0 'не найдена (требуется stata) " – CPBL 1 September 2017 в 00:12
  • 2
    ... Затем я попробовал ваше «Правильное решение». и stata теперь запускается до 17.04. Значки отсутствуют, но все остальное работает нормально. Благодаря! – CPBL 1 September 2017 в 00:20
  • 3
    Спасибо за ответ! Похоже, Stata явно проверяет версию libpng. Я соответствующим образом скорректировал свой ответ. – David Foerster 1 September 2017 в 02:54
  • 4
    Это не правильное решение, потому что обновления libpng12, включая обновления безопасности, не будут автоматически установлены, поэтому при этом возникает риск безопасности. – fkraiem 8 December 2017 в 08:36

Ваши символические ссылки не будут работать, потому что вы создаете ссылку на библиотеку 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), :

Создайте каталог для разделяемых библиотек «masquerade», например. g .: 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:

Создать каталог для разделяемых библиотек «masquerade», например. g .: sudo mkdir -p /usr/local/lib/stata/shared-library-hack

Создайте каталог для разделяемых библиотек «masquerade», например. g.:

В командной строке вы можете использовать: sudo apt install [DOWNLOAD-PATH]/libpng12-0_*_amd64.deb (Заменить [DOWNLOAD-PATH] с помощью того пути, который вы использовали в качестве целевого каталога загрузки ранее.)
0
ответ дан 18 July 2018 в 15:29

Ваши символические ссылки не будут работать, потому что вы создаете ссылку на библиотеку 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), :

Создайте каталог для разделяемых библиотек «masquerade», например. g .: 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:

Создать каталог для разделяемых библиотек «masquerade», например. g .: sudo mkdir -p /usr/local/lib/stata/shared-library-hack

Создайте каталог для разделяемых библиотек «masquerade», например. g.:

В командной строке вы можете использовать: sudo apt install [DOWNLOAD-PATH]/libpng12-0_*_amd64.deb (Заменить [DOWNLOAD-PATH] с помощью того пути, который вы использовали в качестве целевого каталога загрузки ранее.)
0
ответ дан 24 July 2018 в 20:39

Ваши символические ссылки не будут работать, потому что вы создаете ссылку на библиотеку 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), :

Создайте каталог для разделяемых библиотек «masquerade», например. g .: 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:

Создать каталог для разделяемых библиотек «masquerade», например. g .: sudo mkdir -p /usr/local/lib/stata/shared-library-hack

Создайте каталог для разделяемых библиотек «masquerade», например. g.:

В командной строке вы можете использовать: sudo apt install [DOWNLOAD-PATH]/libpng12-0_*_amd64.deb (Заменить [DOWNLOAD-PATH] с помощью того пути, который вы использовали в качестве целевого каталога загрузки ранее.)
0
ответ дан 31 July 2018 в 23:40

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

Это проверено на 64-битную Stata на 64-битном Ubuntu 16.10 и 17.10 (но, похоже, не работает 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
ответ дан 22 May 2018 в 23:57

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

Это проверено на 64-битную Stata на 64-битном Ubuntu 16.10 и 17.10 (но, похоже, не работает 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
ответ дан 18 July 2018 в 15:29

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

Это проверено на 64-битную Stata на 64-битном Ubuntu 16.10 и 17.10 (но, похоже, не работает 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
ответ дан 24 July 2018 в 20:39

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

Это проверено на 64-битную Stata на 64-битном Ubuntu 16.10 и 17.10 (но, похоже, не работает 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
ответ дан 31 July 2018 в 23:40

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

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