Как установить библиотеку линукс
Начиная с 3.0-RELEASE, больше нет необходимости указывать options LINUX или options COMPAT_LINUX в Вашем файле конфигурации ядра.
Поддержка Linux приложений осуществляется посредством специального модуля ядра (KLD объекта, «Kernel LoaDable object» ), то есть его можно загрузить/выгрузить «на лету» , без необходимости перезагрузки. Вам потребуется убедиться в наличии следующей строки в файле /etc/rc.conf :
Это, в свою очередь, повлияет на выполнение следующего кода в файле /etc/rc.i386 :
# Start the Linux binary compatibility if requested. # case $
Если Вы хотите проверить, загружен ли модуль, это можно сделать при помощи команды kldstat :
% kldstat Id Refs Address Size Name 1 2 0xc0100000 16bdb8 kernel 7 1 0xc24db000 d000 linux.ko
Если по какой-либо причине Вы не хотите или не можете загрузить KLD, то Вы можете статически включить поддержку Linux в ядро посредством опции options LINUX в файле конфигурации ядра. Затем соберите и проинсталлируйте новое ядро, следуя описанию в секции, посвященной конфигурации ядра .
Установить все требуемые библиотеки можно двумя путями: либо используя порт linux_base , либо установив их вручную .
Этот метод является самым простым, и мы рекомендуем воспользоваться именно им. Процесс аналогичен установке любого другого порта из коллекции портов . Просто выполните следующие команды:
# cd /usr/ports/emulators/linux_base # make install distclean
Теперь Вы можете работать с приложениями для Linux. Некоторые программы, возможно, будут сообщать о несоответствии подверсий некоторых системных библиотек. Однако, практически, это не вызывает каких-либо неудобств.
Если у Вас нет установленной коллекции портов, то можно установить требуемые библиотеки вручную Вам понадобятся разделяемые библиотеки для Linux, которые нужны программам, и runtime-компоновщик. Вам также потребуется создать «теневой корень» : директорию /compat/linux , где будут расположены Linux библиотеки. Если нужно загрузить какую-либо разделяемую библиотеку, FreeBSD сперва будет пытаться найти ее в этом дереве. Так, если программа загружает, например, /lib/libc.so , FreeBSD попытается открыть /compat/linux/lib/libc.so , и если такого файла не существует, будет пытаться открыть /lib/libc.so . Разделяемые библиотеки должны находиться в теневом дереве, а не в пути, сообщаемым командой Linux ld.so .
По мере работы с различными Linux программами, у Вас будет накапливаться некий базовый набор библиотек, которого будет достаточно для большинства существующих Linux приложений.
Что, если при установленном linux_base порте Ваше приложение все равно сообщает об отсутствии необходимой библиотеки? Как узнать, какая именно нужна библиотека и где ее взять? В принципе, есть два способа. Вам необходимо иметь привилегии суперпользователя для их осуществления.
Если у Вас есть доступ к машине, на которой установлен Linux, узнайте, какие библиотеки использует Linux приложение, и просто скопируйте из на свою машину. Например:
Допустим, Вы скачали по FTP Linux версию Doom’а (на Linux машине). Вы можете узнать, какие разделяемые библиотеки нужны Doom’у при помощи команды ldd linuxdoom :
% ldd linuxdoom libXt.so.3 (DLL Jump 3.1) => /usr/X11/lib/libXt.so.3.1.0 libX11.so.3 (DLL Jump 3.1) => /usr/X11/lib/libX11.so.3.1.0 libc.so.4 (DLL Jump 4.5pl26) => /lib/libc.so.4.6.29
Вам потребуются все файлы, перечисленные в последней колонке. Скопируйте их в директорию /compat/linux на Вашей системе, а также создайте символические ссылки на эти файлы, с именами ссылок из первой колонки соответственно. В итоге у Вас на машине должны быть следующие файлы:
/compat/linux/usr/X11/lib/libXt.so.3.1.0 /compat/linux/usr/X11/lib/libXt.so.3 -> libXt.so.3.1.0 /compat/linux/usr/X11/lib/libX11.so.3.1.0 /compat/linux/usr/X11/lib/libX11.so.3 -> libX11.so.3.1.0 /compat/linux/lib/libc.so.4.6.29 /compat/linux/lib/libc.so.4 -> libc.so.4.6.29
Note: Заметьте, что если у Вас уже есть какая-либо из перечисленных библиотек, то ее не нужно копировать заново. Однако, у Вас может быть более старая версия. В этом случае, лучше все-таки скопировать библиотеку поздней версии, изменив соответственно ссылку на нее. Предыдущую версию библиотеки можно удалить. Например, пусть у Вас есть следующие библиотеки:
/compat/linux/lib/libc.so.4.6.27 /compat/linux/lib/libc.so.4 -> libc.so.4.6.27
и какое-либо приложение требует библиотеку более поздней версии, судя по команде ldd :
libc.so.4 (DLL Jump 4.5pl26) -> libc.so.4.6.29
Если подверсии немного отличаются, копировать /lib/libc.so.4.6.29 необязательно, так как программа, скорее всего, будет нормально работать и с устаревшей версией. Тем не менее, Вы можете заменить libc.so :
/compat/linux/lib/libc.so.4.6.29 /compat/linux/lib/libc.so.4 -> libc.so.4.6.29
Note: Символические ссылки важны только для Linux программ. Runtime-компоновщик FreeBSD самостоятельно подберет правильные номера версий библиотек, и Вам не нужно об этом беспокоиться.
Для ELF-программ иногда требуется сделать так называемый «branding» . Если при попытке запустить ELF-файл, Вы получаете следующее сообщение об ошибке:
% ./linux-elf-программа ELF binary type not known Abort
то нужно изменить тип исполняемого файла, чтобы ядро FreeBSD правильно определило, что это Linux программа. Это можно сделать при помощи утилиты brandelf (1) :
% brandelf -t Linux linux-elf-программа
Следует отметить, что программы, для которых необходим «branding» , встречаются все реже и реже, и в недалеком будущем Вы вряд ли прибегнете к нему вообще.
Если DNS не настроен или недоступен, или Вы получаете это сообщение:
resolv+: «bind» is an invalid keyword resolv+: «hosts» is an invalid keyword
Источник
ИТ База знаний
Курс по Asterisk
Полезно
— Узнать IP — адрес компьютера в интернете
— Онлайн генератор устойчивых паролей
— Онлайн калькулятор подсетей
— Калькулятор инсталляции IP — АТС Asterisk
— Руководство администратора FreePBX на русском языке
— Руководство администратора Cisco UCM/CME на русском языке
— Руководство администратора по Linux/Unix
Навигация
Серверные решения
Телефония
FreePBX и Asterisk
Настройка программных телефонов
Корпоративные сети
Протоколы и стандарты
Управление библиотеками в Linux
Когда библиотекарь — пингвин
4 минуты чтения
В данной статье мы посмотрим, что такое статические и динамические библиотеки. Местоположение библиотек по умолчанию. Определение используемых библиотек. Загрузка библиотек.
Онлайн курс по Linux
Мы собрали концентрат самых востребованных знаний, которые позволят тебе начать карьеру администратора Linux, расширить текущие знания и сделать уверенный шаг к DevOps
Библиотеки это набор функций, которые могут использоваться в различных программах. Библиотеки могут быть статические (библиотека привязывается к определенной программе или софт содержит данную библиотеку в своем теле.) и динамическими (библиотеки грузятся в оперативную память и используются). Плюсы первого варианта нет проблемы совместимости, т. к. софт уже в себе содержит библиотеку, библиотека всегда с собой. Но при этом программы становятся большие по размеры и т.к каждая может загружать свои библиотеки, а иногда и одинаковые. Второй вариант значительно лучше, сами программы по своему размеру меньше. Библиотека загружается один раз в оперативку. И следующая программа, которой необходимы такие же функции, берет и использует эти данные.
По умолчанию библиотеки в Linux находятся в двух папках. Это корневая папка /lib в ней находятся библиотеки, которые используют программы, расположенные в корневой папке /bin.
И есть вторая папка /usr/lib. В ней находятся библиотеки, которые используют программы расположенные /usr/bin. Пути к библиотекам указаны файле /etc/ld.so.conf. Данный файл можно просмотреть стандартным способом, через утилиту cat.
Видим, что написано включить все библиотеки, которые расположены по пути, указанном в файле. Те которые оканчиваются на .conf. Он просто включает в себя все настройки, которые находятся в конфигурационных файлах, в данной директории. Переходим в данную директорию.
В данной директории мы можем видеть 2 файла конфигурации, в зависимости от версии и наполнения операционной системы их может быть и больше. Ну и соответственно в конфигурационных файлах находятся пути к директориям, где лежат необходимые для работы библиотеки. Если мы ставим какое, то свое программное обеспечение, которому необходимы дополнительные библиотеки, не идущие в составе дистрибутива linux, то в данной директории может создаться свой конфигурационный файл. Например: если мы используем систему виртуализации VMware, то к каждой VM устанавливаем VMware tools то данное программное обеспечение создаст свой конфигурационный файл с путями для своих библиотек.
Переходим в директорию cd /etc/ и отсортируем так, чтобы в результатах все, что содержит ld.
Видим 3 основных конфигурационных файла. ld.so.conf — это файл конфигурации в котором написано откуда брать дополнительные библиотеки. Директория ls.so.conf.d в которой находятся дополнительные конфигурационные файлы и ld.so.cache это кэш библиотек. Он у нас выстраивается каждый раз для того, чтобы программы при необходимости при запросе библиотек не копались в файлах, а сразу брали из загруженного в оперативную память кэша. Т.е. если мы вносим какие-то изменения в файл конфигурации, добавляем какие-то конфигурационные файлы нам необходимо обновить этот кэш. Кэш обновляется командой ldconfig. Этого, собственно, достаточно, чтобы прогрузить все библиотеки в кэш.
Давайте посмотрим, как, определить какими библиотеками пользуется какая программа.
Для этого мы будем использовать команду ldd и путь к бинарному файлу. Например: Программа ls которая используется для вывода списка файлов в каталоге. Она находится в каталоге /bin/ls.
В результате получим мы следующее:
Мы видим, какие so использует данная программа и соответственно ссылки на них, где они расположены, собственно, so — это наши библиотеки в данном случае.
Возможно добавление библиотек вручную, это может потребоваться если мы ставим совершенно стороннее программное обеспечение, которое очень трудно взаимодействует с Linux или устаревшее. Т.е. которое само не может создать конфигурационный файл и разнести библиотеки в системные директории Linux. Если мы хотим сделать это вручную, тогда нам необходим тот самый файл /etc/ld.so.conf. В данный файл мы можем дописать путь к файлу конфигурации библиотек тех, которые нам нужны. Либо есть более легкий вариант с использованием переменной export LD_LIBRARY_PATH и указать путь к тем особенным библиотекам, которые будет использовать наша «особенная» программа. Обычно все стороннее программное обеспечение устанавливается в папку /opt. Итоговый вариант будет выглядеть как: export LD_LIBRARY_PATH=/opt/soft/lib и когда пройдет экспорт, у нас попробует погрузится из этого пути библиотека, но перед этим необходимо не забыть сделать ldconfig.
Онлайн курс по Linux
Мы собрали концентрат самых востребованных знаний, которые позволят тебе начать карьеру администратора Linux, расширить текущие знания и сделать уверенный шаг к DevOps
Источник
Как установить библиотеку линукс
Начиная с 3.0-RELEASE, больше нет необходимости указывать options LINUX или options COMPAT_LINUX в Вашем файле конфигурации ядра.
Поддержка Linux приложений осуществляется посредством специального модуля ядра (KLD объекта, «Kernel LoaDable object» ), то есть его можно загрузить/выгрузить «на лету» , без необходимости перезагрузки. Вам потребуется убедиться в наличии следующей строки в файле /etc/rc.conf :
Это, в свою очередь, повлияет на выполнение следующего кода в файле /etc/rc.i386 :
# Start the Linux binary compatibility if requested. # case $
Если Вы хотите проверить, загружен ли модуль, это можно сделать при помощи команды kldstat :
% kldstat Id Refs Address Size Name 1 2 0xc0100000 16bdb8 kernel 7 1 0xc24db000 d000 linux.ko
Если по какой-либо причине Вы не хотите или не можете загрузить KLD, то Вы можете статически включить поддержку Linux в ядро посредством опции options LINUX в файле конфигурации ядра. Затем соберите и проинсталлируйте новое ядро, следуя описанию в секции, посвященной конфигурации ядра.
Установить все требуемые библиотеки можно двумя путями: либо используя порт linux_base , либо установив их вручную .
Этот метод является самым простым, и мы рекомендуем воспользоваться именно им. Процесс аналогичен установке любого другого порта из коллекции портов . Просто выполните следующие команды:
# cd /usr/ports/emulators/linux_base # make install distclean
Теперь Вы можете работать с приложениями для Linux. Некоторые программы, возможно, будут сообщать о несоответствии подверсий некоторых системных библиотек. Однако, практически, это не вызывает каких-либо неудобств.
Если у Вас нет установленной коллекции портов, то можно установить требуемые библиотеки вручную Вам понадобятся разделяемые библиотеки для Linux, которые нужны программам, и runtime-компоновщик. Вам также потребуется создать «теневой корень» : директорию /compat/linux , где будут расположены Linux библиотеки. Если нужно загрузить какую-либо разделяемую библиотеку, FreeBSD сперва будет пытаться найти ее в этом дереве. Так, если программа загружает, например, /lib/libc.so , FreeBSD попытается открыть /compat/linux/lib/libc.so , и если такого файла не существует, будет пытаться открыть /lib/libc.so . Разделяемые библиотеки должны находиться в теневом дереве, а не в пути, сообщаемым командой Linux ld.so .
По мере работы с различными Linux программами, у Вас будет накапливаться некий базовый набор библиотек, которого будет достаточно для большинства существующих Linux приложений.
Что, если при установленном linux_base порте Ваше приложение все равно сообщает об отсутствии необходимой библиотеки? Как узнать, какая именно нужна библиотека и где ее взять? В принципе, есть два способа. Вам необходимо иметь привилегии суперпользователя для их осуществления.
Если у Вас есть доступ к машине, на которой установлен Linux, узнайте, какие библиотеки использует Linux приложение, и просто скопируйте из на свою машину. Например:
Допустим, Вы скачали по FTP Linux версию Doom’а (на Linux машине). Вы можете узнать, какие разделяемые библиотеки нужны Doom’у при помощи команды ldd linuxdoom :
% ldd linuxdoom libXt.so.3 (DLL Jump 3.1) => /usr/X11/lib/libXt.so.3.1.0 libX11.so.3 (DLL Jump 3.1) => /usr/X11/lib/libX11.so.3.1.0 libc.so.4 (DLL Jump 4.5pl26) => /lib/libc.so.4.6.29
Вам потребуются все файлы, перечисленные в последней колонке. Скопируйте их в директорию /compat/linux на Вашей системе, а также создайте символические ссылки на эти файлы, с именами ссылок из первой колонки соответственно. В итоге у Вас на машине должны быть следующие файлы:
/compat/linux/usr/X11/lib/libXt.so.3.1.0 /compat/linux/usr/X11/lib/libXt.so.3 -> libXt.so.3.1.0 /compat/linux/usr/X11/lib/libX11.so.3.1.0 /compat/linux/usr/X11/lib/libX11.so.3 -> libX11.so.3.1.0 /compat/linux/lib/libc.so.4.6.29 /compat/linux/lib/libc.so.4 -> libc.so.4.6.29
Note: Заметьте, что если у Вас уже есть какая-либо из перечисленных библиотек, то ее не нужно копировать заново. Однако, у Вас может быть более старая версия. В этом случае, лучше все-таки скопировать библиотеку поздней версии, изменив соответственно ссылку на нее. Предыдущую версию библиотеки можно удалить. Например, пусть у Вас есть следующие библиотеки:
/compat/linux/lib/libc.so.4.6.27 /compat/linux/lib/libc.so.4 -> libc.so.4.6.27
и какое-либо приложение требует библиотеку более поздней версии, судя по команде ldd :
libc.so.4 (DLL Jump 4.5pl26) -> libc.so.4.6.29
Если подверсии немного отличаются, копировать /lib/libc.so.4.6.29 необязательно, так как программа, скорее всего, будет нормально работать и с устаревшей версией. Тем не менее, Вы можете заменить libc.so :
/compat/linux/lib/libc.so.4.6.29 /compat/linux/lib/libc.so.4 -> libc.so.4.6.29
Note: Символические ссылки важны только для Linux программ. Runtime-компоновщик FreeBSD самостоятельно подберет правильные номера версий библиотек, и Вам не нужно об этом беспокоиться.
Для ELF-программ иногда требуется сделать так называемый «branding» . Если при попытке запустить ELF-файл, Вы получаете следующее сообщение об ошибке:
% ./linux-elf-программа ELF binary type not known Abort
то нужно изменить тип исполняемого файла, чтобы ядро FreeBSD правильно определило, что это Linux программа. Это можно сделать при помощи утилиты brandelf (1) :
% brandelf -t Linux linux-elf-программа
Следует отметить, что программы, для которых необходим «branding» , встречаются все реже и реже, и в недалеком будущем Вы вряд ли прибегнете к нему вообще.
Если DNS не настроен или недоступен, или Вы получаете это сообщение:
resolv+: «bind» is an invalid keyword resolv+: «hosts» is an invalid keyword
Источник