diff --git a/ru_RU.KOI8-R/books/handbook/linuxemu/chapter.sgml b/ru_RU.KOI8-R/books/handbook/linuxemu/chapter.sgml index 79ce390898..c6b25895db 100644 --- a/ru_RU.KOI8-R/books/handbook/linuxemu/chapter.sgml +++ b/ru_RU.KOI8-R/books/handbook/linuxemu/chapter.sgml @@ -1,759 +1,960 @@ + + + Jim + Mock + Реструктурировал и частично обновил + + + + + + Brian N. + Handy + Первоначально предоставили + + + Rich + Murphey + + Алексей Докучаев Перевод на русский язык: Работа с приложениями, написанными для Linux - Реструктурировал и частично дополнил &a.jim;, 22 марта - 2000. Оригинальная версия Brian N. Handy и &a.rich; - - + Краткий обзор - В этой главе будет рассказано о том, каким образом можно запускать - приложения, изначально написанные для Linux, под FreeBSD и что нужно - для этого сделать. + Linux - бинарная совместимость + + бинарная совместимость + Linux + - Возможно, Вы спрашиваете себя, зачем FreeBSD нужно уметь работать + FreeBSD предоставляет бинарную совместимость с несколькими другими + &unix; подобными операционными системами, включая Linux. + Возможно, Вы спрашиваете себя, зачем FreeBSD нужно уметь работать с приложениями, написанными для Linux. Ответ на этот вопрос достаточно прост: многие компании и разработчики производят программное обеспечение только для Linux, так как эта операционная система очень быстро завоевала огромную популярность в компьютерном мире. Пользователям же FreeBSD приходится обращаться к этим компаниям и разработчикам с просьбами выпустить версии своих программ специально для FreeBSD. Проблема в том, что большинство производителей программного обеспечения не осознают, насколько бы увеличился их рынок сбыта, выпускай они FreeBSD версии наряду с Linux версиями, и продолжают разрабатывать только под Linux. Что же делать пользователям FreeBSD? В этой ситуации на помощь приходит Linux эмуляция. Вкратце, FreeBSD позволяет Вам работать с 90% приложений для - Linux без каких-либо модификаций последних. Среди них: Star Office, - Linux версия Netscape, Adobe Acrobat, RealPlayer 5 и 7, VMWare, - Oracle, WordPerfect, Doom, Quake и многие другие. Есть сведения, что + Linux без каких-либо модификаций последних. Среди них: + &staroffice;, Linux версия + &netscape;, + &adobe; &acrobat;, + RealPlayer + 5 и 7, VMware, + &oracle;, WordPerfect, + Doom, Quake, + и многие другие. Есть сведения, что в некоторых ситуациях эти Linux программы показывали более высокую производительность при работе под FreeBSD, чем под Linux. - Конечно, существует некоторые особенности Linux, которые (пока) не + + Linux + файловая система /proc + + + Конечно, существует некоторые особенности Linux, которые не поддерживаются в полной мере FreeBSD. Например, так обстоят дела с приложениями Linux, использующими файловую систему /proc, так как реализация последней сильно - отличается от таковой в FreeBSD (однако, ситуация меняется к лучшему: - в FreeBSD-CURRENT поддержка Linux procfs уже встроена в систему). - Существуют также системные вызовы, специфичные для i386, как, - например, переключение в режим V86. + отличается от файловой системы /proc в FreeBSD. + Существуют также системные вызовы, специфичные для &i386;, как, + например, переключение в виртуальный режим 8086. + + При чтении этой главы вы узнаете: + + + Как включить бинарную совместимость с Linux в + вашей системе. + + + + Как установить дополнительные совместно используемые + библиотеки Linux. + + + + Как установить приложения Linux в систему + FreeBSD. + + + + Детали реализации совместимости с Linux в + FreeBSD. + + + + Перед прочтением этой главы вам + потребуется: + + + + Узнать как устанавливать дополнительное + программное обеспечение сторонних разработчиков + (). + + - О том, как установить поддержку запуска Linux программ, читайте в - следующей секции. - Инсталляция + Установка - Начиная с 3.0-RELEASE, больше нет необходимости указывать - options LINUX или options - COMPAT_LINUX в Вашем файле конфигурации ядра. + KLD (загружаемый объект ядра) - Поддержка Linux приложений осуществляется посредством специального - модуля ядра (KLD объекта, Kernel LoaDable object), то - есть его можно загрузить/выгрузить на лету, без - необходимости перезагрузки. Вам потребуется убедиться в наличии - следующей строки в файле /etc/rc.conf: + Бинарная совместимость с Linux не включена по умолчанию. + Простейший способ включения этой функциональности заключается + в загрузке KLD объекта linux (Kernel + LoaDable object). Вы можете загрузить этот модуль, + просто набрав linux в командной строке. - linux_enable=YES + Если вы хотите, чтобы совместимость с Linux была включена + постоянно, необходимо добавить в /etc/rc.conf + следующую строку: - Это, в свою очередь, повлияет на выполнение следующего кода в - файле /etc/rc.i386: + linux_enable="YES" - # Start the Linux binary compatibility if requested. -# -case ${linux_enable} in -[Yy][Ee][Ss]) - echo -n ' linux'; linux > /dev/null 2>&1 - ;; -esac - - Если Вы хотите проверить, загружен ли модуль, это можно сделать - при помощи команды kldstat: + Для проверки того, загружен ли KLD, может быть использована + команда &man.kldstat.8;: &prompt.user; kldstat Id Refs Address Size Name 1 2 0xc0100000 16bdb8 kernel 7 1 0xc24db000 d000 linux.ko - Если по какой-либо причине Вы не хотите или не можете загрузить - KLD, то Вы можете статически включить поддержку Linux в ядро - посредством опции options LINUX в файле + + параметры ядра + LINUX + + + Если по какой-либо причине вы не хотите или не можете загрузить + KLD, то вы можете статически включить поддержку Linux в ядро + посредством опции options COMPAT_LINUX в файле конфигурации ядра. Затем соберите и проинсталлируйте новое ядро, - следуя описанию в секции, посвященной конфигурации ядра. + следуя описанию в . Установка необходимых Linux библиотек + + Linux + установка библиотек Linux + + Установить все требуемые библиотеки можно двумя путями: либо используя порт linux_base, либо установив их вручную. Установка с помощью порта linux_base + коллекция портов + Этот метод является самым простым, и мы рекомендуем воспользоваться именно им. Процесс аналогичен установке любого - другого порта из коллекции портов. + другого порта из коллекции портов. Просто выполните следующие команды: &prompt.root; cd /usr/ports/emulators/linux_base &prompt.root; make install distclean Теперь Вы можете работать с приложениями для Linux. Некоторые программы, возможно, будут сообщать о несоответствии подверсий некоторых системных библиотек. Однако, практически, это не вызывает каких-либо неудобств. + + Возможно наличие нескольких версий порта emulators/linux_base, соответствующих + различным версиям разных дистрибутивов Linux. Вы должны + установить порт, наиболее близко соотвествующий требованиям + приложений 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 приложений. - Как установить дополнительные разделяемые библиотеки + Как установить дополнительные совместно используемые библиотеки + + совместно используемые библиотеки Что, если при установленном linux_base - порте Ваше приложение все равно сообщает об отсутствии необходимой + порте ваше приложение все равно сообщает об отсутствии необходимой библиотеки? Как узнать, какая именно нужна библиотека и где ее взять? В принципе, есть два способа. Вам необходимо иметь привилегии суперпользователя для их осуществления. - Если у Вас есть доступ к машине, на которой установлен Linux, + Если у вас есть доступ к машине, на которой установлен Linux, узнайте, какие библиотеки использует Linux приложение, и просто скопируйте из на свою машину. Например: - Допустим, Вы скачали по FTP Linux версию Doom'а (на Linux + Допустим, вы скачали по FTP Linux версию + Doom (на Linux машине). Вы можете узнать, какие разделяемые библиотеки нужны - Doom'у при помощи команды ldd linuxdoom: + Doom при помощи команды + ldd linuxdoom: &prompt.user; 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 на вашей системе, а также создайте символические ссылки на эти файлы, с именами ссылок из - первой колонки соответственно. В итоге у Вас на машине должны + первой колонки соответственно. В итоге у вас на машине должны быть следующие файлы: /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 +/compat/linux/lib/libc.so.4.6.29 +/compat/linux/lib/libc.so.4 -> libc.so.4.6.29
- Заметьте, что если у Вас уже есть какая-либо из + Заметьте, что если у вас уже есть какая-либо из перечисленных библиотек, то ее не нужно копировать заново. - Однако, у Вас может быть более старая версия. В этом + Однако, у вас может быть более старая версия. В этом случае, лучше все-таки скопировать библиотеку поздней версии, изменив соответственно ссылку на нее. Предыдущую - версию библиотеки можно удалить. Например, пусть у Вас есть + версию библиотеки можно удалить. Например, пусть у вас есть следующие библиотеки: /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
Символические ссылки важны только для Linux программ. Runtime-компоновщик FreeBSD самостоятельно подберет правильные номера версий библиотек, - и Вам не нужно об этом беспокоиться. + и вам не нужно об этом беспокоиться.
- Настройка Linux ELF-исполняемых файлов + Установка Linux ELF исполняемых файлов + + + Linux + ELF исполняемые файлы + - Для ELF-программ иногда требуется сделать так называемый + Для ELF программ иногда требуется сделать так называемый branding. Если при попытке запустить ELF-файл, Вы получаете следующее сообщение об ошибке: &prompt.user; ./linux-elf-программа ELF binary type not known Abort то нужно изменить тип исполняемого файла, чтобы ядро FreeBSD правильно определило, что это Linux программа. Это можно сделать при помощи утилиты &man.brandelf.1;: &prompt.user; brandelf -t Linux linux-elf-программа - Следует отметить, что программы, для которых необходим - branding, встречаются все реже и реже, и в недалеком - будущем Вы вряд ли прибегнете к нему вообще. + GNU toolchain + + В настоящее время GNU toolchain помещает необходимую информацию + в исполняемые файлы ELF автоматически, поэтому необходимость + в этом действии случается все реже и реже, и в недалеком + будущем вы вряд ли прибегнете к нему вообще. Распознавание доменных имен - Если DNS не настроен или недоступен, или Вы получаете это + Если DNS не настроен или недоступен, или вы получаете это сообщение: resolv+: "bind" is an invalid keyword resolv+: "hosts" is an invalid keyword - то Вам нужно создать (модифицировать) файл + то вам нужно создать (модифицировать) файл /compat/linux/etc/host.conf, содержащий: order hosts, bind multi on - Таким образом, Вы указываете, то сначала производится поиск в + Таким образом, вы указываете, то сначала производится поиск в файле /etc/hosts, а только затем запрашивается DNS. Когда файл /compat/linux/etc/host.conf отсутствует, Linux приложения находят файл /etc/host.conf для FreeBSD и сообщают о - несовместимом синтаксисе. Если Вы не настраивали сервер имен + несовместимом синтаксисе. Если вы не настраивали сервер имен (/etc/resolv.conf), уберите bind из файла /compat/linux/etc/host.conf.
- Установка пакета Mathematica - - Обновлено для Mathematica версии 4.x &a.murray; - и объединено с работой Bojan Bistrovic - bojanb@physics.odu.edu. - - Ниже описано, как установить Linux версию пакета Mathematica 4.x - на FreeBSD систему. - - Linux версия Mathematica отлично работает под FreeBSD, однако - исполняемые файлы должны быть модифицированы утилитой - &man.brandelf.1;. - - Linux версия пакета Mathematica или Mathematica для Студентов + + + + Murray + Stokely + Обновил для Mathematica 4.X + + + + + Bojan + Bistrovic + Объединено с работой + + + + + Установка &mathematica; + + + приложения + Mathematica + + + Ниже описано, как установить Linux версию пакета + &mathematica; 4.X + на систему FreeBSD. + + Linux версия &mathematica; отлично + работает под FreeBSD, однако + исполняемые файлы, поставляемые Wolfram, должны быть модифицированы + утилитой &man.brandelf.1;, чтобы FreeBSD знала о необходимости + использования Linux ABI для их выполнения. + + Linux версия пакета &mathematica; + или &mathematica; для студентов может быть заказана непосредственно через Wolfram по адресу http://www.wolfram.com/. + url="http://www.wolfram.com/">. Модификация исполняемых файлов - Исполняемые файлы пакета Mathematica находятся в директории + Исполняемые файлы пакета &mathematica; + находятся в директории Unix на компакт диске с дистрибутивом. - Скопируйте эту директорию (вместе со всеми подкаталогами) на Ваш + Скопируйте эту директорию (вместе со всеми подкаталогами) на ваш жесткий диск, чтобы модифицировать (утилитой &man.brandelf.1;) исполняемые файлы перед инсталляцией: &prompt.root; mount /cdrom &prompt.root; cp -rp /cdrom/Unix/ /localdir/ &prompt.root; brandelf -t Linux /localdir/Files/SystemFiles/Kernel/Binaries/Linux/* &prompt.root; brandelf -t Linux /localdir/Files/SystemFiles/FrontEnd/Binaries/Linux/* &prompt.root; brandelf -t Linux /localdir/Files/SystemFiles/Installation/Binaries/Linux/* &prompt.root; brandelf -t Linux /localdir/Files/SystemFiles/Graphics/Binaries/Linux/* &prompt.root; brandelf -t Linux /localdir/Files/SystemFiles/Converters/Binaries/Linux/* &prompt.root; brandelf -t Linux /localdir/Files/SystemFiles/LicenseManager/Binaries/Linux/mathlm &prompt.root; cd /localdir/Installers/Linux/ &prompt.root; ./MathInstaller - Вы также можете установить ELF brand по умолчанию в Linux - brand с помощью команды: + Вы также можете установить ELF brand по умолчанию для всех + приложений Linux, которым это требуется, с помощью команды: - &prompt.root; sysctl -w kern.fallback_elf_brand=3 + &prompt.root; sysctl kern.fallback_elf_brand=3 - Это заставит FreeBSD думать о том, что все программы не - обработанные &man.brandelf.1; используют Linux ABI и Вы сможете + FreeBSD будет считать, что все программы, не + обработанные &man.brandelf.1; используют Linux ABI и вы сможете запустить MathInstaller прямо с CDROM. - Пароль к пакету Mathematica + Пароль к пакету &mathematica; - Вам необходимо зарегистрировать свою копию пакета Mathematica и + Вам необходимо зарегистрировать свою копию пакета + &mathematica; и получить от Wolfram специальный пароль, соответствующий - идентификатор машины. + идентификатору машины. + + + Ethernet + MAC адрес + - После того, как Вы установили необходимые библиотеки и - распаковали файлы Mathematica, получите идентификатор + После того, как вы установили необходимые библиотеки и + распаковали файлы &mathematica;, + получите идентификатор машины, запустив программу mathinfo в инсталляционной директории. Идентификатор машины зависит от - MAC-адреса Вашей первой ethernet-карточки. + MAC-адреса вашей первой Ethernet-карты. &prompt.root; cd /localdir/Files/SystemFiles/Installation/Binaries/Linux &prompt.root; mathinfo disco.example.com 7115-70839-20412 При регистрации, либо по телефону или факсу, либо по - электронной почте, Вы сообщаете Ваш идентификатор + электронной почте, вы сообщаете идентификатор машины, а в ответ получаете пароль, состоящий из нескольких - чисел. Введите этот пароль при первом запуске Mathematica. + чисел. Введите этот пароль при первом запуске + &mathematica;, как и для + любой другой платформы. - Внешний интерфейс пакета Mathematica + Подключение интерфейс &mathematica; через сеть - Mathematica использует специальные шрифты для отображения + &mathematica; использует специальные + шрифты для отображения некоторых символов, которые отсутствуют в стандартных шрифтах (символы интегралов, сумм, греческий алфавит и другие). Протокол X требует, чтобы эти шрифты были установлены - локально. Это означает, что Вы должны - скопировать эти шрифты с компакт диска или сетевого узла на Ваш + локально. Это означает, что вы должны + скопировать эти шрифты с компакт диска или сетевого узла + &mathematica; на ваш жесткий диск. Обычно, все шрифты должны находиться в каталоге /cdrom/Unix/Files/SystemFiles/Fonts компакт диска или /usr/local/mathematica/SystemFiles/Fonts на винчестере. Собственно файлы со шрифтами находятся в подкаталогах Type1 и X. О том, как их использовать, читайте ниже. Можно просто скопировать их в один из существующих подкаталогов в директории /usr/X11R6/lib/X11/fonts. В этом - случае, Вам потребуется отредактировать файл + случае, вам потребуется отредактировать файл fonts.dir, добавив в него названия шрифтов и - изменив число шрифтов в первой строке. Или Вы можете запустить - программу mkfontdir, находясь в том каталоге, - куда Вы скопировали шрифты. + изменив число шрифтов в первой строке. Или вы можете запустить + программу &man.mkfontdir.1;, находясь в том каталоге, + куда вы скопировали шрифты. Есть альтернативный способ: скопировать директории в каталог /usr/X11R6/lib/X11/fonts: &prompt.root; cd /usr/X11R6/lib/X11/fonts &prompt.root; mkdir X &prompt.root; mkdir MathType1 &prompt.root; cd /cdrom/Unix/Files/SystemFiles/Fonts &prompt.root; cp X/* /usr/X11R6/lib/X11/fonts/X &prompt.root; cp Type1/* /usr/X11R6/lib/X11/fonts/MathType1 &prompt.root; cd /usr/X11R6/lib/X11/fonts/X &prompt.root; mkfontdir &prompt.root; cd ../MathType1 -&prompt.root; mkfontdir +&prompt.root; mkfontdir Теперь добавьте каталоги с новыми шрифтами в путь к шрифтам: &prompt.root; xset fp+ /usr/X11R6/lib/X11/fonts/X &prompt.root; xset fp+ /usr/X11R6/lib/X11/fonts/MathType1 &prompt.root; xset fp rehash - Если Вы используете XFree86, то можно просто прописать эти + Если вы используете &xfree86;, + то можно просто прописать эти каталоги в файле XF86Config. - Если на Вашем компьютере нет каталога - /usr/X11R6/lib/X11/fonts/Type1, то замените + шрифты + + Если на вашем компьютере нет каталога + /usr/X11R6/lib/X11/fonts/Type1, замените MathType1 на Type1 в предыдущем примере. - - Установка Oracle + + Installing &maple; * + + Этот раздел не переведен. + - Автор Marcel Moolenaar - marcel@cup.hp.com + + Installing &matlab; * + + Этот раздел не переведен. + + + + + + + Marcel + Moolenaar + Предоставил + + + + + Установка &oracle; + + + приложения + Oracle + Введение - Ниже описан процесс установки Oracle 8.0.5 и Oracle 8.0.5.1 - Enterprise Edition для Linux на систему с FreeBSD. + + Ниже описан процесс установки &oracle; + 8.0.5 и &oracle; 8.0.5.1 Enterprise + Edition для Linux на систему FreeBSD. Настройка Linux окружения - Удостоверьтесь, что порты linux_base и - linux_devtools установлены на Вашей системе. - Они появились в коллекции портов после выхода FreeBSD 3.2. Если Вы - используете FreeBSD 3.2 или более раннюю, обновите коллекцию портов. - Нелишним будет и апгрейд до более поздней версии FreeBSD. Если у - Вас возникнут трудности с linux_base-6.1 или - linux_devtools-6.1, воспользуйтесь версией 5.2 - этих пакетов. + Удостоверьтесь, что порты emulators/linux_base и + devel/linux_devtools установлены + на вашей системе. Если у вас возникнут трудности с этими портами, + воспользуйтесь более ранней их версией. - Если Вы хотите использовать intelligent agent, Вам также + Если вы хотите использовать intelligent agent, также понадобится TCL пакет от Red Hat: tcl-8.0.3-20.i386.rpm. Для этого - воспользуйтесь следующей командой: + воспользуйтесь следующей командой RPM + (archivers/rpm): - &prompt.root; rpm -i --ignoreos --root /compat/linux --dbpath /var/lib/rpm package + &prompt.root; rpm -i --ignoreos --root /compat/linux --dbpath /var/lib/rpm пакет - Установка этого пакета должна пройти без каких-либо ошибок. + Установка этого пакета должна + пройти без каких-либо ошибок. - Настройка окружения Oracle + Настройка окружения &oracle; - Прежде чем Вы сможете установить Oracle, Вам необходимо - обеспечить нужное окружение. Ниже описывается, что - конкретно нужно сделать, чтобы успешно запускать - Oracle для Linux под FreeBSD. За общими сведениями обратитесь к - фирменному руководству по инсталляции Oracle. + Прежде чем вы сможете установить + &oracle;, вам необходимо + обеспечить соответствующее окружение. Ниже дана информация, что + именно нужно сделать, чтобы успешно запускать + &oracle; для Linux под FreeBSD, + а не то, что написано в фирменном руководстве по установке + &oracle;. Настройка ядра - Как описывается в руководстве по инсталляции, необходимо + настройка ядра + + Как описывается в руководстве по установке + &oracle;, необходимо установить максимальный размер разделяемой памяти. Не используйте SHMMAX под FreeBSD. SHMMAX высчитывается, исходя из SHMMAXPGS и PGSIZE. Следовательно, нужно задавать SHMMAXPGS. За информацией о прочих опциях - обратитесь к фирменному руководству: + обратитесь к фирменному руководству. Пример настроек: options SHMMAXPGS=10000 options SHMMNI=100 options SHMSEG=10 options SEMMNS=200 options SEMMNI=70 options SEMMSL=61 Установите эти опции в зависимости от того, как и для чего - Вы будете использовать Oracle. + вы будете использовать &oracle;. Не забудьте добавить следующие строки в файл конфигурации ядра: options SYSVSHM # разделяемая память SysV options SYSVSEM # семафоры SysV options SYSVMSG # межпроцессное взаимодействие SysV - Oracle аккаунт - - Вам нужно создать специальный Oracle аккаунт, как и любой - другой аккаунт. Единственное отличие в том, что Вы должны указать - для него командный интерпретатор Linux: - /compat/linux/bin/bash. Не забудьте добавить - /compat/linux/bin/bash в файл - /etc/shells. + Учетная запись &oracle; + + Создайте специальную учетную запись + oracle, как и любую другую учетную запись. + Единственное отличие в том, что для oracle + необходимо указать командный интерпретатор Linux. + Добавьте /compat/linux/bin/bash в + /etc/shells и установите для + oracle командный интерпритатор + /compat/linux/bin/bash. Переменные окружения - Кроме стандартных переменных окружения, таких как - ORACLE_HOME и ORACLE_SID, Вам нужно + Кроме стандартных переменных окружения + &oracle;, таких как + ORACLE_HOME и ORACLE_SID, вам нужно будет установить следующие дополнительные переменные: + + Переменная Значение LD_LIBRARY_PATH $ORACLE_HOME/lib CLASSPATH $ORACLE_HOME/jdbc/lib/classes111.zip PATH /compat/linux/bin /compat/linux/sbin /compat/linux/usr/bin /compat/linux/usr/sbin /bin /sbin /usr/bin /usr/sbin /usr/local/bin $ORACLE_HOME/bin Желательно устанавливать их в файле .profile. Вот реальный пример: ORACLE_BASE=/oracle; export ORACLE_BASE ORACLE_HOME=/oracle; export ORACLE_HOME LD_LIBRARY_PATH=$ORACLE_HOME/lib export LD_LIBRARY_PATH ORACLE_SID=ORCL; export ORACLE_SID ORACLE_TERM=386x; export ORACLE_TERM CLASSPATH=$ORACLE_HOME/jdbc/lib/classes111.zip export CLASSPATH -PATH=/compat/linux/bin:/compat/linux/sbin:/compat/linux/usr/bin:/compat/linux/usr/sbin:/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:$ORACLE_HOME/bin +PATH=/compat/linux/bin:/compat/linux/sbin:/compat/linux/usr/bin +PATH=$PATH:/compat/linux/usr/sbin:/bin:/sbin:/usr/bin:/usr/sbin +PATH=$PATH:/usr/local/bin:$ORACLE_HOME/bin export PATH - Инсталляция Oracle - - Из-за небольшой несовместимости с Linux эмулятором, Вам нужно - будет создать подкаталог .oracle в директории - /var/tmp прежде чем можно будет начать - инсталляцию. Либо сделайте ее владельцем пользователя oracle, либо - поставьте права на запись для всех. Если Вы все сделали правильно, - то инсталляция должна пройти без проблем. Если какие-либо трудности - все же возникли, проверьте еще раз все конфигурационные файлы и - целостность дистрибутива. После окончания установки, приложите - патчи (смотрите следующие две секции). + Установка &oracle; + + Из-за небольшой несовместимости с Linux эмулятором, вам нужно + будет создать подкаталог .oracle в каталоге + /var/tmp прежде, чем можно будет начать + установку. Либо сделайте ее владельцем пользователя + oracle, либо поставьте права на запись для всех. + Если вы все сделали правильно, то установка + &oracle; должна пройти без проблем. Если + какие-либо трудности все же возникли, проверьте еще раз все + конфигурационные файлы и/или целостность дистрибутива + &oracle;. После окончания установки + &oracle; приложите патчи + (смотрите следующие два раздела). Одна из часто возникающих проблем — неправильно установленный TCP адаптер. В результате, невозможно запустить TCP сервисы. Вот решение проблемы: &prompt.root; cd $ORACLE_HOME/network/lib &prompt.root; make -f ins_network.mk ntcontab.o &prompt.root; cd $ORACLE_HOME/lib &prompt.root; ar r libnetwork.a ntcontab.o &prompt.root; cd $ORACLE_HOME/network/lib &prompt.root; make -f ins_network.mk install Не забудьте повторно запустить root.sh! Модификация root.sh - Инсталлируя Oracle, необходимо выполнить некоторые действия + При установке &oracle; + необходимо выполнить некоторые действия (имея при этом привилегии суперпользователя). Фактически это сводится к выполнению скрипта root.sh, который находится в директории orainst. Перед запуском, приложите к нему следующий патч (исправляет местонахождение утилиты chown), либо запускайте его в командном интерпретаторе Linux. *** orainst/root.sh.orig Tue Oct 6 21:57:33 1998 --- orainst/root.sh Mon Dec 28 15:58:53 1998 *************** *** 31,37 **** # This is the default value for CHOWN # It will redefined later in this script for those ports # which have it conditionally defined in ss_install.h ! CHOWN=/bin/chown # # Define variables to be used in this script --- 31,37 ---- # This is the default value for CHOWN # It will redefined later in this script for those ports # which have it conditionally defined in ss_install.h ! CHOWN=/usr/sbin/chown # # Define variables to be used in this script - Если Вы инсталлируете Oracle не с компакт диска, то можно - модифицировать файл rthd.sh, который - находится в директории orainst. + Если вы устанавливаете &oracle; + не с компакт диска, можно модифицировать исходный файл + root.sh. Он называется + rthd.sh и находится в каталоге + orainst. Модификация genclntsh - Скрипт genclntsh используется для того, чтобы создать единую - разделяемую клиентскую библиотеку. Приложите следующий патч, - чтобы закомментировать определение переменной PATH: + Скрипт genclntsh используется для того, + чтобы создать единую совместно используемую клиентскую библиотеку, + которая используется для создания демонстраций. Приложите следующий + патч, чтобы закомментировать определение переменной + PATH: *** bin/genclntsh.orig Wed Sep 30 07:37:19 1998 --- bin/genclntsh Tue Dec 22 15:36:49 1998 *************** *** 32,38 **** # # Explicit path to ensure that we're using the correct commands #PATH=/usr/bin:/usr/ccs/bin export PATH ! PATH=/usr/local/bin:/bin:/usr/bin:/usr/X11R6/bin export PATH # # each product MUST provide a $PRODUCT/admin/shrept.lst --- 32,38 ---- # # Explicit path to ensure that we're using the correct commands #PATH=/usr/bin:/usr/ccs/bin export PATH ! #PATH=/usr/local/bin:/bin:/usr/bin:/usr/X11R6/bin export PATH # # each product MUST provide a $PRODUCT/admin/shrept.lst - Запуск и использование Oracle + Запуск &oracle; - Теперь, если Вы все сделали правильно, то можете использовать - Oracle так же, как если бы Вы поставили его на Linux систему. + Теперь, если вы все сделали правильно, то можете использовать + &oracle; так же, как и в системе + Linux. - + + + Installing &sap.r3; * + + Этот раздел не переведен. + + + Дополнительные сведения - Если Вы интересуетесь, как работает Linux эмуляция, эта секция для - Вас. Большинство материала взято из электронного письма, адресованного + Если вы интересуетесь, как работает Linux эмуляция, этот раздел для + вас. Большинство материала взято из электронного письма, адресованного &a.chat; by Terry Lambert tlambert@primenet.com (ID письма: <199906020108.SAA07001@usr09.primenet.com>). Как все это устроено? + загрузчик исполнимых классов FreeBSD поддерживает абстракцию, называемую загрузчик исполнимых классов, который фактически является первой стадией системного вызова &man.execve.2;. На самом деле, FreeBSD имеет несколько загрузчиков вместо одного, который, в случае неудачи, выполняет программу как сценарий (скрипт). - Исторически сложилось, что единственный загрузчик в UNIX + Исторически сложилось, что единственный загрузчик в &unix; системах проверял магическое число (чаще всего первые 4 или 8 байт файла), чтобы определить, известен ли формат исполняемого файла системе, и если да, то вызвал соответствующий загрузчик. Если файл не опознавался системой как исполнимый, &man.execve.2; возвращал ошибку, и текущий командный интерпретатор начинал выполнять файл как скрипт. Позднее, &man.sh.1; был модифицирован, так, чтобы проверять первые два символа в файле, и если они оказывались :\n, то файл выполнялся как сценарий для &man.csh.1; (утверждается, что SCO были первыми, кто сделал эту модификацию). FreeBSD ведет себя по-другому: пробегает по списку загрузчиков, включая специальный #! загрузчик, который вызывает нужный интерпретатор или /bin/sh, если не нашел подходящего. + ELF Формат исполняемого файла FreeBSD определяет по магическому числу. На этой стадии пока не различается, для какой операционной системы предназначен файл - (Linux, Solaris, или любой другой, использующей ELF-формат + (Linux, &solaris;, или любой другой, использующей ELF-формат исполняемых файлов). + Solaris Далее, ELF-загрузчик определяет марку (специальный комментарий; отсутствует в исполняемых файлах - SVR4/Solaris) исполняемого файла, то есть для какой операционной + SVR4/&solaris;) исполняемого файла, то есть для какой операционной системы он предназначен. Соответственно, Linux программы должны быть маркированы для Linux (например, с помощью утилиты &man.brandelf.1;): &prompt.root; brandelf -t Linux file + + ELF + branding + + Когда ELF-загрузчик находит марку Linux, он заменяет соответствующий указатель в структуре proc. Все системные вызовы - индексируются через этот указатель (в традиционной UNIX системе, это + индексируются через этот указатель (в традиционной &unix; системе это массив sysent[], содержащий системные вызовы). Некоторые особые ситуации и системные вызовы обрабатываются специальным модулем ядра поддержки Linux. Плюс ко всему, Linux эмулятор динамически изменяет - корень файловой системы при поиске файлов (фактически делая - то же самое, что и опция union при монтировании - файловых систем (не путать с unionfs!)). Сперва, файл ищется в - директории + корень файловой системы при поиске файлов; фактически + так же, как и параметр union при монтировании + файловых систем (не путать с unionfs!). + Сперва, файл ищется в каталоге /compat/linux/original-path и только затем, в случае неудачи, в /original-path. Это дает возможность Linux программам выполнять FreeBSD команды, если не найдется соответствующих Linux команд. Например, скопировав FreeBSD &man.uname.1; в каталог /compat/linux/bin/, можно заставить Linux программы сообщать, что они запускаются под FreeBSD. На самом деле, ядра FreeBSD и Linux во многом похожи: системные операции, виртуальная память, система сигналов и сообщений, межпроцессное взаимодействие и прочее. Разница в том, что FreeBSD программы обращаются к системным вызовам FreeBSD, Linux программы соответственно к системным вызовам Linux. Во многих операционных системах прошлого адреса системных вызовов были зашиты в статический глобальный массив sysent[], вместо обращения по указателю в структуре proc, который инициализируется динамически, позволяя таким образом запускать программы, написанные для разных операционных систем. В чем же разница между системными вызовами Linux и FreeBSD? Фактически никакой. Единственное различие (на данный момент, в будущем все может и, вероятно, изменится), пожалуй, в том, что функции системных вызовов FreeBSD зашиты в ядро, а для Linux они могут быть либо в ядре, либо в динамически загружаемом модуле. - Можно ли назвать это эмуляцией? Нет. Как таковой, эмулятор - (или симулятор) отсутствует. В таком случае, почему же тогда + Можно ли назвать это эмуляцией? Нет. Это реализация ABI, + а не эмуляция. Как таковой, эмулятор (или симулятор) + отсутствует. + + В таком случае, почему же тогда говорят Linux эмуляция? Чтобы - насолить FreeBSD?! 8-). На самом + насолить FreeBSD?!. На самом деле, это вопрос терминологии: не существовало слова, которое бы точнее описывало этот процесс. Нельзя сказать, что FreeBSD запускает приложения Linux (без перекомпиляции или загрузки - соответствующего модуля ядра). Тогда и придумали термин + соответствующего модуля ядра). Поэтому и придумали термин Linux эмуляция.
+ +