aboutsummaryrefslogtreecommitdiff
path: root/ru_RU.KOI8-R/books/handbook/linuxemu/chapter.sgml
diff options
context:
space:
mode:
Diffstat (limited to 'ru_RU.KOI8-R/books/handbook/linuxemu/chapter.sgml')
-rw-r--r--ru_RU.KOI8-R/books/handbook/linuxemu/chapter.sgml759
1 files changed, 0 insertions, 759 deletions
diff --git a/ru_RU.KOI8-R/books/handbook/linuxemu/chapter.sgml b/ru_RU.KOI8-R/books/handbook/linuxemu/chapter.sgml
deleted file mode 100644
index 79ce390898..0000000000
--- a/ru_RU.KOI8-R/books/handbook/linuxemu/chapter.sgml
+++ /dev/null
@@ -1,759 +0,0 @@
-<!--
- The FreeBSD Russian Documentation Project
-
- $FreeBSD$
- $FreeBSDru: frdp/doc/ru_RU.KOI8-R/books/handbook/linuxemu/chapter.sgml,v 1.8 2004/08/26 11:16:12 den Exp $
-
- Original revision: 1.35
--->
-
-<chapter id="linuxemu">
- <chapterinfo>
- <authorgroup>
- <author>
- <firstname>Алексей</firstname>
- <surname>Докучаев</surname>
- <contrib>Перевод на русский язык: </contrib>
- </author>
- </authorgroup>
- </chapterinfo>
- <title>Работа с приложениями, написанными для Linux</title>
-
- <para><emphasis>Реструктурировал и частично дополнил &a.jim;, 22 марта
- 2000. Оригинальная версия Brian N. Handy и &a.rich;</emphasis></para>
-
- <sect1>
- <title>Краткий обзор</title>
-
- <para>В этой главе будет рассказано о том, каким образом можно запускать
- приложения, изначально написанные для Linux, под FreeBSD и что нужно
- для этого сделать.</para>
-
- <para>Возможно, Вы спрашиваете себя, зачем FreeBSD нужно уметь работать
- с приложениями, написанными для Linux. Ответ на этот вопрос достаточно
- прост: многие компании и разработчики производят программное
- обеспечение только для Linux, так как эта операционная система очень
- быстро завоевала огромную популярность в компьютерном мире.
- Пользователям же FreeBSD приходится обращаться к этим компаниям и
- разработчикам с просьбами выпустить версии своих программ специально
- для FreeBSD. Проблема в том, что большинство производителей
- программного обеспечения не осознают, насколько бы увеличился их рынок
- сбыта, выпускай они FreeBSD версии наряду с Linux версиями, и
- продолжают разрабатывать только под Linux. Что же делать
- пользователям FreeBSD? В этой ситуации на помощь приходит Linux
- эмуляция.</para>
-
- <para>Вкратце, FreeBSD позволяет Вам работать с 90% приложений для
- Linux без каких-либо модификаций последних. Среди них: Star Office,
- Linux версия Netscape, Adobe Acrobat, RealPlayer 5 и 7, VMWare,
- Oracle, WordPerfect, Doom, Quake и многие другие. Есть сведения, что
- в некоторых ситуациях эти Linux программы показывали более высокую
- производительность при работе под FreeBSD, чем под Linux.</para>
-
- <para>Конечно, существует некоторые особенности Linux, которые (пока) не
- поддерживаются в полной мере FreeBSD. Например, так обстоят дела с
- приложениями Linux, использующими файловую систему
- <filename>/proc</filename>, так как реализация последней сильно
- отличается от таковой в FreeBSD (однако, ситуация меняется к лучшему:
- в FreeBSD-CURRENT поддержка Linux procfs уже встроена в систему).
- Существуют также системные вызовы, специфичные для i386, как,
- например, переключение в режим V86.</para>
-
- <para>О том, как установить поддержку запуска Linux программ, читайте в
- <link linkend="linuxemu-lbc-install">следующей секции</link>.</para>
- </sect1>
-
- <sect1 id="linuxemu-lbc-install">
- <title>Инсталляция</title>
-
- <para>Начиная с 3.0-RELEASE, больше нет необходимости указывать
- <literal>options LINUX</literal> или <literal>options
- COMPAT_LINUX</literal> в Вашем файле конфигурации ядра.</para>
-
- <para>Поддержка Linux приложений осуществляется посредством специального
- модуля ядра (KLD объекта, <quote>Kernel LoaDable object</quote>), то
- есть его можно загрузить/выгрузить <quote>на лету</quote>, без
- необходимости перезагрузки. Вам потребуется убедиться в наличии
- следующей строки в файле <filename>/etc/rc.conf</filename>:</para>
-
- <programlisting>linux_enable=<quote>YES</quote></programlisting>
-
- <para>Это, в свою очередь, повлияет на выполнение следующего кода в
- файле <filename>/etc/rc.i386</filename>:</para>
-
- <programlisting># Start the Linux binary compatibility if requested.
-#
-case ${linux_enable} in
-[Yy][Ee][Ss])
- echo -n ' linux'; linux &gt; /dev/null 2&gt;&amp;1
- ;;
-esac</programlisting>
-
- <para>Если Вы хотите проверить, загружен ли модуль, это можно сделать
- при помощи команды <command>kldstat</command>:</para>
-
- <screen>&prompt.user; <userinput>kldstat</userinput>
-Id Refs Address Size Name
- 1 2 0xc0100000 16bdb8 kernel
- 7 1 0xc24db000 d000 linux.ko</screen>
-
- <para>Если по какой-либо причине Вы не хотите или не можете загрузить
- KLD, то Вы можете статически включить поддержку Linux в ядро
- посредством опции <literal>options LINUX</literal> в файле
- конфигурации ядра. Затем соберите и проинсталлируйте новое ядро,
- следуя описанию в секции, посвященной <link
- linkend="kernelconfig">конфигурации ядра</link>.</para>
-
- <sect2>
- <title>Установка необходимых Linux библиотек</title>
-
- <para>Установить все требуемые библиотеки можно двумя путями: либо
- используя порт <link linkend="linuxemu-libs-port">linux_base</link>,
- либо установив их <link
- linkend="linuxemu-libs-manually">вручную</link>.</para>
-
- <sect3 id="linuxemu-libs-port">
- <title>Установка с помощью порта linux_base</title>
-
- <para>Этот метод является самым простым, и мы рекомендуем
- воспользоваться именно им. Процесс аналогичен установке любого
- другого порта из <ulink url="../ports/">коллекции портов</ulink>.
- Просто выполните следующие команды:</para>
-
- <screen>&prompt.root; <userinput>cd /usr/ports/emulators/linux_base</userinput>
-&prompt.root; <userinput>make install distclean</userinput></screen>
-
- <para>Теперь Вы можете работать с приложениями для Linux. Некоторые
- программы, возможно, будут сообщать о несоответствии подверсий
- некоторых системных библиотек. Однако, практически, это не
- вызывает каких-либо неудобств.</para>
- </sect3>
-
- <sect3 id="linuxemu-libs-manually">
- <title>Установка библиотек вручную</title>
-
- <para>Если у Вас нет установленной коллекции портов, то можно
- установить требуемые библиотеки вручную Вам понадобятся
- разделяемые библиотеки для Linux, которые нужны программам, и
- runtime-компоновщик. Вам также потребуется создать <quote>теневой
- корень</quote>: директорию <filename>/compat/linux</filename>, где
- будут расположены Linux библиотеки. Если нужно загрузить
- какую-либо разделяемую библиотеку, FreeBSD сперва будет пытаться
- найти ее в этом дереве. Так, если программа загружает, например,
- <filename>/lib/libc.so</filename>, FreeBSD попытается открыть
- <filename>/compat/linux/lib/libc.so</filename>, и если такого
- файла не существует, будет пытаться открыть
- <filename>/lib/libc.so</filename>. Разделяемые библиотеки должны
- находиться в теневом дереве, а не в пути, сообщаемым командой
- Linux <command>ld.so</command>.</para>
-
- <para>По мере работы с различными Linux программами, у Вас будет
- накапливаться некий базовый набор библиотек, которого будет
- достаточно для большинства существующих Linux приложений.</para>
- </sect3>
-
- <sect3>
- <title>Как установить дополнительные разделяемые библиотеки</title>
-
- <para>Что, если при установленном <filename>linux_base</filename>
- порте Ваше приложение все равно сообщает об отсутствии необходимой
- библиотеки? Как узнать, какая именно нужна библиотека и где ее
- взять? В принципе, есть два способа. Вам необходимо иметь
- привилегии суперпользователя для их осуществления.</para>
-
- <para>Если у Вас есть доступ к машине, на которой установлен Linux,
- узнайте, какие библиотеки использует Linux приложение, и просто
- скопируйте из на свою машину. Например:</para>
-
- <informalexample>
- <para>Допустим, Вы скачали по FTP Linux версию Doom'а (на Linux
- машине). Вы можете узнать, какие разделяемые библиотеки нужны
- Doom'у при помощи команды <command>ldd linuxdoom</command>:</para>
-
- <screen>&prompt.user; <userinput>ldd linuxdoom</userinput>
-libXt.so.3 (DLL Jump 3.1) =&gt; /usr/X11/lib/libXt.so.3.1.0
-libX11.so.3 (DLL Jump 3.1) =&gt; /usr/X11/lib/libX11.so.3.1.0
-libc.so.4 (DLL Jump 4.5pl26) =&gt; /lib/libc.so.4.6.29</screen>
-
- <para>Вам потребуются все файлы, перечисленные в последней
- колонке. Скопируйте их в директорию
- <filename>/compat/linux</filename> на Вашей системе, а также
- создайте символические ссылки на эти файлы, с именами ссылок из
- первой колонки соответственно. В итоге у Вас на машине должны
- быть следующие файлы:</para>
-
- <screen>/compat/linux/usr/X11/lib/libXt.so.3.1.0
-/compat/linux/usr/X11/lib/libXt.so.3 -&gt; libXt.so.3.1.0
-/compat/linux/usr/X11/lib/libX11.so.3.1.0
-/compat/linux/usr/X11/lib/libX11.so.3 -&gt; libX11.so.3.1.0
-/compat/linux/lib/libc.so.4.6.29 /compat/linux/lib/libc.so.4 -&gt; libc.so.4.6.29</screen>
-
- <blockquote>
- <note>
- <para>Заметьте, что если у Вас уже есть какая-либо из
- перечисленных библиотек, то ее не нужно копировать заново.
- Однако, у Вас может быть более старая версия. В этом
- случае, лучше все-таки скопировать библиотеку поздней
- версии, изменив соответственно ссылку на нее. Предыдущую
- версию библиотеки можно удалить. Например, пусть у Вас есть
- следующие библиотеки:</para>
-
- <screen>/compat/linux/lib/libc.so.4.6.27
-/compat/linux/lib/libc.so.4 -&gt; libc.so.4.6.27</screen>
-
- <para>и какое-либо приложение требует библиотеку более поздней
- версии, судя по команде <command>ldd</command>:</para>
-
- <screen>libc.so.4 (DLL Jump 4.5pl26) -&gt; libc.so.4.6.29</screen>
-
- <para>Если подверсии немного отличаются, копировать
- <filename>/lib/libc.so.4.6.29</filename> необязательно, так
- как программа, скорее всего, будет нормально работать и с
- устаревшей версией. Тем не менее, Вы можете заменить
- <filename>libc.so</filename>:</para>
-
- <screen>/compat/linux/lib/libc.so.4.6.29
-/compat/linux/lib/libc.so.4 -&gt; libc.so.4.6.29</screen>
- </note>
- </blockquote>
-
- <blockquote>
- <note>
- <para>Символические ссылки важны <emphasis>только</emphasis>
- для Linux программ. Runtime-компоновщик FreeBSD
- самостоятельно подберет правильные номера версий библиотек,
- и Вам не нужно об этом беспокоиться.</para>
- </note>
- </blockquote>
- </informalexample>
- </sect3>
- </sect2>
-
- <sect2>
- <title>Настройка Linux ELF-исполняемых файлов</title>
-
- <para>Для ELF-программ иногда требуется сделать так называемый
- <quote>branding</quote>. Если при попытке запустить ELF-файл, Вы
- получаете следующее сообщение об ошибке:</para>
-
- <screen>&prompt.user; <userinput>./linux-elf-программа</userinput>
-ELF binary type not known
-Abort</screen>
-
- <para>то нужно изменить тип исполняемого файла, чтобы ядро FreeBSD
- правильно определило, что это Linux программа. Это можно сделать
- при помощи утилиты &man.brandelf.1;:</para>
-
- <screen>&prompt.user; <userinput>brandelf -t Linux linux-elf-программа</userinput></screen>
-
- <para>Следует отметить, что программы, для которых необходим
- <quote>branding</quote>, встречаются все реже и реже, и в недалеком
- будущем Вы вряд ли прибегнете к нему вообще.</para>
- </sect2>
-
- <sect2>
- <title>Распознавание доменных имен</title>
-
- <para>Если DNS не настроен или недоступен, или Вы получаете это
- сообщение:</para>
-
- <screen>resolv+: "bind" is an invalid keyword resolv+:
-"hosts" is an invalid keyword</screen>
-
- <para>то Вам нужно создать (модифицировать) файл
- <filename>/compat/linux/etc/host.conf</filename>, содержащий:</para>
-
- <programlisting>order hosts, bind
-multi on</programlisting>
-
- <para>Таким образом, Вы указываете, то сначала производится поиск в
- файле <filename>/etc/hosts</filename>, а только затем запрашивается
- DNS. Когда файл <filename>/compat/linux/etc/host.conf</filename>
- отсутствует, Linux приложения находят файл
- <filename>/etc/host.conf</filename> для FreeBSD и сообщают о
- несовместимом синтаксисе. Если Вы не настраивали сервер имен
- (<filename>/etc/resolv.conf</filename>), уберите
- <literal>bind</literal> из файла
- <filename>/compat/linux/etc/host.conf</filename>.</para>
- </sect2>
- </sect1>
-
- <sect1 id="linuxemu-mathematica">
- <title>Установка пакета Mathematica</title>
-
- <para><emphasis>Обновлено для Mathematica версии 4.x &a.murray;
- и объединено с работой Bojan Bistrovic
- <email>bojanb@physics.odu.edu</email>.</emphasis></para>
-
- <para>Ниже описано, как установить Linux версию пакета Mathematica 4.x
- на FreeBSD систему.</para>
-
- <para>Linux версия Mathematica отлично работает под FreeBSD, однако
- исполняемые файлы должны быть модифицированы утилитой
- &man.brandelf.1;.</para>
-
- <para>Linux версия пакета Mathematica или Mathematica для Студентов
- может быть заказана непосредственно через Wolfram по адресу <ulink
- url="http://www.wolfram.com/">http://www.wolfram.com/</ulink>.</para>
-
- <sect2>
- <title>Модификация исполняемых файлов</title>
-
- <para>Исполняемые файлы пакета Mathematica находятся в директории
- <filename>Unix</filename> на компакт диске с дистрибутивом.
- Скопируйте эту директорию (вместе со всеми подкаталогами) на Ваш
- жесткий диск, чтобы модифицировать (утилитой &man.brandelf.1;)
- исполняемые файлы перед инсталляцией:</para>
-
- <screen>&prompt.root; <userinput>mount /cdrom</userinput>
-&prompt.root; <userinput>cp -rp /cdrom/Unix/ /localdir/</userinput>
-&prompt.root; <userinput>brandelf -t Linux /localdir/Files/SystemFiles/Kernel/Binaries/Linux/*</userinput>
-&prompt.root; <userinput>brandelf -t Linux /localdir/Files/SystemFiles/FrontEnd/Binaries/Linux/*</userinput>
-&prompt.root; <userinput>brandelf -t Linux /localdir/Files/SystemFiles/Installation/Binaries/Linux/*</userinput>
-&prompt.root; <userinput>brandelf -t Linux /localdir/Files/SystemFiles/Graphics/Binaries/Linux/*</userinput>
-&prompt.root; <userinput>brandelf -t Linux /localdir/Files/SystemFiles/Converters/Binaries/Linux/*</userinput>
-&prompt.root; <userinput>brandelf -t Linux /localdir/Files/SystemFiles/LicenseManager/Binaries/Linux/mathlm</userinput>
-&prompt.root; <userinput>cd /localdir/Installers/Linux/</userinput>
-&prompt.root; <userinput>./MathInstaller</userinput></screen>
-
- <para>Вы также можете установить ELF brand по умолчанию в Linux
- brand с помощью команды:</para>
-
- <screen>&prompt.root; <userinput>sysctl -w kern.fallback_elf_brand=3</userinput></screen>
-
- <para>Это заставит FreeBSD думать о том, что все программы не
- обработанные &man.brandelf.1; используют Linux ABI и Вы сможете
- запустить MathInstaller прямо с CDROM.</para>
- </sect2>
-
- <sect2>
- <title>Пароль к пакету Mathematica</title>
-
- <para>Вам необходимо зарегистрировать свою копию пакета Mathematica и
- получить от Wolfram специальный пароль, соответствующий
- <quote>идентификатор машины</quote>.</para>
-
- <para>После того, как Вы установили необходимые библиотеки и
- распаковали файлы Mathematica, получите <quote>идентификатор
- машины</quote>, запустив программу <command>mathinfo</command> в
- инсталляционной директории. Идентификатор машины зависит от
- MAC-адреса Вашей первой ethernet-карточки.</para>
-
- <screen>&prompt.root; <userinput>cd /localdir/Files/SystemFiles/Installation/Binaries/Linux</userinput>
-&prompt.root; <userinput>mathinfo</userinput>
-disco.example.com 7115-70839-20412</screen>
-
- <para>При регистрации, либо по телефону или факсу, либо по
- электронной почте, Вы сообщаете Ваш <quote>идентификатор
- машины</quote>, а в ответ получаете пароль, состоящий из нескольких
- чисел. Введите этот пароль при первом запуске Mathematica.</para>
- </sect2>
-
- <sect2>
- <title>Внешний интерфейс пакета Mathematica</title>
-
- <para>Mathematica использует специальные шрифты для отображения
- некоторых символов, которые отсутствуют в стандартных шрифтах
- (символы интегралов, сумм, греческий алфавит и другие). Протокол X
- требует, чтобы эти шрифты были установлены
- <emphasis>локально</emphasis>. Это означает, что Вы должны
- скопировать эти шрифты с компакт диска или сетевого узла на Ваш
- жесткий диск. Обычно, все шрифты должны находиться в каталоге
- <filename>/cdrom/Unix/Files/SystemFiles/Fonts</filename> компакт
- диска или
- <filename>/usr/local/mathematica/SystemFiles/Fonts</filename> на
- винчестере. Собственно файлы со шрифтами находятся в подкаталогах
- <filename>Type1</filename> и <filename>X</filename>. О том, как их
- использовать, читайте ниже.</para>
-
- <para>Можно просто скопировать их в один из существующих подкаталогов
- в директории <filename>/usr/X11R6/lib/X11/fonts</filename>. В этом
- случае, Вам потребуется отредактировать файл
- <filename>fonts.dir</filename>, добавив в него названия шрифтов и
- изменив число шрифтов в первой строке. Или Вы можете запустить
- программу <command>mkfontdir</command>, находясь в том каталоге,
- куда Вы скопировали шрифты.</para>
-
- <para>Есть альтернативный способ: скопировать директории в каталог
- <filename>/usr/X11R6/lib/X11/fonts</filename>:</para>
-
- <screen>&prompt.root; <userinput>cd /usr/X11R6/lib/X11/fonts</userinput>
-&prompt.root; <userinput>mkdir X</userinput>
-&prompt.root; <userinput>mkdir MathType1</userinput>
-&prompt.root; <userinput>cd /cdrom/Unix/Files/SystemFiles/Fonts</userinput>
-&prompt.root; <userinput>cp X/* /usr/X11R6/lib/X11/fonts/X</userinput>
-&prompt.root; <userinput>cp Type1/* /usr/X11R6/lib/X11/fonts/MathType1</userinput>
-&prompt.root; <userinput>cd /usr/X11R6/lib/X11/fonts/X</userinput>
-&prompt.root; <userinput>mkfontdir</userinput>
-&prompt.root; <userinput>cd ../MathType1</userinput>
-&prompt.root; <userinput>mkfontdir</userinput</screen>
-
- <para>Теперь добавьте каталоги с новыми шрифтами в путь к
- шрифтам:</para>
-
- <screen>&prompt.root; <userinput>xset fp+ /usr/X11R6/lib/X11/fonts/X</userinput>
-&prompt.root; <userinput>xset fp+ /usr/X11R6/lib/X11/fonts/MathType1</userinput>
-&prompt.root; <userinput>xset fp rehash</userinput></screen>
-
- <para>Если Вы используете XFree86, то можно просто прописать эти
- каталоги в файле <filename>XF86Config</filename>.</para>
-
- <para>Если на Вашем компьютере <emphasis>нет</emphasis> каталога
- <filename>/usr/X11R6/lib/X11/fonts/Type1</filename>, то замените
- <filename>MathType1</filename> на <filename>Type1</filename> в
- предыдущем примере.</para>
- </sect2>
- </sect1>
-
- <sect1 id="linuxemu-oracle">
- <title>Установка Oracle</title>
-
- <para><emphasis>Автор Marcel Moolenaar
- <email>marcel@cup.hp.com</email></emphasis></para>
-
- <sect2>
- <title>Введение</title>
- <para>Ниже описан процесс установки Oracle 8.0.5 и Oracle 8.0.5.1
- Enterprise Edition для Linux на систему с FreeBSD.</para>
- </sect2>
-
- <sect2>
- <title>Настройка Linux окружения</title>
-
- <para>Удостоверьтесь, что порты <filename>linux_base</filename> и
- <filename>linux_devtools</filename> установлены на Вашей системе.
- Они появились в коллекции портов после выхода FreeBSD 3.2. Если Вы
- используете FreeBSD 3.2 или более раннюю, обновите коллекцию портов.
- Нелишним будет и апгрейд до более поздней версии FreeBSD. Если у
- Вас возникнут трудности с <filename>linux_base-6.1</filename> или
- <filename>linux_devtools-6.1</filename>, воспользуйтесь версией 5.2
- этих пакетов.</para>
-
- <para>Если Вы хотите использовать intelligent agent, Вам также
- понадобится TCL пакет от Red Hat:
- <filename>tcl-8.0.3-20.i386.rpm</filename>. Для этого
- воспользуйтесь следующей командой:</para>
-
- <screen>&prompt.root; <userinput>rpm -i --ignoreos --root /compat/linux --dbpath /var/lib/rpm <replaceable>package</replaceable></userinput></screen>
-
- <para>Установка этого пакета должна пройти без каких-либо ошибок.</para>
- </sect2>
-
- <sect2>
- <title>Настройка окружения Oracle</title>
-
- <para>Прежде чем Вы сможете установить Oracle, Вам необходимо
- обеспечить нужное окружение. Ниже описывается, что
- <emphasis>конкретно</emphasis> нужно сделать, чтобы успешно запускать
- Oracle для Linux под FreeBSD. За общими сведениями обратитесь к
- фирменному руководству по инсталляции Oracle.</para>
-
- <sect3 id="linuxemu-kernel-tuning">
- <title>Настройка ядра</title>
-
- <para>Как описывается в руководстве по инсталляции, необходимо
- установить максимальный размер разделяемой памяти. Не используйте
- <literal>SHMMAX</literal> под FreeBSD. <literal>SHMMAX</literal>
- высчитывается, исходя из <literal>SHMMAXPGS</literal> и
- <literal>PGSIZE</literal>. Следовательно, нужно задавать
- <literal>SHMMAXPGS</literal>. За информацией о прочих опциях
- обратитесь к фирменному руководству:</para>
-
- <programlisting>options SHMMAXPGS=10000
-options SHMMNI=100
-options SHMSEG=10
-options SEMMNS=200
-options SEMMNI=70
-options SEMMSL=61</programlisting>
-
- <para>Установите эти опции в зависимости от того, как и для чего
- Вы будете использовать Oracle.</para>
-
- <para>Не забудьте добавить следующие строки в файл конфигурации
- ядра:</para>
-
-<programlisting>options SYSVSHM # разделяемая память SysV
-options SYSVSEM # семафоры SysV
-options SYSVMSG # межпроцессное взаимодействие SysV</programlisting>
- </sect3>
-
- <sect3 id="linuxemu-oracle-account">
-
- <title>Oracle аккаунт</title>
-
- <para>Вам нужно создать специальный Oracle аккаунт, как и любой
- другой аккаунт. Единственное отличие в том, что Вы должны указать
- для него командный интерпретатор Linux:
- <filename>/compat/linux/bin/bash</filename>. Не забудьте добавить
- <literal>/compat/linux/bin/bash</literal> в файл
- <filename>/etc/shells</filename>.</para>
- </sect3>
-
- <sect3 id="linuxemu-environment">
- <title>Переменные окружения</title>
-
- <para>Кроме стандартных переменных окружения, таких как
- <envar>ORACLE_HOME</envar> и <envar>ORACLE_SID</envar>, Вам нужно
- будет установить следующие дополнительные переменные:</para>
-
- <informaltable frame="none">
- <tgroup cols="2">
- <thead>
- <row>
- <entry>Переменная</entry>
-
- <entry>Значение</entry>
- </row>
- </thead>
- <tbody>
- <row>
- <entry><envar>LD_LIBRARY_PATH</envar></entry>
-
- <entry><literal>$ORACLE_HOME/lib</literal></entry>
- </row>
-
- <row>
- <entry><envar>CLASSPATH</envar></entry>
-
- <entry><literal>$ORACLE_HOME/jdbc/lib/classes111.zip</literal></entry>
- </row>
-
- <row>
- <entry><envar>PATH</envar></entry>
-
- <entry><literal>/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</literal></entry>
- </row>
- </tbody>
- </tgroup>
- </informaltable>
-
- <para>Желательно устанавливать их в файле
- <filename>.profile</filename>. Вот реальный пример:</para>
-
-<programlisting>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
-export PATH</programlisting>
- </sect3>
- </sect2>
-
- <sect2>
- <title>Инсталляция Oracle</title>
-
- <para>Из-за небольшой несовместимости с Linux эмулятором, Вам нужно
- будет создать подкаталог <filename>.oracle</filename> в директории
- <filename>/var/tmp</filename> прежде чем можно будет начать
- инсталляцию. Либо сделайте ее владельцем пользователя oracle, либо
- поставьте права на запись для всех. Если Вы все сделали правильно,
- то инсталляция должна пройти без проблем. Если какие-либо трудности
- все же возникли, проверьте еще раз все конфигурационные файлы и
- целостность дистрибутива. После окончания установки, приложите
- патчи (смотрите следующие две секции).</para>
-
- <para>Одна из часто возникающих проблем &mdash; неправильно
- установленный TCP адаптер. В результате, невозможно запустить TCP
- сервисы. Вот решение проблемы:</para>
-
- <screen>&prompt.root; <userinput>cd $ORACLE_HOME/network/lib</userinput>
-&prompt.root; <userinput>make -f ins_network.mk ntcontab.o</userinput>
-&prompt.root; <userinput>cd $ORACLE_HOME/lib</userinput>
-&prompt.root; <userinput>ar r libnetwork.a ntcontab.o</userinput>
-&prompt.root; <userinput>cd $ORACLE_HOME/network/lib</userinput>
-&prompt.root; <userinput>make -f ins_network.mk install</userinput></screen>
-
- <para>Не забудьте повторно запустить <filename>root.sh</filename>!</para>
-
- <sect3 id="linuxemu-patch-root">
- <title>Модификация root.sh</title>
-
- <para>Инсталлируя Oracle, необходимо выполнить некоторые действия
- (имея при этом привилегии суперпользователя). Фактически это
- сводится к выполнению скрипта <filename>root.sh</filename>,
- который находится в директории <filename>orainst</filename>.
- Перед запуском, приложите к нему следующий патч (исправляет
- местонахождение утилиты chown), либо запускайте его в командном
- интерпретаторе Linux.</para>
-
- <programlisting>*** 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</programlisting>
-
- <para>Если Вы инсталлируете Oracle не с компакт диска, то можно
- модифицировать файл <filename>rthd.sh</filename>, который
- находится в директории <filename>orainst</filename>.</para>
- </sect3>
-
- <sect3 id="linuxemu-patch-tcl">
- <title>Модификация genclntsh</title>
-
- <para>Скрипт genclntsh используется для того, чтобы создать единую
- разделяемую клиентскую библиотеку. Приложите следующий патч,
- чтобы закомментировать определение переменной PATH:</para>
-
- <programlisting>*** 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</programlisting>
- </sect3>
- </sect2>
-
- <sect2>
- <title>Запуск и использование Oracle</title>
-
- <para>Теперь, если Вы все сделали правильно, то можете использовать
- Oracle так же, как если бы Вы поставили его на Linux систему.</para>
- </sect2>
- </sect1>
-
- <sect1>
- <title>Дополнительные сведения</title>
-
- <para>Если Вы интересуетесь, как работает Linux эмуляция, эта секция для
- Вас. Большинство материала взято из электронного письма, адресованного
- &a.chat; by Terry Lambert <email>tlambert@primenet.com</email> (ID
- письма: <literal>&lt;199906020108.SAA07001@usr09.primenet.com&gt;</literal>).</para>
-
- <sect2>
- <title>Как все это устроено?</title>
-
- <para>FreeBSD поддерживает абстракцию, называемую <quote>загрузчик
- исполнимых классов</quote>, который фактически является первой
- стадией системного вызова &man.execve.2;.</para>
-
- <para>На самом деле, FreeBSD имеет несколько загрузчиков вместо
- одного, который, в случае неудачи, выполняет программу как
- сценарий (скрипт).</para>
-
- <para>Исторически сложилось, что единственный загрузчик в UNIX
- системах проверял <quote>магическое число</quote> (чаще всего первые
- 4 или 8 байт файла), чтобы определить, известен ли формат
- исполняемого файла системе, и если да, то вызвал соответствующий
- загрузчик.</para>
-
- <para>Если файл не опознавался системой как исполнимый, &man.execve.2;
- возвращал ошибку, и текущий командный интерпретатор начинал
- выполнять файл как скрипт.</para>
-
- <para>Позднее, &man.sh.1; был модифицирован, так, чтобы проверять
- первые два символа в файле, и если они оказывались
- <literal>:\n</literal>, то файл выполнялся как сценарий для
- &man.csh.1; (утверждается, что SCO были первыми, кто сделал
- эту модификацию).</para>
-
- <para>FreeBSD ведет себя по-другому: пробегает по списку загрузчиков,
- включая специальный <literal>#!</literal> загрузчик, который
- вызывает нужный интерпретатор или <filename>/bin/sh</filename>, если
- не нашел подходящего.</para>
-
- <para>Формат исполняемого файла FreeBSD определяет по
- <quote>магическому числу</quote>. На этой стадии пока не
- различается, для какой операционной системы предназначен файл
- (Linux, Solaris, или любой другой, использующей ELF-формат
- исполняемых файлов).</para>
-
- <para>Далее, ELF-загрузчик определяет <quote>марку</quote>
- (специальный комментарий; отсутствует в исполняемых файлах
- SVR4/Solaris) исполняемого файла, то есть для какой операционной
- системы он предназначен.</para>
-
- <para>Соответственно, Linux программы должны быть
- <quote>маркированы</quote> для <literal>Linux</literal> (например, с
- помощью утилиты &man.brandelf.1;):</para>
-
- <screen>&prompt.root; <userinput>brandelf -t Linux file</userinput></screen>
-
- <para>Когда ELF-загрузчик находит <quote>марку</quote>
- <literal>Linux</literal>, он заменяет соответствующий указатель в
- структуре <literal>proc</literal>. Все системные вызовы
- индексируются через этот указатель (в традиционной UNIX системе, это
- массив <literal>sysent[]</literal>, содержащий системные вызовы).
- Некоторые особые ситуации и системные вызовы обрабатываются
- специальным модулем ядра поддержки Linux.</para>
-
- <para>Плюс ко всему, Linux эмулятор динамически <quote>изменяет
- корень</quote> файловой системы при поиске файлов (фактически делая
- то же самое, что и опция <literal>union</literal> при монтировании
- файловых систем (не путать с unionfs!)). Сперва, файл ищется в
- директории
- <filename>/compat/linux/<replaceable>original-path</replaceable></filename>
- и только затем, в случае неудачи, в
- <filename>/<replaceable>original-path</replaceable></filename>. Это
- дает возможность Linux программам выполнять FreeBSD команды, если не
- найдется соответствующих Linux команд. Например, скопировав FreeBSD
- &man.uname.1; в каталог <filename>/compat/linux/bin/</filename>,
- можно <quote>заставить</quote> Linux программы сообщать, что они
- запускаются под FreeBSD.</para>
-
- <para>На самом деле, ядра FreeBSD и Linux во многом похожи: системные
- операции, виртуальная память, система сигналов и сообщений,
- межпроцессное взаимодействие и прочее. Разница в том, что FreeBSD
- программы обращаются к системным вызовам FreeBSD, Linux программы
- соответственно к системным вызовам Linux. Во многих операционных
- системах прошлого адреса системных вызовов были
- <emphasis>зашиты</emphasis> в статический глобальный массив
- <literal>sysent[]</literal>, вместо обращения по указателю в
- структуре <literal>proc</literal>, который инициализируется
- динамически, позволяя таким образом запускать программы, написанные
- для разных операционных систем.</para>
-
- <para>В чем же разница между системными вызовами Linux и FreeBSD?
- Фактически никакой. Единственное различие (на данный момент, в
- будущем все может и, вероятно, изменится), пожалуй, в том, что
- функции системных вызовов FreeBSD зашиты в ядро, а для Linux они
- могут быть либо в ядре, либо в динамически загружаемом
- модуле.</para>
-
- <para>Можно ли назвать это эмуляцией? Нет. Как таковой, эмулятор
- (или симулятор) отсутствует. В таком случае, почему же тогда
- говорят <quote>Linux эмуляция</quote>? Чтобы
- <quote>насолить</quote> FreeBSD?! <!-- smiley -->8-). На самом
- деле, это вопрос терминологии: не существовало слова, которое бы
- точнее описывало этот процесс. Нельзя сказать, что FreeBSD
- запускает приложения Linux (без перекомпиляции или загрузки
- соответствующего модуля ядра). Тогда и придумали термин
- <quote>Linux эмуляция</quote>.</para>
- </sect2>
- </sect1>
-</chapter>