Меню Рубрики

Установка библиотек i386 ubuntu

Записки IT специалиста

Технический блог специалистов ООО»Интерфейс»

Установка 32-разрядного Сервера 1С:Предприятие на 64-разрядную платформу Linux (Ubuntu/Debian)

Несмотря на то, что 64-разрядная платформа на сегодня является основной в серверном сегменте, фирма 1С продолжает продавать отдельно 32-х и 64-х разрядные версии своего Сервера, причем по различной стоимости. При этом у владельцев 32-разрядного сервера возникает необходимость его установки в 64-разрядной среде, если в Windows данная операция не вызывает затруднений, то в среде Linux все оказывается не так просто. Сегодня мы расскажем, как это правильно сделать.

Прежде чем приступать к работе, коротко разберем суть вопроса. Почему установка пакетов другой архитектуры в Linux вызывает определенные затруднения? В отличии от Windows, где в целях совместимости возможность запускать в 64-разрядной среде 32-разрядные приложения заложена на уровне архитектуры системы, дистрибутивы Linux собираются с поддержкой одной единственной архитектуры. Это связано с тем, что свободное ПО распространяется с исходными кодами и собрать пакет для определенной архитектуры не представляет никакого труда, поэтому пользователь 64-разрядного Linux получает с системой полный набор софта нужной разрядности и необходимости использовать пакеты иной архитектуры как правило нет.

Проблемы возникают при использовании коммерческого ПО разные по разрядности версии которого имеют различную стоимость, как в случае с 1С. Вариант с использованием 32-разрядной системы не выдерживает никакой критики, так как имеет существенные ограничения по используемым ресурсам, в первую очередь объему оперативной памяти, и если на этот же сервер планируется установка СУБД, то необходимость использования 64-разрядной платформы становится очевидной.

Для таких случаев все современные системы поддерживают мультиархитектуру, позволяющую устанавливать и запускать пакеты другой архитектуры, но просто установить 32-разрядный сервер 1С на 64-разрядную систему недостаточно, также нужно обеспечить наличие всех необходимых библиотек в 32-разрядном варианте, а это, как показывает практика, задача не столь простая. Данный материал был проверен на Ubuntu Server 14.04 и Debian 8, так как обе системы имеют много общего, то мы расскажем об установке на одну из них, а затем коротко обратим внимание на отличия для второй ОС.

Ubuntu Server 14.04 LTS

Если вы просто попробуете установить 32-разрядные пакеты в 64-разрядной ОС, то у вас ничего не получится, потому что «из коробки» Linux поддерживает только родную архитектуру.

Просмотреть список поддерживаемых архитектур можно командой:

В нашем случае будет только одна amd64, для добавления требуемой архитектуры i386 выполните:

После чего обязательно обновите список пакетов:

Теперь установим требуемые для работы сервера 1С библиотеки и утилиты нужной разрядности:

Требуемый пакет шрифтов Microsoft True Type является универсальным для всех архитектур, поэтому его устанавливаем как обычно, без указания архитектуры.

А вот дальше начинаются сложности. Библиотека libgsf-1-114 отказалась устанавливаться, ссылаясь на неразрешенную зависимость.

Проблема заключается в том, что требуемый пакет libgsf-1-common:i386 не существует, он не содержит ничего, кроме документации и универсальный для всех архитектур.

Ручная установка пакета проблемы не снимает, установщик упорно продолжает требовать i386-пакет. Как быть? В принципе можно установить пакет принудительно, игнорируя зависимости. Однако это сломает систему управления пакетами, и вы не сможете установить, удалить или обновить пакеты, пока не разрешите проблему зависимостей libgsf-1-114, автоматическое разрешение зависимостей приведет к удалению данного пакета.

Самое время вспомнить про getlibs, скрипт для DEB-совместимых систем, который позволяет автоматически устанавливать 32-разрядные библиотеки на 64-разрядные системы. Скачаем данный скрипт со страницы разработчика на GitHub, настоятельно рекомендуем не использовать для получения скрипта иных источников. Разместим его, скажем, в домашней папке и сделаем исполняемым.

Читайте также:  Установка датчика движения дд 008

Теперь с его помощью получим необходимые библиотеки:

Подготовительные действия закончены, можно устанавливать сервер. 1С распространяет пакеты сервера в архивах с именем deb.tar.gz, скачаем такой архив и разместим в домашней папке. Для установки перейдем в домашнюю папку, распакуем архив и установим пакеты.

Установим необходимые права на папку с сервером 1С и запустим службу:

Наш сервер готов к работе.

Debian 8

Мы не будем подробно описывать процесс установки в Debian, так как он ничем принципиально не отличается от Ubuntu, а остановимся лишь на отличиях.

Если мы попытаемся просто установить 32-разрядную утилиту imagemagick, то неожиданно столкнемся с ошибкой: update-alternatives: ошибка: альтернативный путь /usr/bin/compare-im6 не существует.

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

Второе затруднение вызывает пакет ttf-mscorefonts-installer, дело в том, что несвободные репозитории, в которые входит данный пакет, по умолчанию не подключены (по идеологическим причинам). Можно подключить несвободный репозиторий, однако данный пакет по сути является просто скриптом, который скачивает необходимые файлы шрифтов. В связи с этим мы не видим необходимости подключать несвободные репозитории, проще скачать и установить данный пакет отдельно.

Скачать данный пакет можно на странице https://packages.debian.org/jessie/ttf-mscorefonts-installer. Разместим его в домашней папке и установим, перед этим добавив нужные зависимости.

В остальном установка 32-разрядного сервера 1С на 64-разрядный Debian 8 ничем не отличается от установки на Ubuntu 14.04 и не должна вызывать затруднений.

источник

Проблема с установкой i386 библиотек под x86_86

Чего с ней делать-то? Не могу в игрушки погонять.

блин, переходные либы предназначены для других архитектур, для арма там, амд64. не для самого i386 😎

не углядел

Невозможно исправить ошибки, у вас отложены (held) битые пакеты.

Не катит такое, более того, все лишние репы поудалял, оставил только бубунтовые.

в стимовские или через wine?

Баловство это всё. Фанат опенсорс что-ли? Ну выдели раздел под пиратскую винду, дуалбутом, не? Обязательно надо заниматься мозговым онанизмом с элементами мазохизма, костыли прикручивать.
Извини, если резковато ответил, но факт остается фактом, большинство игр таки заточены под винду.

PS. У мну слака, 99% работы, а также музыка/видео на ext4 тоже. А если хочу поиграть — семёрка, покупалась вместе с ноутом, просто не стал грохать насовсем. Однако, пригодилась.

dpkg —add-architecture i386 сделал?

Бинарники Tizen SDK для убунты тоже требуют ia32-libs. И тоже не устанавливаются (на виртуалке). Странно, что они и на Дебиане не ставились. Жду вот бинарников для арча, где с этим все нормально, или PKGBUILD’а хотя бы.

А бинарники обязательно? Если из сырцов собрать?

требуют ia32-libs. И тоже не устанавливаются (на виртуалке). Странно, что они и на Дебиане не ставились.

я ставил в CentOS, Debian, Slackware.

Баловство это всё. Фанат опенсорс что-ли? Ну выдели раздел под пиратскую винду, дуалбутом, не? Обязательно надо заниматься мозговым онанизмом с элементами мазохизма, костыли прикручивать.

Под виндой эти игры гораздо хуже идут =)

Выставь оффициальным репам приоритет выше 1000 и apt-get install -f.

У меня только официальные репы и остались

Да. А еще пакеты из других репов. Репы удалил, пакеты остались.

Поднять приоритет надо для того, чтобы обогнать пакеты, которые _сейчас_ установлены в системе и могут быть более новых версий, чем те, которые есть в репах.

Читайте также:  Установка газовых счетчиков в краснодарском крае

А напомни, как в убунте приоритет повышать?

источник

Библиотеки Ubuntu 16.04

Как вы знаете каждая программа, установленная на вашем компьютере, состоит из нескольких частей. Это непосредственно исполняемый файл, который вы запускаете через терминал, а также библиотеки с набором функций, которые может использовать программа.

Все, без исключения, программы используют библиотеки. Даже если это ваша программа и у нее нет своих библиотек, она использует стандартную библиотеку языка программирования С.

В этой статье мы подробно рассмотрим что такое библиотеки Ubuntu, как их устанавливать, где брать и что делать если библиотека установлена, а программа говорит что ее нет. Мы не будем трогать создание библиотек, это совсем не наша тема. Как обычно, начнем с теории.

Что такое библиотеки

Библиотеки в Linux содержат наборы функций или если сказать проще алгоритмов или действий для решения определенных задач. Например, если программе нужно вывести строку на экран она не начинает сама закрашивать нужные пиксели, а просто обращается к отвечающей за это функции из библиотеки, то же самое если программе нужно прочитать содержимое файла, она не работает с секторами жесткого диска, ей достаточно вызвать функцию из стандартной библиотеки с (libc.so) и передать ей в параметрах имя нужного файла, а библиотека уже вернет ей запрашиваемые данные.

На самом деле, такая структура реализации программного обеспечения очень выгодна, поскольку достаточно написать алгоритм лишь один раз и его смогут использовать все программы просто загружая библиотеку.

Не нужно думать что библиотеки есть только в Linux, в Windows они тоже есть, только имеют другой формат и расширение dll. В Linux же все библиотеки находятся в папах /lib/, /usr/lib, /usr/local/lib или для 64 битных систем также появляется папка lib64 во всех этих подкаталогах, для библиотек специфичных для этой архитектуры. Библиотека имеет расширение .so и ее название начинается со слова lib. Например, libfuse.so, libc.so.

Дальше, после расширения файла .so идет номер версии библиотеки. Номер версии меняется всякий раз, когда разработчики вносят в нее изменения ломающие совместимость со всеми рассчитанными на нее программами. В таком случае в системе будут уже две библиотеки и каждая программа будет использовать правильную версию. Например, glibc.so.6 и glibc.so.5.

Если интересно можно даже посмотреть какие библиотеки и каких версий, использует та или иная программа, например:

linux-vdso.so.1 (0x00007ffd99167000)
libmount.so.1 => /usr/lib64/libmount.so.1 (0x00007f0f6beb0000)
libc.so.6 => /lib64/libc.so.6 (0x00007f0f6bb08000)
libblkid.so.1 => /usr/lib64/libblkid.so.1 (0x00007f0f6b8c8000)
libselinux.so.1 => /lib64/libselinux.so.1 (0x00007f0f6b6a4000)
/lib64/ld-linux-x86-64.so.2 (0x000055aca8227000)
libuuid.so.1 => /usr/lib64/libuuid.so.1 (0x00007f0f6b49f000)
libpcre.so.1 => /usr/lib64/libpcre.so.1 (0x00007f0f6b238000)
libdl.so.2 => /lib64/libdl.so.2 (0x00007f0f6b034000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f0f6ae17000)

Также эта информация может быть полезна при создании портативных версий программ. А теперь давайте рассмотрим как устанавливаются библиотеки в Ubuntu 16.04.

Установка библиотек в Ubuntu

Обычно, если вы используете менеджер пакетов вашего дистрибутива для установки новых программ, то библиотеки устанавливаются автоматически. Но если вы хотите собрать программу из исходников или запустить 32 битную программу на 64 битной системе могут начаться проблемы. Например, при запуске или компиляции программы вы получаете ошибку:

error while loading shared libraries: xxxx.so.0
cannot open shared object file no such file or directory

Обычно, в Ubuntu имена пакетов библиотек соответствуют имени нужной библиотеки. Поэтому чтобы определить точное имя в большинстве случаев достаточно воспользоваться поиском по базе пакетов:

Как видите, найдено два варианта библиотеки, libfuse2 и libfuse-dev.

Читайте также:  Установка задвижки и обратного клапана на трубопроводе

Если библиотека нужна обычной программе и ее не нужно собирать из исходников, то будет достаточно установить библиотеку ubuntu без префикса dev. Например:

sudo apt install libfuse2

Если же вам нужно собрать приложение из исходников, то кроме обычной библиотеки понадобятся заголовочные файлы, в которых содержится описание реализованных в библиотеке функций. Такие пакеты имеют приставку dev, например, libfuse-dev, тогда нужно устанавливать этот пакет, а он уже в зависимостях потянет и обычную библиотеку, если она еще не установлена:

sudo apt install libfuse-dev

Много проблем может вызвать ситуация, когда вам нужно запустить 32 битную программу в 64 битной системе. Например, если вы установили 64 битную версию библиотеки, а программа все равно говорит о том, что не может ее найти, возможно это 32 битная программа и ей необходима именно 32 библиотека. Если программа не устанавливается с помощью пакетного менеджера, вам тоже придется устанавливать библиотеки вручную.

Посмотреть разрядность бинарника можно с помощью утилиты file:

На скриншоте показаны два варианта вывода программы, для 32 бит, в нашем случае Skype и для 64 — mount.

Для того чтобы установить библиотеку Ubuntu с архитектурой i386 сначала необходимо добавить поддержку архитектуры i386 в dpkg:

sudo dpkg —add-architecture i386

Затем обновляем наши репозитории:

А во время установки нужной вам библиотеки теперь необходимо указать архитектуру через двоеточие после имени пакета:

sudo apt install libfuse-dev:i386

Если вы уверенны, что библиотека установлена, но программа все равно говорит, что такой библиотеки нет, то возможно, ей просто нужна другая версия библиотеки. Например, в системе есть libudev.so.0, а программе нужна libudev.so.0.1. Такое случается, если вы попытаетесь установить пакет для другого дистрибутива, особенно в Red Hat системах. Если в репозиториях нет нужной версии библиотеки, то скорее всего, они одинаковы, и можно просто создать символическую ссылку:

ln -s /lib/libudev.so.0 /lib/libudev.so.0.1

Затем программа найдет нужную библиотеку.

Управление библиотеками в Linux

Установка библиотек ubuntu уже рассмотрена, но хотелось бы упомянуть еще пару моментов. Как я сказал, библиотеки ubuntu размещаются в определенных каталогах, но расположение библиотек можно настроить.

Перед тем как библиотека будет подключена к программе, ее должна найти в системе специальная программа — менеджер библиотек. Он берет адреса библиотек из файла /etc/ld.cache, а этот файл формируется утилитой ldconfig, на основе файлов конфигурации /etc/ld.so.conf.

В этом файле перечислены все пути к библиотекам. Если вы хотите добавить свою папку для библиотек просто добавьте ее в этот файл:

Затем обновите кэш просто выполнив:

Теперь ваша библиотека может быть загружена программой, например, вы можете добавить путь /opt/lib или даже /home/user/lib. И система будет нормально грузить оттуда библиотеки.

Посмотреть какие библиотеки находятся в кеше ld.cache можно командой:

Также мы можем проверить находится ли там определенная библиотека:

Еще один способ указать программе где нужно искать библиотеки — это переменная LD_LIBRARY_PATH. Например:

Теперь программы, запускаемые в этом терминале, кроме стандартных путей поиска библиотек, будут использовать и указанную папку.

Выводы

Вот и все. Теперь вы знаете как работают библиотеки Ubuntu, как выполняется установка библиотек Ubuntu и делать так, чтобы программа видела нужную ей библиотеку. У новичков это может вызвать очень много головной боли, но теперь вы знаете что делать и избежите многих ошибок. Если у вас остались вопросы, пишите в комментариях!

источник

Добавить комментарий

Adblock
detector