Update translated parts (MFen 1.35 -> 1.114)

Fixes

Obtained from:	The FreeBSD Russian Documentation Project
This commit is contained in:
Denis Peplin 2004-09-15 06:33:48 +00:00
parent db62e8f84f
commit 524e777036
Notes: svn2git 2020-12-08 03:00:23 +00:00
svn path=/head/; revision=22342

View file

@ -2,13 +2,32 @@
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 $
$FreeBSDru$
Original revision: 1.35
Original revision: 1.114
-->
<chapter id="linuxemu">
<chapterinfo>
<authorgroup>
<author>
<firstname>Jim</firstname>
<surname>Mock</surname>
<contrib>Реструктурировал и частично обновил </contrib>
</author>
<!-- 22 Mar 2000 -->
</authorgroup>
<authorgroup>
<author>
<firstname>Brian N.</firstname>
<surname>Handy</surname>
<contrib>Первоначально предоставили </contrib>
</author>
<author>
<firstname>Rich</firstname>
<surname>Murphey</surname>
</author>
</authorgroup>
<authorgroup>
<author>
<firstname>Алексей</firstname>
@ -19,17 +38,18 @@
</chapterinfo>
<title>Работа с приложениями, написанными для Linux</title>
<para><emphasis>Реструктурировал и частично дополнил &a.jim;, 22 марта
2000. Оригинальная версия Brian N. Handy и &a.rich;</emphasis></para>
<sect1>
<sect1 id="linuxemu-synopsis">
<title>Краткий обзор</title>
<para>В этой главе будет рассказано о том, каким образом можно запускать
приложения, изначально написанные для Linux, под FreeBSD и что нужно
для этого сделать.</para>
<indexterm><primary>Linux - бинарная совместимость</primary></indexterm>
<indexterm>
<primary>бинарная совместимость</primary>
<secondary>Linux</secondary>
</indexterm>
<para>Возможно, Вы спрашиваете себя, зачем FreeBSD нужно уметь работать
<para>FreeBSD предоставляет бинарную совместимость с несколькими другими
&unix; подобными операционными системами, включая Linux.
Возможно, Вы спрашиваете себя, зачем FreeBSD нужно уметь работать
с приложениями, написанными для Linux. Ответ на этот вопрос достаточно
прост: многие компании и разработчики производят программное
обеспечение только для Linux, так как эта операционная система очень
@ -44,69 +64,113 @@
эмуляция.</para>
<para>Вкратце, FreeBSD позволяет Вам работать с 90% приложений для
Linux без каких-либо модификаций последних. Среди них: Star Office,
Linux версия Netscape, Adobe Acrobat, RealPlayer 5 и 7, VMWare,
Oracle, WordPerfect, Doom, Quake и многие другие. Есть сведения, что
Linux без каких-либо модификаций последних. Среди них:
<application>&staroffice;</application>, Linux версия
<application>&netscape;</application>,
<application>&adobe;&nbsp;&acrobat;</application>,
<application><trademark
class="registered">RealPlayer</trademark></application>
5 и 7, <application><trademark>VMware</trademark></application>,
<application>&oracle;</application>, <application><trademark
class="registered">WordPerfect</trademark></application>,
<application>Doom</application>, <application>Quake</application>,
и многие другие. Есть сведения, что
в некоторых ситуациях эти Linux программы показывали более высокую
производительность при работе под FreeBSD, чем под Linux.</para>
<para>Конечно, существует некоторые особенности Linux, которые (пока) не
<indexterm>
<primary>Linux</primary>
<secondary>файловая система <filename>/proc</filename></secondary>
</indexterm>
<para>Конечно, существует некоторые особенности Linux, которые не
поддерживаются в полной мере FreeBSD. Например, так обстоят дела с
приложениями Linux, использующими файловую систему
<filename>/proc</filename>, так как реализация последней сильно
отличается от таковой в FreeBSD (однако, ситуация меняется к лучшему:
в FreeBSD-CURRENT поддержка Linux procfs уже встроена в систему).
Существуют также системные вызовы, специфичные для i386, как,
например, переключение в режим V86.</para>
отличается от файловой системы <filename>/proc</filename> в FreeBSD.
Существуют также системные вызовы, специфичные для &i386;, как,
например, переключение в виртуальный режим 8086.</para>
<para>При чтении этой главы вы узнаете:</para>
<itemizedlist>
<listitem>
<para>Как включить бинарную совместимость с Linux в
вашей системе.</para>
</listitem>
<listitem>
<para>Как установить дополнительные совместно используемые
библиотеки Linux.</para>
</listitem>
<listitem>
<para>Как установить приложения Linux в систему
FreeBSD.</para>
</listitem>
<listitem>
<para>Детали реализации совместимости с Linux в
FreeBSD.</para>
</listitem>
</itemizedlist>
<para>Перед прочтением этой главы вам
потребуется:</para>
<itemizedlist>
<listitem>
<para>Узнать как устанавливать дополнительное
программное обеспечение сторонних разработчиков
(<xref linkend="ports">).</para>
</listitem>
</itemizedlist>
<para>О том, как установить поддержку запуска Linux программ, читайте в
<link linkend="linuxemu-lbc-install">следующей секции</link>.</para>
</sect1>
<sect1 id="linuxemu-lbc-install">
<title>Инсталляция</title>
<title>Установка</title>
<para>Начиная с 3.0-RELEASE, больше нет необходимости указывать
<literal>options LINUX</literal> или <literal>options
COMPAT_LINUX</literal> в Вашем файле конфигурации ядра.</para>
<indexterm><primary>KLD (загружаемый объект ядра)</primary></indexterm>
<para>Поддержка Linux приложений осуществляется посредством специального
модуля ядра (KLD объекта, <quote>Kernel LoaDable object</quote>), то
есть его можно загрузить/выгрузить <quote>на лету</quote>, без
необходимости перезагрузки. Вам потребуется убедиться в наличии
следующей строки в файле <filename>/etc/rc.conf</filename>:</para>
<para>Бинарная совместимость с Linux не включена по умолчанию.
Простейший способ включения этой функциональности заключается
в загрузке KLD объекта <literal>linux</literal> (<quote>Kernel
LoaDable object</quote>). Вы можете загрузить этот модуль,
просто набрав <command>linux</command> в командной строке.</para>
<programlisting>linux_enable=<quote>YES</quote></programlisting>
<para>Если вы хотите, чтобы совместимость с Linux была включена
постоянно, необходимо добавить в <filename>/etc/rc.conf</filename>
следующую строку:</para>
<para>Это, в свою очередь, повлияет на выполнение следующего кода в
файле <filename>/etc/rc.i386</filename>:</para>
<programlisting>linux_enable="YES"</programlisting>
<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>
<para>Для проверки того, загружен ли KLD, может быть использована
команда &man.kldstat.8;:</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> в файле
<indexterm>
<primary>параметры ядра</primary>
<secondary>LINUX</secondary>
</indexterm>
<para>Если по какой-либо причине вы не хотите или не можете загрузить
KLD, то вы можете статически включить поддержку Linux в ядро
посредством опции <literal>options COMPAT_LINUX</literal> в файле
конфигурации ядра. Затем соберите и проинсталлируйте новое ядро,
следуя описанию в секции, посвященной <link
linkend="kernelconfig">конфигурации ядра</link>.</para>
следуя описанию в <xref linkend="kernelconfig">.</para>
<sect2>
<title>Установка необходимых Linux библиотек</title>
<indexterm>
<primary>Linux</primary>
<secondary>установка библиотек Linux</secondary>
</indexterm>
<para>Установить все требуемые библиотеки можно двумя путями: либо
используя порт <link linkend="linuxemu-libs-port">linux_base</link>,
либо установив их <link
@ -115,9 +179,12 @@ Id Refs Address Size Name
<sect3 id="linuxemu-libs-port">
<title>Установка с помощью порта linux_base</title>
<indexterm><primary>коллекция портов</primary></indexterm>
<para>Этот метод является самым простым, и мы рекомендуем
воспользоваться именно им. Процесс аналогичен установке любого
другого порта из <ulink url="../ports/">коллекции портов</ulink>.
другого порта из <ulink type="html"
url="file://localhost/usr/ports/">коллекции портов</ulink>.
Просто выполните следующие команды:</para>
<screen>&prompt.root; <userinput>cd /usr/ports/emulators/linux_base</userinput>
@ -127,13 +194,20 @@ Id Refs Address Size Name
программы, возможно, будут сообщать о несоответствии подверсий
некоторых системных библиотек. Однако, практически, это не
вызывает каких-либо неудобств.</para>
<note><para>Возможно наличие нескольких версий порта <filename
role="package">emulators/linux_base</filename>, соответствующих
различным версиям разных дистрибутивов Linux. Вы должны
установить порт, наиболее близко соотвествующий требованиям
приложений Linux, которые будут установлены.</para></note>
</sect3>
<sect3 id="linuxemu-libs-manually">
<title>Установка библиотек вручную</title>
<para>Если у Вас нет установленной коллекции портов, то можно
установить требуемые библиотеки вручную Вам понадобятся
<para>Если у вас нет установленной коллекции портов, можно
установить требуемые библиотеки вручную. Вам понадобятся
разделяемые библиотеки для Linux, которые нужны программам, и
runtime-компоновщик. Вам также потребуется создать <quote>теневой
корень</quote>: директорию <filename>/compat/linux</filename>, где
@ -147,55 +221,62 @@ Id Refs Address Size Name
находиться в теневом дереве, а не в пути, сообщаемым командой
Linux <command>ld.so</command>.</para>
<para>По мере работы с различными Linux программами, у Вас будет
<para>По мере работы с различными Linux программами, у вас будет
накапливаться некий базовый набор библиотек, которого будет
достаточно для большинства существующих Linux приложений.</para>
</sect3>
<sect3>
<title>Как установить дополнительные разделяемые библиотеки</title>
<title>Как установить дополнительные совместно используемые библиотеки</title>
<indexterm><primary>совместно используемые библиотеки</primary></indexterm>
<para>Что, если при установленном <filename>linux_base</filename>
порте Ваше приложение все равно сообщает об отсутствии необходимой
порте ваше приложение все равно сообщает об отсутствии необходимой
библиотеки? Как узнать, какая именно нужна библиотека и где ее
взять? В принципе, есть два способа. Вам необходимо иметь
привилегии суперпользователя для их осуществления.</para>
<para>Если у Вас есть доступ к машине, на которой установлен Linux,
<para>Если у вас есть доступ к машине, на которой установлен Linux,
узнайте, какие библиотеки использует Linux приложение, и просто
скопируйте из на свою машину. Например:</para>
<informalexample>
<para>Допустим, Вы скачали по FTP Linux версию Doom'а (на Linux
<para>Допустим, вы скачали по FTP Linux версию
<application>Doom</application> (на Linux
машине). Вы можете узнать, какие разделяемые библиотеки нужны
Doom'у при помощи команды <command>ldd linuxdoom</command>:</para>
<application>Doom</application> при помощи команды
<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>
<indexterm><primary>символические ссылки</primary></indexterm>
<para>Вам потребуются все файлы, перечисленные в последней
колонке. Скопируйте их в директорию
<filename>/compat/linux</filename> на Вашей системе, а также
<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>
/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>Заметьте, что если у вас уже есть какая-либо из
перечисленных библиотек, то ее не нужно копировать заново.
Однако, у Вас может быть более старая версия. В этом
Однако, у вас может быть более старая версия. В этом
случае, лучше все-таки скопировать библиотеку поздней
версии, изменив соответственно ссылку на нее. Предыдущую
версию библиотеки можно удалить. Например, пусть у Вас есть
версию библиотеки можно удалить. Например, пусть у вас есть
следующие библиотеки:</para>
<screen>/compat/linux/lib/libc.so.4.6.27
@ -209,7 +290,7 @@ libc.so.4 (DLL Jump 4.5pl26) =&gt; /lib/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
@ -222,7 +303,7 @@ libc.so.4 (DLL Jump 4.5pl26) =&gt; /lib/libc.so.4.6.29</screen>
<para>Символические ссылки важны <emphasis>только</emphasis>
для Linux программ. Runtime-компоновщик FreeBSD
самостоятельно подберет правильные номера версий библиотек,
и Вам не нужно об этом беспокоиться.</para>
и вам не нужно об этом беспокоиться.</para>
</note>
</blockquote>
</informalexample>
@ -230,9 +311,14 @@ libc.so.4 (DLL Jump 4.5pl26) =&gt; /lib/libc.so.4.6.29</screen>
</sect2>
<sect2>
<title>Настройка Linux ELF-исполняемых файлов</title>
<title>Установка Linux ELF исполняемых файлов</title>
<para>Для ELF-программ иногда требуется сделать так называемый
<indexterm>
<primary>Linux</primary>
<secondary>ELF исполняемые файлы</secondary>
</indexterm>
<para>Для ELF программ иногда требуется сделать так называемый
<quote>branding</quote>. Если при попытке запустить ELF-файл, Вы
получаете следующее сообщение об ошибке:</para>
@ -246,32 +332,35 @@ Abort</screen>
<screen>&prompt.user; <userinput>brandelf -t Linux linux-elf-программа</userinput></screen>
<para>Следует отметить, что программы, для которых необходим
<quote>branding</quote>, встречаются все реже и реже, и в недалеком
будущем Вы вряд ли прибегнете к нему вообще.</para>
<indexterm><primary>GNU toolchain</primary></indexterm>
<para>В настоящее время GNU toolchain помещает необходимую информацию
в исполняемые файлы ELF автоматически, поэтому необходимость
в этом действии случается все реже и реже, и в недалеком
будущем вы вряд ли прибегнете к нему вообще.</para>
</sect2>
<sect2>
<title>Распознавание доменных имен</title>
<para>Если DNS не настроен или недоступен, или Вы получаете это
<para>Если DNS не настроен или недоступен, или вы получаете это
сообщение:</para>
<screen>resolv+: "bind" is an invalid keyword resolv+:
"hosts" is an invalid keyword</screen>
<para>то Вам нужно создать (модифицировать) файл
<para>то вам нужно создать (модифицировать) файл
<filename>/compat/linux/etc/host.conf</filename>, содержащий:</para>
<programlisting>order hosts, bind
multi on</programlisting>
<para>Таким образом, Вы указываете, то сначала производится поиск в
<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>
@ -279,29 +368,52 @@ multi on</programlisting>
</sect1>
<sect1 id="linuxemu-mathematica">
<title>Установка пакета Mathematica</title>
<sect1info>
<authorgroup>
<author>
<firstname>Murray</firstname>
<surname>Stokely</surname>
<contrib>Обновил для Mathematica 4.X </contrib>
</author>
</authorgroup>
<authorgroup>
<author>
<firstname>Bojan</firstname>
<surname>Bistrovic</surname>
<contrib>Объединено с работой </contrib>
</author>
</authorgroup>
</sect1info>
<para><emphasis>Обновлено для Mathematica версии 4.x &a.murray;
и объединено с работой Bojan Bistrovic
<email>bojanb@physics.odu.edu</email>.</emphasis></para>
<title>Установка &mathematica;</title>
<para>Ниже описано, как установить Linux версию пакета Mathematica 4.x
на FreeBSD систему.</para>
<indexterm>
<primary>приложения</primary>
<secondary><application>Mathematica</application></secondary>
</indexterm>
<para>Linux версия Mathematica отлично работает под FreeBSD, однако
исполняемые файлы должны быть модифицированы утилитой
&man.brandelf.1;.</para>
<para>Ниже описано, как установить Linux версию пакета
<application>&mathematica; 4.X</application>
на систему FreeBSD.</para>
<para>Linux версия пакета Mathematica или Mathematica для Студентов
<para>Linux версия <application>&mathematica;</application> отлично
работает под FreeBSD, однако
исполняемые файлы, поставляемые Wolfram, должны быть модифицированы
утилитой &man.brandelf.1;, чтобы FreeBSD знала о необходимости
использования Linux ABI для их выполнения.</para>
<para>Linux версия пакета <application>&mathematica;</application>
или <application>&mathematica;</application> для студентов
может быть заказана непосредственно через Wolfram по адресу <ulink
url="http://www.wolfram.com/">http://www.wolfram.com/</ulink>.</para>
url="http://www.wolfram.com/"></ulink>.</para>
<sect2>
<title>Модификация исполняемых файлов</title>
<para>Исполняемые файлы пакета Mathematica находятся в директории
<para>Исполняемые файлы пакета <application>&mathematica;</application>
находятся в директории
<filename>Unix</filename> на компакт диске с дистрибутивом.
Скопируйте эту директорию (вместе со всеми подкаталогами) на Ваш
Скопируйте эту директорию (вместе со всеми подкаталогами) на ваш
жесткий диск, чтобы модифицировать (утилитой &man.brandelf.1;)
исполняемые файлы перед инсталляцией:</para>
@ -316,48 +428,59 @@ multi on</programlisting>
&prompt.root; <userinput>cd /localdir/Installers/Linux/</userinput>
&prompt.root; <userinput>./MathInstaller</userinput></screen>
<para>Вы также можете установить ELF brand по умолчанию в Linux
brand с помощью команды:</para>
<para>Вы также можете установить ELF brand по умолчанию для всех
приложений Linux, которым это требуется, с помощью команды:</para>
<screen>&prompt.root; <userinput>sysctl -w kern.fallback_elf_brand=3</userinput></screen>
<screen>&prompt.root; <userinput>sysctl kern.fallback_elf_brand=3</userinput></screen>
<para>Это заставит FreeBSD думать о том, что все программы не
обработанные &man.brandelf.1; используют Linux ABI и Вы сможете
<para>FreeBSD будет считать, что все программы, не
обработанные &man.brandelf.1; используют Linux ABI и вы сможете
запустить MathInstaller прямо с CDROM.</para>
</sect2>
<sect2>
<title>Пароль к пакету Mathematica</title>
<title>Пароль к пакету &mathematica;</title>
<para>Вам необходимо зарегистрировать свою копию пакета Mathematica и
<para>Вам необходимо зарегистрировать свою копию пакета
<application>&mathematica;</application> и
получить от Wolfram специальный пароль, соответствующий
<quote>идентификатор машины</quote>.</para>
<quote>идентификатору машины</quote>.</para>
<para>После того, как Вы установили необходимые библиотеки и
распаковали файлы Mathematica, получите <quote>идентификатор
<indexterm>
<primary>Ethernet</primary>
<secondary>MAC адрес</secondary>
</indexterm>
<para>После того, как вы установили необходимые библиотеки и
распаковали файлы <application>&mathematica;</application>,
получите <quote>идентификатор
машины</quote>, запустив программу <command>mathinfo</command> в
инсталляционной директории. Идентификатор машины зависит от
MAC-адреса Вашей первой ethernet-карточки.</para>
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>идентификатор
машины</quote>, а в ответ получаете пароль, состоящий из нескольких
чисел. Введите этот пароль при первом запуске Mathematica.</para>
чисел. Введите этот пароль при первом запуске
<application>&mathematica;</application>, как и для
любой другой платформы.</para>
</sect2>
<sect2>
<title>Внешний интерфейс пакета Mathematica</title>
<title>Подключение интерфейс &mathematica; через сеть</title>
<para>Mathematica использует специальные шрифты для отображения
<para><application>&mathematica;</application> использует специальные
шрифты для отображения
некоторых символов, которые отсутствуют в стандартных шрифтах
(символы интегралов, сумм, греческий алфавит и другие). Протокол X
требует, чтобы эти шрифты были установлены
<emphasis>локально</emphasis>. Это означает, что Вы должны
скопировать эти шрифты с компакт диска или сетевого узла на Ваш
<emphasis>локально</emphasis>. Это означает, что вы должны
скопировать эти шрифты с компакт диска или сетевого узла
<application>&mathematica;</application> на ваш
жесткий диск. Обычно, все шрифты должны находиться в каталоге
<filename>/cdrom/Unix/Files/SystemFiles/Fonts</filename> компакт
диска или
@ -368,11 +491,11 @@ disco.example.com 7115-70839-20412</screen>
<para>Можно просто скопировать их в один из существующих подкаталогов
в директории <filename>/usr/X11R6/lib/X11/fonts</filename>. В этом
случае, Вам потребуется отредактировать файл
случае, вам потребуется отредактировать файл
<filename>fonts.dir</filename>, добавив в него названия шрифтов и
изменив число шрифтов в первой строке. Или Вы можете запустить
программу <command>mkfontdir</command>, находясь в том каталоге,
куда Вы скопировали шрифты.</para>
изменив число шрифтов в первой строке. Или вы можете запустить
программу &man.mkfontdir.1;, находясь в том каталоге,
куда вы скопировали шрифты.</para>
<para>Есть альтернативный способ: скопировать директории в каталог
<filename>/usr/X11R6/lib/X11/fonts</filename>:</para>
@ -386,7 +509,7 @@ disco.example.com 7115-70839-20412</screen>
&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>
&prompt.root; <userinput>mkfontdir</userinput></screen>
<para>Теперь добавьте каталоги с новыми шрифтами в путь к
шрифтам:</para>
@ -395,69 +518,102 @@ disco.example.com 7115-70839-20412</screen>
&prompt.root; <userinput>xset fp+ /usr/X11R6/lib/X11/fonts/MathType1</userinput>
&prompt.root; <userinput>xset fp rehash</userinput></screen>
<para>Если Вы используете XFree86, то можно просто прописать эти
<para>Если вы используете <application>&xfree86;</application>,
то можно просто прописать эти
каталоги в файле <filename>XF86Config</filename>.</para>
<para>Если на Вашем компьютере <emphasis>нет</emphasis> каталога
<filename>/usr/X11R6/lib/X11/fonts/Type1</filename>, то замените
<indexterm><primary>шрифты</primary></indexterm>
<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>
<sect1 id="linuxemu-maple">
<title>Installing &maple; *</title>
<para><emphasis>Автор Marcel Moolenaar
<email>marcel@cup.hp.com</email></emphasis></para>
<para>Этот раздел не переведен.</para>
</sect1>
<sect1 id="linuxemu-matlab">
<title>Installing &matlab; *</title>
<para>Этот раздел не переведен.</para>
</sect1>
<sect1 id="linuxemu-oracle">
<sect1info>
<authorgroup>
<author>
<firstname>Marcel</firstname>
<surname>Moolenaar</surname>
<contrib>Предоставил </contrib>
</author>
<!-- marcel@cup.hp.com -->
</authorgroup>
</sect1info>
<title>Установка &oracle;</title>
<indexterm>
<primary>приложения</primary>
<secondary><application>Oracle</application></secondary>
</indexterm>
<sect2>
<title>Введение</title>
<para>Ниже описан процесс установки Oracle 8.0.5 и Oracle 8.0.5.1
Enterprise Edition для Linux на систему с FreeBSD.</para>
<para>Ниже описан процесс установки <application>&oracle;
8.0.5</application> и <application>&oracle; 8.0.5.1 Enterprise
Edition</application> для 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>Удостоверьтесь, что порты <filename
role='package'>emulators/linux_base</filename> и
<filename role='package'>devel/linux_devtools</filename> установлены
на вашей системе. Если у вас возникнут трудности с этими портами,
воспользуйтесь более ранней их версией.</para>
<para>Если Вы хотите использовать intelligent agent, Вам также
<para>Если вы хотите использовать intelligent agent, также
понадобится TCL пакет от Red Hat:
<filename>tcl-8.0.3-20.i386.rpm</filename>. Для этого
воспользуйтесь следующей командой:</para>
воспользуйтесь следующей командой <application>RPM</application>
(<filename role='package'>archivers/rpm</filename>):</para>
<screen>&prompt.root; <userinput>rpm -i --ignoreos --root /compat/linux --dbpath /var/lib/rpm <replaceable>package</replaceable></userinput></screen>
<screen>&prompt.root; <userinput>rpm -i --ignoreos --root /compat/linux --dbpath /var/lib/rpm <replaceable>пакет</replaceable></userinput></screen>
<para>Установка этого пакета должна пройти без каких-либо ошибок.</para>
<para>Установка этого <replaceable>пакета</replaceable> должна
пройти без каких-либо ошибок.</para>
</sect2>
<sect2>
<title>Настройка окружения Oracle</title>
<title>Настройка окружения &oracle;</title>
<para>Прежде чем Вы сможете установить Oracle, Вам необходимо
обеспечить нужное окружение. Ниже описывается, что
<emphasis>конкретно</emphasis> нужно сделать, чтобы успешно запускать
Oracle для Linux под FreeBSD. За общими сведениями обратитесь к
фирменному руководству по инсталляции Oracle.</para>
<para>Прежде чем вы сможете установить
<application>&oracle;</application>, вам необходимо
обеспечить соответствующее окружение. Ниже дана информация, что
<emphasis>именно</emphasis> нужно сделать, чтобы успешно запускать
<application>&oracle;</application> для Linux под FreeBSD,
а не то, что написано в фирменном руководстве по установке
<application>&oracle;</application>.</para>
<sect3 id="linuxemu-kernel-tuning">
<title>Настройка ядра</title>
<para>Как описывается в руководстве по инсталляции, необходимо
<indexterm><primary>настройка ядра</primary></indexterm>
<para>Как описывается в руководстве по установке
<application>&oracle;</application>, необходимо
установить максимальный размер разделяемой памяти. Не используйте
<literal>SHMMAX</literal> под FreeBSD. <literal>SHMMAX</literal>
высчитывается, исходя из <literal>SHMMAXPGS</literal> и
<literal>PGSIZE</literal>. Следовательно, нужно задавать
<literal>SHMMAXPGS</literal>. За информацией о прочих опциях
обратитесь к фирменному руководству:</para>
обратитесь к фирменному руководству. Пример настроек:</para>
<programlisting>options SHMMAXPGS=10000
options SHMMNI=100
@ -467,7 +623,7 @@ options SEMMNI=70
options SEMMSL=61</programlisting>
<para>Установите эти опции в зависимости от того, как и для чего
Вы будете использовать Oracle.</para>
вы будете использовать <application>&oracle;</application>.</para>
<para>Не забудьте добавить следующие строки в файл конфигурации
ядра:</para>
@ -479,25 +635,30 @@ options SYSVMSG #
<sect3 id="linuxemu-oracle-account">
<title>Oracle аккаунт</title>
<title>Учетная запись &oracle;</title>
<para>Вам нужно создать специальный Oracle аккаунт, как и любой
другой аккаунт. Единственное отличие в том, что Вы должны указать
для него командный интерпретатор Linux:
<filename>/compat/linux/bin/bash</filename>. Не забудьте добавить
<literal>/compat/linux/bin/bash</literal> в файл
<filename>/etc/shells</filename>.</para>
<para>Создайте специальную учетную запись
<username>oracle</username>, как и любую другую учетную запись.
Единственное отличие в том, что для <username>oracle</username>
необходимо указать командный интерпретатор Linux.
Добавьте <filename>/compat/linux/bin/bash</filename> в
<filename>/etc/shells</filename> и установите для
<username>oracle</username> командный интерпритатор
<filename>/compat/linux/bin/bash</filename>.</para>
</sect3>
<sect3 id="linuxemu-environment">
<title>Переменные окружения</title>
<para>Кроме стандартных переменных окружения, таких как
<envar>ORACLE_HOME</envar> и <envar>ORACLE_SID</envar>, Вам нужно
<para>Кроме стандартных переменных окружения
<application>&oracle;</application>, таких как
<envar>ORACLE_HOME</envar> и <envar>ORACLE_SID</envar>, вам нужно
будет установить следующие дополнительные переменные:</para>
<informaltable frame="none">
<tgroup cols="2">
<colspec colwidth="1*">
<colspec colwidth="2*">
<thead>
<row>
<entry>Переменная</entry>
@ -547,23 +708,28 @@ 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</programlisting>
</sect3>
</sect2>
<sect2>
<title>Инсталляция Oracle</title>
<title>Установка &oracle;</title>
<para>Из-за небольшой несовместимости с Linux эмулятором, Вам нужно
будет создать подкаталог <filename>.oracle</filename> в директории
<filename>/var/tmp</filename> прежде чем можно будет начать
инсталляцию. Либо сделайте ее владельцем пользователя oracle, либо
поставьте права на запись для всех. Если Вы все сделали правильно,
то инсталляция должна пройти без проблем. Если какие-либо трудности
все же возникли, проверьте еще раз все конфигурационные файлы и
целостность дистрибутива. После окончания установки, приложите
патчи (смотрите следующие две секции).</para>
<para>Из-за небольшой несовместимости с Linux эмулятором, вам нужно
будет создать подкаталог <filename>.oracle</filename> в каталоге
<filename>/var/tmp</filename> прежде, чем можно будет начать
установку. Либо сделайте ее владельцем пользователя
<username>oracle</username>, либо поставьте права на запись для всех.
Если вы все сделали правильно, то установка
<application>&oracle;</application> должна пройти без проблем. Если
какие-либо трудности все же возникли, проверьте еще раз все
конфигурационные файлы и/или целостность дистрибутива
<application>&oracle;</application>. После окончания установки
<application>&oracle;</application> приложите патчи
(смотрите следующие два раздела).</para>
<para>Одна из часто возникающих проблем &mdash; неправильно
установленный TCP адаптер. В результате, невозможно запустить TCP
@ -581,7 +747,8 @@ export PATH</programlisting>
<sect3 id="linuxemu-patch-root">
<title>Модификация root.sh</title>
<para>Инсталлируя Oracle, необходимо выполнить некоторые действия
<para>При установке <application>&oracle;</application>
необходимо выполнить некоторые действия
(имея при этом привилегии суперпользователя). Фактически это
сводится к выполнению скрипта <filename>root.sh</filename>,
который находится в директории <filename>orainst</filename>.
@ -607,17 +774,21 @@ export PATH</programlisting>
#
# Define variables to be used in this script</programlisting>
<para>Если Вы инсталлируете Oracle не с компакт диска, то можно
модифицировать файл <filename>rthd.sh</filename>, который
находится в директории <filename>orainst</filename>.</para>
<para>Если вы устанавливаете <application>&oracle;</application>
не с компакт диска, можно модифицировать исходный файл
<filename>root.sh</filename>. Он называется
<filename>rthd.sh</filename> и находится в каталоге
<filename>orainst</filename>.</para>
</sect3>
<sect3 id="linuxemu-patch-tcl">
<title>Модификация genclntsh</title>
<para>Скрипт genclntsh используется для того, чтобы создать единую
разделяемую клиентскую библиотеку. Приложите следующий патч,
чтобы закомментировать определение переменной PATH:</para>
<para>Скрипт <command>genclntsh</command> используется для того,
чтобы создать единую совместно используемую клиентскую библиотеку,
которая используется для создания демонстраций. Приложите следующий
патч, чтобы закомментировать определение переменной
<envar>PATH</envar>:</para>
<programlisting>*** bin/genclntsh.orig Wed Sep 30 07:37:19 1998
--- bin/genclntsh Tue Dec 22 15:36:49 1998
@ -640,23 +811,32 @@ export PATH</programlisting>
</sect2>
<sect2>
<title>Запуск и использование Oracle</title>
<title>Запуск &oracle;</title>
<para>Теперь, если Вы все сделали правильно, то можете использовать
Oracle так же, как если бы Вы поставили его на Linux систему.</para>
<para>Теперь, если вы все сделали правильно, то можете использовать
<application>&oracle;</application> так же, как и в системе
Linux.</para>
</sect2>
</sect1>
<sect1>
<sect1 id="sapr3">
<title>Installing &sap.r3; *</title>
<para>Этот раздел не переведен.</para>
</sect1>
<sect1 id="linuxemu-advanced">
<title>Дополнительные сведения</title>
<para>Если Вы интересуетесь, как работает Linux эмуляция, эта секция для
Вас. Большинство материала взято из электронного письма, адресованного
<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>
<indexterm><primary>загрузчик исполнимых классов</primary></indexterm>
<para>FreeBSD поддерживает абстракцию, называемую <quote>загрузчик
исполнимых классов</quote>, который фактически является первой
@ -666,7 +846,7 @@ export PATH</programlisting>
одного, который, в случае неудачи, выполняет программу как
сценарий (скрипт).</para>
<para>Исторически сложилось, что единственный загрузчик в UNIX
<para>Исторически сложилось, что единственный загрузчик в &unix;
системах проверял <quote>магическое число</quote> (чаще всего первые
4 или 8 байт файла), чтобы определить, известен ли формат
исполняемого файла системе, и если да, то вызвал соответствующий
@ -686,16 +866,18 @@ export PATH</programlisting>
включая специальный <literal>#!</literal> загрузчик, который
вызывает нужный интерпретатор или <filename>/bin/sh</filename>, если
не нашел подходящего.</para>
<indexterm><primary>ELF</primary></indexterm>
<para>Формат исполняемого файла FreeBSD определяет по
<quote>магическому числу</quote>. На этой стадии пока не
различается, для какой операционной системы предназначен файл
(Linux, Solaris, или любой другой, использующей ELF-формат
(Linux, &solaris;, или любой другой, использующей ELF-формат
исполняемых файлов).</para>
<indexterm><primary>Solaris</primary></indexterm>
<para>Далее, ELF-загрузчик определяет <quote>марку</quote>
(специальный комментарий; отсутствует в исполняемых файлах
SVR4/Solaris) исполняемого файла, то есть для какой операционной
SVR4/&solaris;) исполняемого файла, то есть для какой операционной
системы он предназначен.</para>
<para>Соответственно, Linux программы должны быть
@ -704,19 +886,24 @@ export PATH</programlisting>
<screen>&prompt.root; <userinput>brandelf -t Linux file</userinput></screen>
<indexterm>
<primary>ELF</primary>
<secondary>branding</secondary>
</indexterm>
<para>Когда ELF-загрузчик находит <quote>марку</quote>
<literal>Linux</literal>, он заменяет соответствующий указатель в
структуре <literal>proc</literal>. Все системные вызовы
индексируются через этот указатель (в традиционной UNIX системе, это
индексируются через этот указатель (в традиционной &unix; системе это
массив <literal>sysent[]</literal>, содержащий системные вызовы).
Некоторые особые ситуации и системные вызовы обрабатываются
специальным модулем ядра поддержки Linux.</para>
<para>Плюс ко всему, Linux эмулятор динамически <quote>изменяет
корень</quote> файловой системы при поиске файлов (фактически делая
то же самое, что и опция <literal>union</literal> при монтировании
файловых систем (не путать с unionfs!)). Сперва, файл ищется в
директории
корень</quote> файловой системы при поиске файлов; фактически
так же, как и параметр <literal>union</literal> при монтировании
файловых систем (не путать с <literal>unionfs</literal>!).
Сперва, файл ищется в каталоге
<filename>/compat/linux/<replaceable>original-path</replaceable></filename>
и только затем, в случае неудачи, в
<filename>/<replaceable>original-path</replaceable></filename>. Это
@ -745,15 +932,29 @@ export PATH</programlisting>
могут быть либо в ядре, либо в динамически загружаемом
модуле.</para>
<para>Можно ли назвать это эмуляцией? Нет. Как таковой, эмулятор
(или симулятор) отсутствует. В таком случае, почему же тогда
<para>Можно ли назвать это эмуляцией? Нет. Это реализация ABI,
а не эмуляция. Как таковой, эмулятор (или симулятор)
отсутствует.</para>
<para>В таком случае, почему же тогда
говорят <quote>Linux эмуляция</quote>? Чтобы
<quote>насолить</quote> FreeBSD?! <!-- smiley -->8-). На самом
<quote>насолить</quote> FreeBSD?!. На самом
деле, это вопрос терминологии: не существовало слова, которое бы
точнее описывало этот процесс. Нельзя сказать, что FreeBSD
запускает приложения Linux (без перекомпиляции или загрузки
соответствующего модуля ядра). Тогда и придумали термин
соответствующего модуля ядра). Поэтому и придумали термин
<quote>Linux эмуляция</quote>.</para>
</sect2>
</sect1>
</chapter>
<!--
Local Variables:
mode: sgml
sgml-declaration: "../chapter.decl"
sgml-indent-data: t
sgml-omittag: nil
sgml-always-quote-attributes: t
sgml-parent-document: ("../book.sgml" "part" "chapter")
End:
-->