<!--
     The FreeBSD Russian Documentation Project

     $FreeBSD$
     $FreeBSDru: frdp/doc/ru_RU.KOI8-R/books/handbook/linuxemu/chapter.sgml,v 1.17 2005/01/10 13:38:42 den Exp $

     Original revision: 1.120
-->

<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>
	<surname>Докучаев</surname>
	<contrib>Перевод на русский язык: </contrib>
      </author>
    </authorgroup>
    <authorgroup>
      <author>
	<firstname>Валерий</firstname>
	<surname>Кравчук</surname>
	<contrib>Перевод на русский язык и редактирование: </contrib>
      </author>
    </authorgroup>
  </chapterinfo>

  <title>Двоичная совместимость с Linux</title>

  <sect1 id="linuxemu-synopsis">
    <title>Краткий обзор</title>
    <indexterm><primary>Linux - бинарная совместимость</primary></indexterm>
    <indexterm>
      <primary>двоичная совместимость</primary>
      <secondary>Linux</secondary>
    </indexterm>

    <para>FreeBSD предоставляет двоичную совместимость с несколькими другими
      &unix;&ndash;подобными операционными системами, включая Linux.
      Возможно, вы спрашиваете себя, зачем FreeBSD нужно уметь работать
      с приложениями, написанными для Linux?  Ответ на этот вопрос достаточно
      прост: многие компании и разработчики производят программное
      обеспечение только для Linux, так как эта операционная система очень
      быстро завоевала огромную популярность в компьютерном мире.
      Пользователям же FreeBSD приходится обращаться к этим компаниям и
      разработчикам с просьбами выпустить версии своих программ специально
      для FreeBSD.  Проблема в том, что большинство производителей
      программного обеспечения не осознают, насколько бы увеличился их рынок
      сбыта, выпускай они также FreeBSD&ndash;версии, и продолжают разрабатывать
      только под Linux.  Что же делать пользователям FreeBSD?  В этой 
      ситуации на помощь приходит двоичная совместимость FreeBSD с
      Linux.</para>

    <para>Вкратце, эта совместимость позволяет пользователям FreeBSD
      работать с 90% приложений для Linux без каких-либо модификаций 
      последних.  Среди этих приложений:
      <application>&staroffice;</application>, Linux&ndash;версия
      <application>&netscape;</application>,
      <application>&adobe;&nbsp;&acrobat;</application>,
      <application><trademark
      class="registered">RealPlayer</trademark></application>,
      <application><trademark>VMware</trademark></application>,
      <application>&oracle;</application>, <application><trademark
      class="registered">WordPerfect</trademark></application>,
      <application>Doom</application>, <application>Quake</application>,
      и многие другие.  Есть сведения, что в некоторых ситуациях эти
      Linux&ndash;программы показывали более высокую производительность при 
      работе под FreeBSD, чем под Linux.</para>

    <indexterm>
      <primary>Linux</primary>
      <secondary>файловая система <filename>/proc</filename></secondary>
    </indexterm>

    <para>Конечно, существуют некоторые особенности Linux, которые не
      поддерживаются в полной мере под FreeBSD.  Например, не будут
      работать приложения Linux, использующие файловую систему
      <filename>/proc</filename> (реализация которой отличается от файловой
      системы <filename>/proc</filename> в ОС FreeBSD) или специфичные 
      вызовы &i386;, такие как переключение в виртуальный режим 8086.</para>

    <para>При чтении этой главы вы узнаете:</para>
    <itemizedlist>
      <listitem>
	<para>Как включить двоичную совместимость с Linux в
	  вашей системе.</para>
      </listitem>

      <listitem>
	<para>Как установить дополнительные совместно используемые
	  (shared) библиотеки 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>

  </sect1>

  <sect1 id="linuxemu-lbc-install">
    <title>Установка</title>

    <indexterm><primary>KLD (загружаемый объект ядра)</primary></indexterm>

    <para>Двоичная совместимость с Linux не включена по умолчанию.
      Простейший способ включения этой функциональности заключается
      в загрузке KLD&ndash;объекта <literal>linux</literal> (<quote>Kernel
      LoaDable object</quote>).  Вы можете загрузить этот модуль,
      просто набрав <command>linux</command> в командной строке.</para>

    <para>Если вы хотите, чтобы совместимость с Linux была включена
      постоянно, необходимо добавить в <filename>/etc/rc.conf</filename>
      следующую строку:</para>

    <programlisting>linux_enable="YES"</programlisting>

    <para>Для проверки того, загружен ли модуль, может быть использована
      команда &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>

    <indexterm>
      <primary>параметры ядра</primary>
      <secondary>LINUX</secondary>
    </indexterm>

    <para>Если по какой-либо причине вы не хотите или не можете загрузить
      KLD, вы можете статически включить поддержку Linux в ядро,
      добавив опцию <literal>options COMPAT_LINUX</literal> в файл
      конфигурации ядра.  Затем соберите и установите новое ядро,
      следуя описанию в <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
	linkend="linuxemu-libs-manually">вручную</link>.</para>

      <sect3 id="linuxemu-libs-port">
	<title>Установка с помощью порта linux_base</title>

	<indexterm><primary>коллекция портов</primary></indexterm>

	<para>Этот метод является самым простым, и мы рекомендуем
	  воспользоваться именно им.  Процесс аналогичен установке любого
	  другого порта из <ulink type="html"
	  url="file://localhost/usr/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>

	<note><para>Возможно наличие нескольких версий порта <filename
	  role="package">emulators/linux_base</filename>, соответствующих
	  различным версиям разных дистрибутивов Linux.  Вы должны
	  установить порт, наиболее близко соответствующий требованиям
	  приложений Linux, которые будут установлены.</para></note>

      </sect3>

      <sect3 id="linuxemu-libs-manually">
	<title>Установка библиотек вручную</title>

	<para>Если у вас не установлена коллекция портов, можно
	  установить требуемые библиотеки вручную. Вам понадобятся
	  совместно используемые библиотеки для Linux, которые нужны программам, и
	  runtime&ndash;компоновщик.  Вам также потребуется создать <quote>теневой
	  корневой каталог</quote>, <filename>/compat/linux</filename>, где
	  будут расположены Linux&ndash;библиотеки.  Если Linux&ndash;программе нужно
	  загрузить какую&ndash;либо совместно используемую библиотеку, 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&ndash;программы, только при нескольких первых
	  установках приложений Linux на вашу систему FreeBSD.  По мере
	  работы, у вас в системе накопится достаточный набор совместно используемых
	  библиотек Linux для запуска новых Linux-программ без 
	  дополнительных действий.</para>
      </sect3>

      <sect3>
	<title>Как установить дополнительные совместно используемые библиотеки</title>

	<indexterm><primary>совместно используемые библиотеки</primary></indexterm>

	<para>Что, если при установленном <filename>linux_base</filename>
	  порте ваше приложение все равно сообщает об отсутствии необходимой
	  библиотеки?  Как узнать, какая именно нужна библиотека и где ее
	  взять?  В принципе, есть два способа.  Вам необходимо иметь
	  привилегии пользователя <username>root</username> для их
	  осуществления.</para>

	<para>Если у вас есть доступ к машине, на которой установлен Linux,
	  узнайте, какие библиотеки использует Linux&ndash;приложение, и просто
	  скопируйте из на свою машину.  Рассмотрим следующий пример:</para>

	<informalexample>
	  <para>Допустим, вы скачали по FTP Linux&ndash;версию
	    <application>Doom</application> и установили ее на Linux&ndash;машине.
	    Вы можете узнать, какие совместно используемые библиотеки нужны
	    <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>
	    на вашей системе, а также создайте символические ссылки на эти 
	    файлы с именами из первого столбца, соответственно.  В итоге,
	    у вас в системе FreeBSD должны быть следующие файлы:</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>Учтите, что если у вас уже есть совместно используемая библиотека
	        Linux с соответствующим первому столбцу результатов
		<command>ldd</command> основным номером версии, вам не
		обязательно копировать файл, указанный в последнем столбце,
		в вашу систему.  Уже существующий файл должен подойти.  
		Рекомендуется, однако, все равно скопировать совместно используемую
		библиотеку, если ее версия новее.  Предыдущую версию
		библиотеки можно удалить, если вы создали символическую ссылку
		на новую.  Итак, если у вас в системе есть следующие
		библиотеки:</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&ndash;программ.  Runtime&ndash;компоновщик FreeBSD
		самостоятельно подберет правильные номера версий библиотек,
		и вам не нужно об этом беспокоиться.</para>
	    </note>
	  </blockquote>
	</informalexample>
      </sect3>
    </sect2>

    <sect2>
      <title>Установка двоичных файлов Linux ELF</title>

      <indexterm>
	<primary>Linux</primary>
	<secondary>двоичные файлы ELF</secondary>
      </indexterm>

      <para>Для ELF-файлов иногда требуется сделать так называемый
	<quote>branding</quote> (маркировать его).  Если попытаться 
	запустить немаркированный ELF-файл, вы получите следующее сообщение
	об ошибке:</para>

      <screen>&prompt.user; <userinput>./моя-linux-elf-программа</userinput>
ELF binary type not known
Abort</screen>

      <para>Чтобы помочь ядру FreeBSD отличить ELF-файл FreeBSD от
        двоичного файла Linux, используется утилита &man.brandelf.1;:</para>

      <screen>&prompt.user; <userinput>brandelf -t Linux моя-linux-elf-программа</userinput></screen>

      <indexterm><primary>GNU toolchain</primary></indexterm>

      <para>В настоящее время набор инструментальных средств GNU 
        (GNU toolchain) помещает необходимую маркировочную информацию
	в двоичные ELF-файлы автоматически, поэтому необходимость
	в этом действии возникает всё реже.</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&ndash;приложения находят файл
	<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">
    <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>

    <title>Установка &mathematica;</title>

    <indexterm>
      <primary>приложения</primary>
      <secondary><application>Mathematica</application></secondary>
    </indexterm>

    <para>Ниже описано, как установить Linux&ndash;версию пакета
      <application>&mathematica; 4.X</application>
      на систему FreeBSD.</para>

    <para>Linux&ndash;версия <application>&mathematica;</application> отлично
      работает под FreeBSD, однако
      выполняемые файлы, поставляемые Wolfram, должны быть маркированы
      утилитой &man.brandelf.1;, чтобы FreeBSD знала о необходимости
      использования Linux ABI для их выполнения.</para>

    <para>Linux&ndash;версию пакета <application>&mathematica;</application>
      или <application>&mathematica; for Students</application>
      можно заказать непосредственно в компании Wolfram по адресу 
      <ulink url="http://www.wolfram.com/"></ulink>.</para>

    <sect2>
      <title>Маркировка двоичных файлов Linux</title>

      <para>Двоичные файлы Linux находятся в каталоге
	<filename>Unix</filename> на компакт-диске с дистрибутивом
	<application>&mathematica;</application> от Wolfram.
	Скопируйте этот каталог (вместе со всеми подкаталогами) на ваш
	жесткий диск, чтобы промаркировать (утилитой &man.brandelf.1;)
	двоичные файлы Linux перед инсталляцией:</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 Linux по умолчанию для всех
      немаркированных двоичных файлов с помощью команды:</para>

    <screen>&prompt.root; <userinput>sysctl kern.fallback_elf_brand=3</userinput></screen>

    <para>FreeBSD будет считать, что все немаркированные двоичные
      ELF-файлы используют Linux ABI, и вы сможете
      запустить MathInstaller прямо с CDROM.</para>
    </sect2>

    <sect2>
      <title>Получение пароля к пакету &mathematica;</title>

      <para>Прежде чем запускать <application>&mathematica;</application>,
        вам необходимо получить от компании Wolfram пароль, соответствующий
	<quote>идентификатору машины</quote>.</para>

      <indexterm>
	<primary>Ethernet</primary>
	<secondary>MAC-адрес</secondary>
      </indexterm>

      <para>После того, как вы установили необходимые библиотеки и
	распаковали файлы <application>&mathematica;</application>,
	получите <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>, а в ответ 
	получаете пароль, состоящий из нескольких групп чисел.  Введите 
	этот пароль при первом запуске 
	<application>&mathematica;</application>, как и для
	любой другой платформы.</para>
    </sect2>

    <sect2>
      <title>Использование интерфейса &mathematica; по сети</title>

      <para><application>&mathematica;</application> использует специальные
	шрифты для отображения некоторых символов, которые отсутствуют в
	стандартных шрифтах (символы интегралов, сумм, греческий алфавит и
	другие).  Протокол X требует, чтобы эти шрифты были установлены
	<emphasis>локально</emphasis>.  Это означает, что вы должны
	скопировать эти шрифты с компакт-диска или хоста, на котором
	установлена <application>&mathematica;</application>, на вашу
	машину.  Обычно эти шрифты находятся в каталоге
	<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>, добавив в него названия шрифтов и
	изменив число шрифтов в первой строке.  Можно также запустить
	программу &man.mkfontdir.1;, находясь в том каталоге,
	куда вы скопировали шрифты.</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>Если вы используете сервер <application>&xorg;</application>,
	то можно просто прописать эти
	каталоги в файле <filename>xorg.conf</filename>.</para>

      <note><para>Для сервера <application>&xfree86;</application>,
	файл конфигурации <filename>XF86Config</filename>.</para></note>

      <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-maple">
    <sect1info>
      <authorgroup>
	<author>
	  <firstname>Aaron</firstname>
	  <surname>Kaplan</surname>
<!--	  <address><email>aaron@lo-res.org</email></address>-->
	  <contrib>Предоставил </contrib>
	</author>
      </authorgroup>
      <authorgroup>
	<author>
	  <firstname>Robert</firstname>
	  <surname>Getschmann</surname>
<!--	  <address><email>rob@getschmann.org</email></address>-->
	  <contrib>Благодарности: </contrib>
	</author>
      </authorgroup>
    </sect1info>
    <title>Установка &maple;</title>

    <indexterm>
      <primary>приложения</primary>
      <secondary><application>Maple</application></secondary>
    </indexterm>

    <para><application>&maple;</application>&nbsp;&mdash; коммерческая
      математическая программа, аналогичная
      <application>&mathematica;</application>.  Это программное обеспечение
      надо купить у <ulink url="http://www.maplesoft.com/"></ulink>, а потом
      зарегистрироваться там для получения файла лицензии.  Для установки
      этого программного обеспечения в ОС FreeBSD используется следующая
      последовательность простых шагов.</para>

      <procedure>
	<step><para>Выполните скрипт командного интерпретатора
	  <filename>INSTALL</filename> из дистрибутива.  Выберите
	  опцию <quote>RedHat</quote>, когда будет предложено программой
	  установки.  Обычно установка выполняется в каталог <filename
	  class="directory">/usr/local/maple</filename>.</para></step>

	<step><para>Если вы этого ещё не сделали, купите лицензию на
	  <application>&maple;</application> в компании Maple Waterloo
	  Software (<ulink url="http://register.maplesoft.com/"></ulink>)
	  и скопируйте ее в файл
	  <filename>/usr/local/maple/license/license.dat</filename>.</para></step>

	<step><para>Установите диспетчер лицензий
	  <application>FLEXlm</application>, выполнив скрипт установки
	  <filename>INSTALL_LIC</filename>, входящий в состав
	  <application>&maple;</application>.  Укажите основное имя хоста
	  вашей машины для сервера лицензий.</para></step>

	<step><para>Исправьте файл
	  <filename>/usr/local/maple/bin/maple.system.type</filename>
	  с помощью следующего патча:</para>
<programlisting>   ----- snip ------------------
*** maple.system.type.orig      Sun Jul  8 16:35:33 2001
--- maple.system.type   Sun Jul  8 16:35:51 2001
***************
*** 72,77 ****
--- 72,78 ----
          # the IBM RS/6000 AIX case
          MAPLE_BIN="bin.IBM_RISC_UNIX"
          ;;
+     "FreeBSD"|\
      "Linux")
          # the Linux/x86 case
        # We have two Linux implementations, one for Red Hat and
   ----- snip end of patch -----</programlisting>

	<para>Учтите, что после <literal>"FreeBSD"|\</literal> не должно
	  быть никаких пробелов.</para>

	<para>Этот патч заставляет <application>&maple;</application>
	  распознавать <quote>FreeBSD</quote> как тип Linux-системы.
	  Скрипт командного интерпретатора <filename>bin/maple</filename>
	  вызывает скрипт <filename>bin/maple.system.type</filename>,
	  который, в свою очередь, вызывает <command>uname -a</command> для
	  получения имени операционной системы. В зависимости от имени ОС
	  он определяет, какие двоичные модули использовать.</para></step>

      <step><para>Запустите сервер лицензий.</para>

	<para>Следующий скрипт, установленный в файл
	  <filename>/usr/local/etc/rc.d/lmgrd.sh</filename>, обеспечивает
	  удобный способ запуска <command>lmgrd</command>:</para>

	<programlisting>   ----- snip ------------

#! /bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/X11R6/bin
PATH=${PATH}:/usr/local/maple/bin:/usr/local/maple/FLEXlm/UNIX/LINUX
export PATH

LICENSE_FILE=/usr/local/maple/license/license.dat
LOG=/var/log/lmgrd.log

case "$1" in
start)
	lmgrd -c ${LICENSE_FILE} 2>> ${LOG} 1>&2
	echo -n " lmgrd"
	;;
stop)
	lmgrd -c ${LICENSE_FILE} -x lmdown 2>> ${LOG} 1>&2
	;;
*)
	echo "Usage: `basename $0` {start|stop}" 1>&2
	exit 64
	;;
esac

exit 0
   ----- snip ------------</programlisting></step>


      <step><para>Выполните тестовый запуск
	<application>&maple;</application>:</para>
	<screen>&prompt.user; <userinput>cd /usr/local/maple/bin</userinput>
&prompt.user; <userinput>./xmaple</userinput></screen>

	<para>Программа должна запуститься и работать.  Не забудьте написать
	  в Maplesoft и сообщить, что хотели бы видеть версию специально
	  для FreeBSD!</para></step>
    </procedure>

    <sect2>
      <title>Типичные проблемы</title>

      <itemizedlist>
	<listitem><para>Работать с диспетчером лицензий
	  <application>FLEXlm</application> может быть непросто.
	  Дополнительную документацию по нему можно найти на сайте <ulink
	  url="http://www.globetrotter.com/"></ulink>.</para></listitem>

	<listitem><para><command>lmgrd</command> очень требователен к
	  файлу лицензии и выдает дамп памяти при выявлении любых проблем.
	  Правильный файл лицензии должен иметь следующий вид:</para>

<programlisting># =======================================================
# License File for UNIX Installations ("Pointer File")
# =======================================================
SERVER chillig ANY
#USE_SERVER
VENDOR maplelmg

FEATURE Maple maplelmg 2000.0831 permanent 1 XXXXXXXXXXXX \
         PLATFORMS=i86_r ISSUER="Waterloo Maple Inc." \
         ISSUED=11-may-2000 NOTICE=" Technische Universitat Wien" \
         SN=XXXXXXXXX</programlisting>

	  <note><para>Серийный номер и ключ забиты символами 'X'.
	    <hostid>chillig</hostid>&nbsp;&ndash; имя хоста.</para></note>

  	  <para>Редактирование файла лицензий возможно, если только не
	    трогать строку <quote>FEATURE</quote> (которая защищена
	    лицензионным ключом).</para></listitem>
      </itemizedlist>
    </sect2>
  </sect1>

  <sect1 id="linuxemu-matlab">
    <title>Установка &matlab;</title>
    <indexterm>
      <primary>приложения</primary>
      <secondary><application>MATLAB</application></secondary>
    </indexterm>

    <para>Этот документ описывает процесс установки Linux-версии
      <application>&matlab; версии 6.5</application> на систему
      &os;.  Эта программа работает вполне нормально, за исключением
      <application>&java.virtual.machine;</application> (см.
      <xref linkend="matlab-jre">).</para>

    <para>Linux-версию <application>&matlab;</application> можно приобрести
      непосредственно в компании The MathWorks на сайте <ulink
      url="http://www.mathworks.com"></ulink>.  Не забудьте получить
      файл лицензии или инструкции по его созданию.  По ходу дела дайте
      знать производителю, что хотели бы увидеть версию их ПО специально
      для &os;.</para>

    <sect2>
      <title>Процесс установки &matlab;</title>

      <para>Для установки <application>&matlab;</application> выполните
	следующие шаги:</para>

      <procedure>
	<step>
	  <para>Вставьте инсталляционный CD и смонтируйте его.
	    Станьте пользователем <username>root</username>, как рекомендует
	    скрипт установки.  Для запуска скрипта установки наберите:</para>

	  <screen>&prompt.root; <userinput>/compat/linux/bin/sh /cdrom/install</userinput></screen>

	  <tip>
	    <para>Запускается графический инсталлятор.  Если вы получаете
	      сообщения о невозможности открыть дисплей, наберите
	      <command>setenv HOME ~<replaceable>USER</replaceable></command>,
	      где <replaceable>USER</replaceable>&nbsp;&ndash; пользователь, от
	      имени которого выполнена команда &man.su.1;.</para>
	  </tip>
	</step>

	<step>
	  <para>
	    При запросе корневого каталога
	    <application>&matlab;</application>, наберите:
	    <userinput>/compat/linux/usr/local/matlab</userinput>.</para>

	  <tip>
	    <para>Чтобы упростить набор остальных команд в ходе установки,
	      выполните в командном интерпретаторе следующую команду:
	      <command>set MATLAB=/compat/linux/usr/local/matlab</command></para>
	  </tip>
	</step>

	<step>
	  <para>Отредактируйте файл лицензии в соответствии с инструкциями
	    в полученной лицензии <application>&matlab;</application>.</para>

	  <tip>
	    <para>Этот файл можно подготовить заранее с помощью любого
	      текстового редактора и скопировать его в
	      <filename>$MATLAB/license.dat</filename> до того, как
	      инсталлятор попросит его отредактировать.</para>
	  </tip>
	</step>

	<step>
	  <para>Завершите процесс установки.</para>
	</step>
      </procedure>

      <para>В этот момент ваша установка <application>&matlab;</application>
	завершена.  Следующие шаги позволяют <quote>связать</quote>
	эту программу с вашей системой &os;.</para>
    </sect2>

    <sect2>
      <title>Запуск диспетчера лицензий</title>
      <procedure>
	<step>
	  <para>Создайте символические ссылки для скриптов диспетчера
	    лицензий:</para>

	  <screen>&prompt.root; <userinput>ln -s $MATLAB/etc/lmboot /usr/local/etc/lmboot_TMW</userinput>
&prompt.root; <userinput>ln -s $MATLAB/etc/lmdown /usr/local/etc/lmdown_TMW</userinput></screen>
	</step>
	
	<step>
	  <para>Создайте файл запуска
	    <filename>/usr/local/etc/rc.d/flexlm.sh</filename>.
	    Представленный ниже пример&nbsp;&ndash; измененная версия входящего
	    в дистрибутив файла <filename>$MATLAB/etc/rc.lm.glnx86</filename>.
	    Изменены местонахождения файлов и диспетчер лицензий запускается
	    под эмулятором Linux.</para>

	  <programlisting>#!/bin/sh
case "$1" in
  start)
        if [ -f /usr/local/etc/lmboot_TMW ]; then
              /compat/linux/bin/sh /usr/local/etc/lmboot_TMW -u <replaceable>username</replaceable> &amp;&amp; echo 'MATLAB_lmgrd'
        fi
        ;;
  stop)
	if [ -f /usr/local/etc/lmdown_TMW ]; then
            /compat/linux/bin/sh /usr/local/etc/lmdown_TMW  &gt; /dev/null 2&gt;&amp;1
	fi
        ;;
  *)
	echo "Usage: $0 {start|stop}"
	exit 1
	;;
esac

exit 0</programlisting>

	  <important>
	    <para>Этот файл надо сделать выполняемым:</para>

	    <screen>&prompt.root; <userinput>chmod +x /usr/local/etc/rc.d/flexlm.sh</userinput></screen>

	    <para>Вы также должны заменить <replaceable>username</replaceable>
	      именем пользователя в вашей системе (но не
	      <username>root</username>).</para>
	  </important>
	</step>

	<step>
	  <para>Запустите диспетчер лицензий с помощью команды:</para>

	  <screen>&prompt.root; <userinput>/usr/local/etc/rc.d/flexlm.sh start</userinput></screen>
	</step>
      </procedure>
    </sect2>

    <sect2 id="matlab-jre">
      <title>Связь с &java; Runtime Environment</title>

      <para>Измените ссылку <application>&java;</application> Runtime
	Environment (JRE) так, чтобы он ссылалась на версию, работающую
	в &os;:</para>

      <screen>&prompt.root; <userinput>cd $MATLAB/sys/java/jre/glnx86/</userinput>
&prompt.root; <userinput>unlink jre; ln -s ./jre1.1.8 ./jre</userinput></screen>
    </sect2>

    <sect2>
      <title>Создание скрипта запуска &matlab;</title>

      <procedure>
	<step>
	  <para>Поместите следующий скрипт запуска в файл
	    <filename>/usr/local/bin/matlab</filename>:
	  </para>

	  <programlisting>#!/bin/sh
/compat/linux/bin/sh /compat/linux/usr/local/matlab/bin/matlab "$@"</programlisting>
	</step>

	<step>
	  <para>Затем выполните команду
	    <command>chmod +x /usr/local/bin/matlab</command>.</para>
	</step>
      </procedure>

      <tip>
	<para>В зависимости от версии
	  <filename role="package">emulators/linux_base</filename>, при
	  выполнении этого скрипта могут быть выданы сообщения об ошибках.
	  Чтобы избежать этого, отредактируйте файл
	  <filename>/compat/linux/usr/local/matlab/bin/matlab</filename>
	  и измените строку вида:</para>

	<programlisting>if [ `expr "$lscmd" : '.*-&gt;.*'` -ne 0 ]; then</programlisting>

	<para>(в версии 13.0.1 это строка 410) на следующую строку:</para>

	<programlisting>if test -L $newbase; then</programlisting>
      </tip>
    </sect2>

    <sect2>
      <title>Создание скрипта остановки &matlab;</title>

      <para>Следующие действия необходимы для решения проблемы с
	некорректным завершением работы &matlab;.</para>

      <procedure>
	<step>
	  <para>Создайте файл
	    <filename>$MATLAB/toolbox/local/finish.m</filename> и поместите
	    в него одну строку:</para>

	  <programlisting>! $MATLAB/bin/finish.sh</programlisting>

	  <note><para><literal>$MATLAB</literal> &mdash; литерал.</para></note>

	  <tip>
	    <para>В том же каталоге находятся файлы
	      <filename>finishsav.m</filename> и
	      <filename>finishdlg.m</filename>, которые позволяют
	      сохранять рабочее пространство перед выходом.  Если вы
	      используете любой из них, вставьте представленную выше
	      строку сразу после команды <literal>save</literal>.</para></tip>
	</step>

	<step>
	  <para>Создайте файл
	    <filename>$MATLAB/bin/finish.sh</filename>, который будет
	    содержать следующий скрипт:</para>

	  <programlisting>#!/usr/compat/linux/bin/sh
(sleep 5; killall -1 matlab_helper) &
exit 0</programlisting>
	</step>

	<step>
	  <para>Сделайте этот файл выполняемым:</para>

	  <screen>&prompt.root; <userinput>chmod +x $MATLAB/bin/finish.sh</userinput></screen>
	</step>
      </procedure>
    </sect2>

    <sect2 id="matlab-using">
      <title>Использование &matlab;</title>

      <para>В этот момент все готово для выполнения команды
	<command>matlab</command> и начала использования этой программы.</para>
    </sect2>
  </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>Ниже описан процесс установки <application>&oracle;
      8.0.5</application> и <application>&oracle; 8.0.5.1 Enterprise
      Edition</application> для Linux на систему FreeBSD.</para>
    </sect2>

    <sect2>
      <title>Установка Linux&ndash;среды</title>

      <para>Удостоверьтесь, что порты 
        <filename role='package'>emulators/linux_base</filename> и
	<filename role='package'>devel/linux_devtools</filename> установлены
	на вашей системе.  Если у вас возникнут трудности с этими портами,
	воспользуйтесь пакетами или более ранними их версиями из
	коллекции портов.</para>

      <para>Если вы хотите использовать интеллектуальный агент (intelligent
        agent), придется также установить пакет TCL от Red Hat:
	<filename>tcl-8.0.3-20.i386.rpm</filename>.  Универсальная команда
	для установки пакетов с помощью официального порта
	<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>пакет</replaceable></userinput></screen>

      <para>Установка этого <replaceable>пакета</replaceable> должна
	пройти без каких-либо ошибок.</para>
    </sect2>

    <sect2>
      <title>Создание среды &oracle;</title>

      <para>Прежде чем вы сможете установить
	<application>&oracle;</application>, необходимо настроить
	соответствующую среду.  В этом документе описано, что
	<emphasis>специально</emphasis> нужно сделать, чтобы запустить
	<application>&oracle;</application> для Linux под FreeBSD&nbsp;&ndash;
	это не пересказ официального руководства по установке
	<application>&oracle;</application>.</para>

      <sect3 id="linuxemu-kernel-tuning">
	<title>Настройка ядра</title>

	<indexterm><primary>настройка ядра</primary></indexterm>

	<para>Как описано в руководстве по установке
	  <application>&oracle;</application>, необходимо
	  установить максимальный размер совместно используемой (shared) памяти.  Не используйте
	  <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>Установите эти опции в зависимости от того, как и для чего
	  вы будете использовать <application>&oracle;</application>.</para>

	<para>Не забудьте добавить следующие строки в файл конфигурации
	  ядра:</para>

<programlisting>options SYSVSHM # совместно используемая память SysV
options SYSVSEM # семафоры SysV
options SYSVMSG # межпроцессное взаимодействие SysV</programlisting>
      </sect3>

      <sect3 id="linuxemu-oracle-account">
	
	<title>Учетная запись &oracle;</title>

	<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>Кроме стандартных переменных среды
	  <application>&oracle;</application>, таких как
	  <envar>ORACLE_HOME</envar> и <envar>ORACLE_SID</envar>, вам нужно
	  будет установить следующие переменные среды:</para>

	<informaltable frame="none" pgwide="1">
	  <tgroup cols="2">
	  <colspec colwidth="1*">
	  <colspec colwidth="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
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>

      <para>Из-за небольшой несовместимости с Linux&ndash;эмулятором, вам нужно
	будет создать подкаталог <filename>.oracle</filename> в каталоге
	<filename>/var/tmp</filename> прежде, чем можно будет начать
	установку.  Либо сделайте ее владельцем пользователя
	<username>oracle</username>, либо поставьте права на запись для всех.
	Если вы все сделали правильно, то установка
	<application>&oracle;</application> должна пройти без проблем.  Если
	какие-либо трудности все же возникли, проверьте еще раз все
	конфигурационные файлы и/или целостность дистрибутива
	<application>&oracle;</application>.  После окончания установки
	<application>&oracle;</application> примените патчи,
	описанные в следующих двух подразделах.</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>При установке <application>&oracle;</application>
	  необходимо выполнить некоторые действия от имени
	  пользователя <username>root</username>.  Они записаны в
	  скрипте командного интерпретатора <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>Если вы устанавливаете <application>&oracle;</application>
	  не с компакт&ndash;диска, можно изменить исходный файл
	  <filename>root.sh</filename>.  Он называется
	  <filename>rthd.sh</filename> и находится в каталоге
	  <filename>orainst</filename>.</para>
      </sect3>

      <sect3 id="linuxemu-patch-tcl">
	<title>Изменение genclntsh</title>

	<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
***************
*** 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>Теперь, если вы все сделали правильно, то можете использовать
	<application>&oracle;</application> так же, как и в системе
	Linux.</para>
    </sect2>
  </sect1>

  <sect1 id="sapr3">
    <sect1info>
      <authorgroup>
	<author>
	  <firstname>Holger</firstname>
	  <surname>Kipp</surname>
	  <contrib>Предоставил </contrib>
	</author>
      </authorgroup>
      <!-- holger.kipp@alogis.com -->
      <authorgroup>
	<author>
	  <firstname>Valentino</firstname>
	  <surname>Vaschetto</surname>
	  <contrib>Исходную версию преобразовал в SGML </contrib>
	</author>
      </authorgroup>
    </sect1info>

    <title>Установка &sap.r3;</title>

    <indexterm>
      <primary>приложения</primary>
      <secondary><application>SAP R/3</application></secondary>
    </indexterm>

    <para>Инсталляции систем <application>&sap;</application> на базе FreeBSD
      не будут поддерживаться службой поддержки &sap; &mdash; они
      предоставляют поддержку только на сертифицированных платформах.</para>

    <sect2 id="preface">
      <title>Предисловие</title>

      <para>Этот документ описывает возможный способ установки системы
	<application>&sap.r3;</application> с
	<application>СУБД &oracle; Database</application> на машине с ОС
	FreeBSD, включая установку FreeBSD и
	<application>&oracle;</application>. Будут описаны две
	разные конфигурации:</para>

      <itemizedlist>
	<listitem>
	  <para><application>&sap.r3; 4.6B (IDES)</application> с
	  <application>&oracle; 8.0.5</application> на FreeBSD 4.3-STABLE</para>
	</listitem>

	<listitem>
	  <para><application>&sap.r3; 4.6C</application> с
	  <application>&oracle; 8.1.7</application> на FreeBSD 4.5-STABLE</para>
	</listitem>
      </itemizedlist>

      <para>Хотя в этом документе мы пытаемся подробно описать все важные
	шаги, он не заменяет руководства по установке
	<application>&oracle;</application> и
	<application>&sap.r3;</application>.</para>

      <para>По специфическим вопросам <application>&sap;</application> и
	<application>&oracle;</application> обратитесь к документации,
	поставляемой в составе <application>&sap.r3;</application>
	Linux edition, а также к другим источникам информации об
	<application>&oracle;</application> и
	<application>&sap; OSS</application>.</para>
    </sect2>

    <sect2 id="software">
      <title>Программное обеспечение</title>

      <para>Для установки <application>&sap;</application> были использованы
	следующие диски CD-ROM:</para>

      <sect3 id="software-46b">
	<title>&sap.r3; 4.6B, &oracle; 8.0.5</title>

      <informaltable frame="none" pgwide="1">
	<tgroup cols=3>
	  <thead>
	    <row>
	      <entry>Имя</entry> <entry>Номер</entry> <entry>Описание</entry>
	    </row>
	  </thead>
	  <tbody>
	    <row>
	      <entry>KERNEL</entry> <entry>51009113</entry> <entry>SAP Kernel Oracle /
		Installation / AIX, Linux, Solaris</entry>
	    </row>

	    <row>
	      <entry>RDBMS</entry> <entry>51007558</entry> <entry>Oracle / RDBMS 8.0.5.X /
		Linux</entry>
	    </row>

	    <row>
	      <entry>EXPORT1</entry> <entry>51010208</entry> <entry>IDES / DB-Export /
		Диск 1 из 6</entry>
	    </row>

	    <row>
	      <entry>EXPORT2</entry> <entry>51010209</entry> <entry>IDES / DB-Export /
		Диск 2 из 6</entry>
	    </row>

	    <row>
	      <entry>EXPORT3</entry> <entry>51010210</entry> <entry>IDES / DB-Export /
		Диск 3 из 6</entry>
	    </row>

	    <row>
	      <entry>EXPORT4</entry> <entry>51010211</entry> <entry>IDES / DB-Export /
		Диск 4 из 6</entry>
	    </row>

	    <row>
	      <entry>EXPORT5</entry> <entry>51010212</entry> <entry>IDES / DB-Export /
		Диск 5 из 6</entry>
	    </row>

	    <row>
	      <entry>EXPORT6</entry> <entry>51010213</entry> <entry>IDES / DB-Export /
		Диск 6 из 6</entry>
	    </row>
	  </tbody>
	</tgroup>
      </informaltable>

      <para>Кроме того, мы использовали CD <application>&oracle; 8
	Server</application> (Опытная версия 8.0.5 для Linux,
	ядро версии 2.0.33), который не обязательно понадобится, и
	FreeBSD 4.3-STABLE (она вышла всего через несколько дней после 4.3
	RELEASE).</para>

      </sect3>
      <sect3 id="software-46c">
	<title>&sap.r3; 4.6C SR2, &oracle; 8.1.7</title>

	<informaltable frame="none" pgwide="1">
	  <tgroup cols=3>
	    <thead>
	      <row>
		<entry>Имя</entry> <entry>Номер</entry> <entry>Описание</entry>
	      </row>
	    </thead>

	    <tbody>
	      <row>
		<entry>KERNEL</entry> <entry>51014004</entry> <entry>SAP Kernel Oracle /
		  SAP Kernel Version 4.6D / DEC, Linux</entry>
	      </row>

	      <row>
		<entry>RDBMS</entry> <entry>51012930</entry> <entry>Oracle 8.1.7/ RDBMS /
		  Linux</entry>
	      </row>

	      <row>
		<entry>EXPORT1</entry> <entry>51013953</entry> <entry>Release 4.6C SR2 / Export
		  / Диск 1 из 4</entry>
	      </row>

	      <row>
		<entry>EXPORT1</entry> <entry>51013953</entry> <entry>Release 4.6C SR2 / Export
		  / Диск 2 из 4</entry>
	      </row>

	      <row>
		<entry>EXPORT1</entry> <entry>51013953</entry> <entry>Release 4.6C SR2 / Export
		  / Диск 3 bp 4</entry>
	      </row>

	      <row>
		<entry>EXPORT1</entry> <entry>51013953</entry> <entry>Release 4.6C SR2 / Export
		  / Диск 4 из 4</entry>
	      </row>

	      <row>
		<entry>LANG1</entry> <entry>51013954</entry> <entry>Release 4.6C SR2 /
		  Language / DE, EN, FR / Диск 1 из 3</entry>
	      </row>
	    </tbody>
	  </tgroup>
	</informaltable>

	<para>В зависимости от языков, которые необходимо установить,
	  могут потребоваться дополнительные CD. Здесь мы использовали
	  только немецкий и английский языки, поэтому потребовался только
	  первый языковой CD.  Обратите внимание, что номера всех
	  EXPORT CD идентичны.  Все три языковых CD тоже имеют один номер
	  (это отличается от нумерации CD в версии 4.6B IDES).  На момент
	  написания этого раздела (20.03.2002) установленное ПО работало
	  на FreeBSD 4.5-STABLE.</para>
      </sect3>
    </sect2>

    <sect2 id="sap-notes">
      <title>Примечания по &sap;</title>

      <para>Прочитайте следующие документы перед установкой
	<application>&sap.r3;</application> &mdash; они пригодятся в ходе
	установки:</para>

      <sect3 id="sap-notes-46b">
	<title>&sap.r3; 4.6B, &oracle; 8.0.5</title>

	<informaltable frame="none" pgwide="1">
	  <tgroup cols="2">
	    <thead>
	      <row>
		<entry>Номер</entry>
		<entry>Название</entry>
	      </row>
	    </thead>
	    <tbody>

	      <row>
		<entry>0171356</entry> <entry>SAP Software on Linux: Essential
		  Comments</entry>
	      </row>

	      <row>
		<entry>0201147</entry> <entry>INST: 4.6C R/3 Inst. on UNIX -
		  Oracle</entry>
	      </row>

	      <row>
		<entry>0373203</entry> <entry>Update / Migration Oracle 8.0.5 --&gt;
		  8.0.6/8.1.6 LINUX</entry>
	      </row>

	      <row>
		<entry>0072984</entry> <entry>Release of Digital UNIX 4.0B for
		  Oracle</entry>
	      </row>

	      <row>
		<entry>0130581</entry> <entry>R3SETUP step DIPGNTAB terminates</entry>
	      </row>

	      <row>
		<entry>0144978</entry> <entry>Your system has not been installed
		  correctly</entry>
	      </row>

	      <row>
		<entry>0162266</entry> <entry>Questions and tips for R3SETUP on Windows
		  NT / W2K</entry>
	      </row>
	    </tbody>
	  </tgroup>
	</informaltable>
      </sect3>

      <sect3 id="sap-notes-46c">
	<title>&sap.r3; 4.6C, &oracle; 8.1.7</title>

	<informaltable frame="none" pgwide="1">
	  <tgroup cols="2">
	    <thead>
	      <row>
		<entry>Номер</entry>
		<entry>Название</entry>
	      </row>
	    </thead>
	    <tbody>
	      <row>
		<entry>0015023</entry> <entry>Initializing table TCPDB (RSXP0004)
		  (EBCDIC)</entry>
	      </row>

	      <row>
		<entry>0045619</entry> <entry>R/3 with several languages or
		  typefaces</entry>
	      </row>

	      <row>
		<entry>0171356</entry> <entry>SAP Software on Linux: Essential
		  Comments</entry>
	      </row>

	      <row>
		<entry>0195603</entry> <entry>RedHat 6.1 Enterprise version:
		  Known problems</entry>
	      </row>

	      <row>
		<entry>0212876</entry> <entry>The new archiving tool SAPCAR</entry>
	      </row>

	      <row>
		<entry>0300900</entry> <entry>Linux: Released DELL Hardware</entry>
	      </row>

	      <row>
		<entry>0377187</entry> <entry>RedHat 6.2: important remarks</entry>
	      </row>

	      <row>
		<entry>0387074</entry> <entry>INST: R/3 4.6C SR2 Installation on
		  UNIX</entry>
	      </row>

	      <row>
		<entry>0387077</entry> <entry>INST: R/3 4.6C SR2 Inst. on UNIX -
		  Oracle</entry>
	      </row>

	      <row>
		<entry>0387078</entry> <entry>SAP Software on UNIX: OS Dependencies
		  4.6C SR2</entry>
	      </row>
	    </tbody>
	  </tgroup>
	</informaltable>
      </sect3>
    </sect2>

    <sect2 id="hardware-requirements">
      <title>Требования к аппаратному обеспечению</title>

      <para>Следующего оборудования достаточно для установки
	<application>&sap.r3; System</application>.  Для производственного
	использования необходима более точная оценка параметров:</para>

      <informaltable frame="none" pgwide="1">
	<tgroup cols="3">
	  <thead>
	    <row>
	      <entry>Компонент</entry>
	      <entry>4.6B</entry>
	      <entry>4.6C</entry>
	    </row>
	  </thead>
	  <tbody>
	    <row>
	      <entry>Процессор</entry>
	      <entry>2 x 800MHz &pentium; III</entry>
	      <entry>2 x 800MHz &pentium; III</entry>
	    </row>

	    <row>
	      <entry>Память</entry>
	      <entry>1GB ECC</entry>
	      <entry>2GB ECC</entry>
	    </row>

	    <row>
	      <entry>Объем дисков</entry>
	      <entry>50-60GB (IDES)</entry>
	      <entry>50-60GB (IDES)</entry>
	    </row>
	  </tbody>
	</tgroup>
      </informaltable>

      <para>Для производственного использования рекомендуются процессоры
	&xeon; с большим кешем, высокоскоростной доступ к дискам (SCSI,
	аппаратный RAID-контроллер), USV и ECC-RAM.  Большой объем дискового
	пространства связан с заранее сконфигурированной системой IDES,
	которая создает 27&nbsp;Гбайт файлов базы данных по ходу установки.
	Этого пространства также достаточно для исходных производственных
	систем и прикладных данных.</para>

      <sect3 id="hardware-46b">
	<title>&sap.r3; 4.6B, &oracle; 8.0.5</title>

      <para>Было использовано следующее стандартное оборудование:
	двухпроцессорная материнская плата с двумя процессорами
	&pentium;&nbsp;III 800&nbsp;MHz, SCSI-контроллером &adaptec; 29160
	Ultra160 (для работы с 40/80&nbsp;Гбайт стримером DLT и приводом
	CDROM), &mylex; &acceleraid; (2 канала, firmware 6.00-1-00 с
	32&nbsp;Мбайт RAM). К RAID-контроллеру &mylex; подключены два диска
	по 17&nbsp;Гбайт (зеркалированы) и четыре диска по 36&nbsp;Гбайт
	(RAID уровня 5).</para>
      </sect3>

      <sect3 id="hardware-46c">
	<title>&sap.r3; 4.6C, &oracle; 8.1.7</title>

      <para>Для этой установки был использован &dell; &poweredge; 2500:
	двухпроцессорная плата с двумя процессорами &pentium;&nbsp;III
	1000&nbsp;MHz (256&nbsp;Кбайт кеш), 2&nbsp;Гбайта PC133 ECC SDRAM,
	PERC/3 DC PCI RAID-контроллер со 128&nbsp;Мбайтами и приводом
	EIDE DVD-ROM. К RAID-контроллеру подключены два диска по
	18&nbsp;Гбайт (зеркалированы) и четыре диска по 36&nbsp;Гбайт
	(RAID уровня 5).</para>
      </sect3>
    </sect2>

    <sect2 id="installation">
      <title>Установка FreeBSD</title>

      <para>Сначала надо установить FreeBSD. Есть несколько способов сделать
	это (FreeBSD&nbsp;4.3 была установлена по FTP,
	FreeBSD&nbsp;4.5&nbsp;&mdash; непосредственно с RELEASE CD); подробнее
	см. <xref linkend="install-diff-media">.</para>

      <sect3 id="disk-layout">
	<title>Компоновка дисков</title>

	<para>Для простоты диски при установке
	  <application>&sap.r3; 46B</application> и <application>&sap.r3; 46C
	  SR2</application> использовались одинаково. Изменились только
	  имена устройств, поскольку установка выполнялась на разное
	  оборудование (<filename>/dev/da</filename> и
	  <filename>/dev/amr</filename>, соответственно, так что при
	  использовании AMI &megaraid; будут задействованы устройства
	  <filename>/dev/amr0s1a</filename> вместо <filename>/dev/da0s1a</filename>):</para>

	<informaltable frame="none" pgwide="1">
	  <tgroup cols="4">
	    <thead>
	      <row>
		<entry>Файловая система</entry>
		<entry>Размер (в блока по 1 Кбайту)</entry>
		<entry>Размер (Гбайт)</entry>
		<entry>Смонтирована в</entry>
	      </row>
	    </thead>
	    <tbody>
	      <row>
		<entry><filename>/dev/da0s1a</filename></entry>
		<entry>1.016.303</entry>
		<entry>1</entry>
		<entry><filename>/</filename></entry>
	      </row>

	      <row>
		<entry><filename>/dev/da0s1b</filename></entry>
		<entry> </entry>
		<entry>6</entry>
		<entry>swap</entry>
	      </row>

	      <row>
		<entry><filename>/dev/da0s1e</filename></entry>
		<entry>2.032.623</entry>
		<entry>2</entry>
		<entry><filename>/var</filename></entry>
	      </row>

	      <row>
		<entry><filename>/dev/da0s1f</filename></entry>
		<entry>8.205.339</entry>
		<entry>8</entry>
		<entry><filename>/usr</filename></entry>
	      </row>

	      <row>
		<entry><filename>/dev/da1s1e</filename></entry>
		<entry>45.734.361</entry>
		<entry>45</entry>
		<entry><filename>/compat/linux/oracle</filename></entry>
	      </row>

	      <row>
		<entry><filename>/dev/da1s1f</filename></entry>
		<entry>2.032.623</entry>
		<entry>2</entry>
		<entry><filename>/compat/linux/sapmnt</filename></entry>
	      </row>

	      <row>
		<entry><filename>/dev/da1s1g</filename></entry>
		<entry>2.032.623</entry>
		<entry>2</entry>
		<entry><filename>/compat/linux/usr/sap</filename></entry>
	      </row>
	    </tbody>
	  </tgroup>
	</informaltable>

	<para>Конфигурируем и инициализируем заранее два логических диска
	  с помощью ПО RAID &mylex; или PERC/3. Программы конфигурирования
	  можно запустить в ходе загрузки <acronym>BIOS</acronym>.</para>

	<para>Обратите внимание, что использованная компоновка дисков
	  немного отличается от рекомендованной &sap;, поскольку &sap;
	  рекомендует монтировать подкаталоги
	  <application>&oracle;</application> (и некоторые другие)
	  отдельно &mdash; мы решили просто создать подкаталоги.</para>
      </sect3>

      <sect3 id="makeworldandnewkernel">
	<title><command>make world</command> и новое ядро</title>

	<para>Загрузите последние исходные коды ветки -STABLE. Пересоздайте
 	  систему и ваше специализированное ядро после необходимых изменений
	  в файле конфигурации ядра.  В него надо включить
	  <link linkend="kerneltuning">параметры ядра</link>, требуемые
	  для <application>&sap.r3;</application> и
	  <application>&oracle;</application>.</para>
      </sect3>
    </sect2>

    <sect2 id="installingthelinuxenviornment">
      <title>Установка среды Linux</title>

      <sect3 id="installinglinuxbase-system">
	<title>Установка базовой системы Linux</title>

	<para>Сначала необходимо установить порт
	  <link linkend="linuxemu-libs-port">linux_base</link>
	  (от имени пользователя <username>root</username>):</para>

	<screen>&prompt.root; <userinput>cd /usr/ports/emulators/linux_base</userinput>
&prompt.root; <userinput>make install distclean</userinput></screen>

      </sect3>

      <sect3 id="installinglinuxdevelopment">
	<title>Установка среды разработки Linux</title>

	<para>Среда разработки Linux необходима, если вы хотите установить
	  <application>&oracle;</application> в ОС FreeBSD, как описано в
	  <xref linkend="linuxemu-oracle">:</para>

	<screen>&prompt.root; <userinput>cd /usr/ports/devel/linux_devtools</userinput>
&prompt.root; <userinput>make install distclean</userinput></screen>

	<para>Среда разработки Linux была установлена только для
	  <application>&sap.r3; 46B IDES</application>. Она не нужна, если
	  <application>сервер &oracle;</application> не перекомпоновывается
	  в системе FreeBSD. Именно так и происходит, если вы используете
	  tar-архив (tarball) <application>&oracle;</application> с
	  Linux-системы.</para>

      </sect3>

      <sect3 id="installingnecessaryrpms">
	<title>Установка необходимых пакетов RPM</title>
	<indexterm><primary>RPM</primary></indexterm>

	<para>Для запуска программы <command>R3SETUP</command> необходима
	  поддержка модулей PAM. В ходе первой установки
	  <application>&sap;</application> на ОС FreeBSD 4.3-STABLE мы
	  попытались установить PAM со всеми необходимыми пакетами и,
	  в конце концов, принудительно установили пакет PAM, что и
	  сработало. Для <application>&sap.r3; 4.6C SR2</application> мы
	  сразу принудительно установили PAM RPM, что тоже сработало,
	  так что похоже, что пакеты, от которых декларирована зависимость,
	  не нужны:</para>


<screen>&prompt.root; <userinput>rpm -i --ignoreos --nodeps --root /compat/linux --dbpath /var/lib/rpm \
pam-0.68-7.i386.rpm</userinput></screen>

	<para>Чтобы <application>&oracle; 8.0.5</application> мог запустить
	  интеллектуального агента, нам также пришлось установить пакет
	  RedHat Tcl <filename>tcl-8.0.5-30.i386.rpm</filename> (иначе
	  перекомпоновка в ходе установки <application>&oracle;</application>
	  не выполнится).  Есть и другие проблемы с перекомпоновкой
	  <application>&oracle;</application>, но это проблема
	  <application>&oracle;</application> на Linux, не связанная с
	  особенностями FreeBSD.</para>

      </sect3>

      <sect3 id="linuxprocandfallbackelfbrand">
	<title>Дополнительные советы</title>

	<para>Может также иметь смысл добавить <literal>linprocfs</literal>
	  в <filename>/etc/fstab</filename>; подробнее об этом см. на
	  странице справочника &man.linprocfs.5;. Еще можно установить
	  параметр <literal>kern.fallback_elf_brand=3</literal> в файле
	  <filename>/etc/sysctl.conf</filename>.</para>
      </sect3>
    </sect2>

    <sect2 id="creatingsapr3env">
      <title>Создание среды &sap.r3;</title>

      <sect3 id="filesystemsandmountpoints">
	<title>Создание необходимых файловых систем и точек монтирования</title>

	<para>Для простой установки достаточно создать следующие файловые
	  системы:</para>

	<informaltable frame="none" pgwide="1">
	  <tgroup cols="2">
	    <thead>
	      <row>
		<entry>точка монтирования</entry>
		<entry>размер в Гбайтах</entry>
	      </row>
	    </thead>
	    <tbody>
	      <row>
		<entry><filename>/compat/linux/oracle</filename></entry>
		<entry>45 GB</entry>
	      </row>

	      <row>
		<entry><filename>/compat/linux/sapmnt</filename></entry>
		<entry>2 GB</entry>
	      </row>

	      <row>
		<entry><filename>/compat/linux/usr/sap</filename></entry>
		<entry>2 GB</entry>
	      </row>
	    </tbody>
	  </tgroup>
	</informaltable>

	<para>Также необходимо создать несколько ссылок. В противном случае,
	  инсталлятор <application>&sap;</application> будет выдавать
	  сообщения об ошибках, поскольку он проверяет созданные ссылки:</para>

	<screen>&prompt.root; <userinput>ln -s /compat/linux/oracle /oracle</userinput>
&prompt.root; <userinput>ln -s /compat/linux/sapmnt /sapmnt</userinput>
&prompt.root; <userinput>ln -s /compat/linux/usr/sap /usr/sap</userinput></screen>

	<para>Возможные сообщения об ошибках в ходе установки (в данном
	  случае, для установки System <emphasis>PRD</emphasis> и
	  <application>&sap.r3; 4.6C SR2</application>):</para>

	<screen>INFO 2002-03-19 16:45:36 R3LINKS_IND_IND SyLinkCreate:200
    Checking existence of symbolic link /usr/sap/PRD/SYS/exe/dbg to
    /sapmnt/PRD/exe. Creating if it does not exist...

WARNING 2002-03-19 16:45:36 R3LINKS_IND_IND SyLinkCreate:400
    Link /usr/sap/PRD/SYS/exe/dbg exists but it points to file
    /compat/linux/sapmnt/PRD/exe instead of /sapmnt/PRD/exe. The
    program cannot go on as long as this link exists at this
    location. Move the link to another location.

ERROR 2002-03-19 16:45:36 R3LINKS_IND_IND Ins_SetupLinks:0
    can not setup link '/usr/sap/PRD/SYS/exe/dbg' with content
    '/sapmnt/PRD/exe'</screen>
      </sect3>

      <sect3 id="creatingusersanddirectories">
	<title>Создание пользователей и каталогов</title>

	<para>Для системы <application>&sap.r3;</application> необходимы два
	  пользователя и три группы.  Имена пользователей зависят от
	  идентификатора системы <application>&sap;</application> (SID),
	  который состоит из трех букв. Некоторые из этих идентификаторов
	  зарезервированы <application>&sap;</application> (например,
	  <literal>SAP</literal> и <literal>NIX</literal>. Полный
	  список см. в документации <application>&sap;</application>).
	  Для установки IDES мы использовали <literal>IDS</literal>,
	  а для установки 4.6C SR2&nbsp;&mdash; <literal>PRD</literal>, поскольку
	  эта система предназначалась для промышленного использования.
	  Поэтому нам понадобились следующие группы (идентификаторы групп
	  могут отличаться, мы просто указали наши значения, использованные
	  при установке):</para>

	<informaltable frame="none" pgwide="1">
	  <tgroup cols="3">
	  <thead>
	  <row>
	    <entry>идентификатор группы</entry>
	    <entry>имя группы</entry>
	    <entry>описание</entry>
	  </row>
	  </thead>
	  <tbody>
	  <row>
	    <entry>100</entry>
	    <entry>dba</entry>
	    <entry>Администратор базы данных</entry>
	  </row>
	  <row>
	    <entry>101</entry>
	    <entry>sapsys</entry>
	    <entry>Система &sap;</entry>
	  </row>
	  <row>
	    <entry>102</entry>
	    <entry>oper</entry>
	    <entry>Оператор базы данных</entry>
	  </row>
	  </tbody>
	  </tgroup>
	</informaltable>

	<para>Для стандартной установки
	  <application>&oracle;</application> используется только группа
	  <groupname>dba</groupname>. В качестве группы
	  <groupname>oper</groupname> используется та же группа
	  <groupname>dba</groupname> (подробнее об этом см. в
	  документации <application>&oracle;</application> и
	  <application>&sap;</application>).</para>

	<para>Нам также нужны следующие пользователи:</para>

	<informaltable frame="none" pgwide="1">
	  <tgroup cols="6">
	  <thead>
	  <row>
	    <entry>идентификатор пользователя</entry>
	    <entry>имя пользователя</entry>
	    <entry>общий вид имени</entry>
	    <entry>группа</entry>
	    <entry>дополнительные группы</entry>
	    <entry>описание</entry>
	  </row>
	  </thead>
	  <tbody>
	  <row>
	    <entry>1000</entry>
	    <entry>idsadm/prdadm</entry>
	    <entry><replaceable>sid</replaceable>adm</entry>
	    <entry>sapsys</entry>
	    <entry>oper</entry>
	    <entry>Администратор &sap;</entry>
	  </row>
	  <row>
	    <entry>1002</entry>
	    <entry>oraids/oraprd</entry>
	    <entry>ora<replaceable>sid</replaceable></entry>
	    <entry>dba</entry>
	    <entry>oper</entry>
	    <entry>Администратор &oracle;</entry>
	  </row>
	  </tbody>
	  </tgroup>
	</informaltable>

	<para>Добавление пользователей с помощью &man.adduser.8;
	  требует следующих параметров для <quote>Администратора &sap;</quote>
	  (обратите внимание на командный интерпретатор и начальный
	  каталог):</para>

	<programlisting>Name: <replaceable>sid</replaceable>adm
Password: ******
Fullname: SAP Administrator <replaceable>SID</replaceable>
Uid: 1000
Gid: 101 (sapsys)
Class:
Groups: sapsys dba
HOME: /home/<replaceable>sid</replaceable>adm
Shell: bash  (/compat/linux/bin/bash)</programlisting>

	<para>а для <quote>Администратора &oracle;</quote>:</para>

	<programlisting>Name: ora<replaceable>sid</replaceable>
Password: ******
Fullname: Oracle Administrator <replaceable>SID</replaceable>
Uid: 1002
Gid: 100 (dba)
Class:
Groups: dba
HOME: /oracle/<replaceable>sid</replaceable>
Shell: bash  (/compat/linux/bin/bash)</programlisting>

	<para>Для него также надо указать группу
	  <groupname>oper</groupname>, если вы используете обе группы,
	  <groupname>dba</groupname> и <groupname>oper</groupname>.</para>

      </sect3>

      <sect3 id="creatingdirectories">
	<title>Создание каталогов</title>

	<para>Эти каталоги обычно создаются в отдельных файловых системах.
	  Впрочем, все зависит от ваших требований.  Мы решили создавать их
	  как обычные каталоги, поскольку в любом случае они находятся на
	  одном массиве RAID 5:</para>

	<para>Сначала мы установим владельцев и права для ряда каталогов (от
	  имени пользователя <username>root</username>):</para>

	<screen>&prompt.root; <userinput>chmod 775 /oracle</userinput>
&prompt.root; <userinput>chmod 777 /sapmnt</userinput>
&prompt.root; <userinput>chown root:dba /oracle</userinput>
&prompt.root; <userinput>chown <replaceable>sid</replaceable>adm:sapsys /compat/linux/usr/sap</userinput>
&prompt.root; <userinput>chmod 775 /compat/linux/usr/sap</userinput></screen>

	<para>Затем, мы создадим каталоги от имени пользователя
	  <username>ora<replaceable>sid</replaceable></username>.  Все они
	  будут размещены в каталоге
	  <filename>/oracle/<replaceable>SID</replaceable></filename>:</para>

	<screen>&prompt.root; <userinput>su - ora<replaceable>sid</replaceable></userinput>
&prompt.root; <userinput>cd /oracle/<replaceable>SID</replaceable></userinput>
&prompt.root; <userinput>mkdir mirrlogA mirrlogB origlogA origlogB</userinput>
&prompt.root; <userinput>mkdir sapdata1 sapdata2 sapdata3 sapdata4 sapdata5 sapdata6</userinput>
&prompt.root; <userinput>mkdir saparch sapreorg</userinput>
&prompt.root; <userinput>exit</userinput></screen>

	<para>Для установки <application>&oracle; 8.1.7</application>
	  потребуется несколько дополнительных каталогов:</para>

	<screen>&prompt.root; <userinput>su - ora<replaceable>sid</replaceable></userinput>
&prompt.root; <userinput>cd /oracle</userinput>
&prompt.root; <userinput>mkdir 805_32</userinput>
&prompt.root; <userinput>mkdir client stage</userinput>
&prompt.root; <userinput>mkdir client/80x_32</userinput>
&prompt.root; <userinput>mkdir stage/817_32</userinput>
&prompt.root; <userinput>cd /oracle/<replaceable>SID</replaceable></userinput>
&prompt.root; <userinput>mkdir 817_32</userinput></screen>

	<note><para>Каталог <filename>client/80x_32</filename> должен иметь
	  точно такое имя. Не заменяйте <emphasis>x</emphasis> числом или
	  другим символом.</para></note>

	<para>На третьем шаге мы создаем каталоги от имени пользователя
	  <username><replaceable>sid</replaceable>adm</username>:</para>

	<screen>&prompt.root; <userinput>su - <replaceable>sid</replaceable>adm</userinput>
&prompt.root; <userinput>cd /usr/sap</userinput>
&prompt.root; <userinput>mkdir <replaceable>SID</replaceable></userinput>
&prompt.root; <userinput>mkdir trans</userinput>
&prompt.root; <userinput>exit</userinput></screen>
      </sect3>

      <sect3 id="entriesinslashetcslashservices">
	<title>Записи в файле <filename>/etc/services</filename></title>

	<para>Для системы <application>&sap.r3;</application> необходим ряд
	  записей в файле <filename>/etc/services</filename>, которые не
	  будут правильно созданы при установке под FreeBSD.  Пожалуйста,
	  добавьте следующие записи (потребуются, по крайней мере, записи,
	  соответствующие номеру экземпляра &mdash; в данном случае,
	  <literal>00</literal>.  Не повредит добавить все записи, от
	  <literal>00</literal> до <literal>99</literal>, для
	  <literal>dp</literal>, <literal>gw</literal>, <literal>sp</literal>
	  и <literal>ms</literal>).  Если вы собираетесь использовать
	  <application>SAProuter</application> или вам необходим доступ к
	  <application>&sap;</application> OSS, потребуется также запись для
	  <literal>99</literal>, поскольку порт 3299 обычно используется
	  для процесса <application>SAProuter</application> в целевой
	  системе:</para>

	<programlisting>
sapdp00  3200/tcp # SAP Dispatcher.      3200 + Instance-Number
sapgw00  3300/tcp # SAP Gateway.         3300 + Instance-Number
sapsp00  3400/tcp #                      3400 + Instance-Number
sapms00  3500/tcp #                      3500 + Instance-Number
sapms<replaceable>SID</replaceable> 3600/tcp # SAP Message Server.  3600 + Instance-Number
sapgw00s   4800/tcp # SAP Secure Gateway   4800 + Instance-Number</programlisting>
      </sect3>

      <sect3 id="necessarylocales">
	<title>Необходимые локали</title>
	<indexterm><primary>локаль</primary></indexterm>

	<para>Системе <application>&sap;</application> нужны, по крайней
	  мере, две локали, не входящие в стандартную установку RedHat.
	  &sap; предлагает необходимые пакеты RPM для загрузки со своего
	  FTP-сервера (который доступен только для клиентов с доступом к
	  OSS).  См. список необходимых пакетов RPM в заметке
	  0171356.</para>

	<para>Можно также просто создать соответствующие ссылки
	  (например, с <emphasis>de_DE</emphasis> и
	  <emphasis>en_US</emphasis>), но мы не рекомендуем это для
	  производственной системы (хотя это и сработало для системы
	  IDES безо всяких проблем).  Необходимы следующие локали:</para>

	<programlisting>de_DE.ISO-8859-1
en_US.ISO-8859-1</programlisting>

	<para>Создайте ссылки следующим образом:</para>

	<screen>&prompt.root; <userinput>cd /compat/linux/usr/share/locale</userinput>
&prompt.root; <userinput>ln -s de_DE de_DE.ISO-8859-1</userinput>
&prompt.root; <userinput>ln -s en_US en_US.ISO-8859-1</userinput></screen>

	<para>Если их не будет, в ходе установки возникнет ряд проблем.
	  Если их просто проигнорировать (установив <literal>STATUS</literal>
	  для соответствующих шагов равным <literal>OK</literal> в файле
	  <filename>CENTRDB.R3S</filename>), нельзя будет зарегистрироваться
	  в системе <application>&sap;</application> без дополнительных
	  усилий.</para>
      </sect3>

      <sect3 id="kerneltuning">
	<title>Настройка ядра</title>
	<indexterm><primary>настройка ядра</primary></indexterm>

	<para>Системам <application>&sap.r3;</application> надо много
	  ресурсов.  Поэтому мы добавили следующие параметры в файл
	  конфигурации ядра:</para>

	<programlisting># Для пожирателей памяти (SAP и Oracle):
options MAXDSIZ="(1024*1024*1024)"
options DFLDSIZ="(1024*1024*1024)"
# Необходимые опции System V.
options SYSVSHM #совместно используемая память в стиле SYSV
options SHMMAXPGS=262144 #макс. количество страниц совместно используемой
#options SHMMAXPGS=393216 #use this for the 46C inst.parameters
options SHMMNI=256 #макс. количество идентификаторов совместно используемой
options SHMSEG=100 #макс. количество сегментов разд. памяти на процесс
options SYSVMSG #очереди сообщений в стиле SYSV
options MSGSEG=32767 #макс. количество сегментов сообщений в системе
options MSGSSZ=32 #размер сегмента сообщений. ДОЛЖЕН быть степенью 2
options MSGMNB=65535 #макс. символов на очередь сообщений
options MSGTQL=2046 #макс. количество сообщений в системе
options SYSVSEM #семафоры в стиле SYSV
options SEMMNU=256 #количество структур UNDO семафоров
options SEMMNS=1024 #количество семафоров в системе
options SEMMNI=520 #количество идентификаторов семафоров
options SEMUME=100       #количество ключей UNDO</programlisting>

	<para>Минимальные значения указаны в документации, поставляемой
	  вместе с &sap;.  Поскольку описания для Linux нет, дополнительную
	  информацию см. в разделе HP-UX (32-bit). Поскольку в системе, на
	  которую устанавливалась версия 4.6C SR2, оперативной памяти больше, сегменты совместно используемой можно сделать больше как для
	  <application>&sap;</application>, так и для
	  <application>&oracle;</application>, поэтому задайте большее
	  количество страниц совместно используемой памяти.</para>

	<note><para>При стандартной установке FreeBSD&nbsp;4.5 на &i386;,
	  задайте значения <literal>MAXDSIZ</literal> и <literal>DFLDSIZ</literal> не более 1&nbsp;Гбайта. В противном
	  случае могут выдаваться странные ошибки вроде
	  <errorname>ORA-27102: out of memory</errorname> и
	  <errorname>Linux Error: 12: Cannot allocate
	  memory</errorname>.</para></note>
      </sect3>
    </sect2>

    <sect2 id="installingsapr3">
      <title>Установка &sap.r3;</title>

      <sect3 id="preparingsapcdroms">
	<title>Подготовка дисков CDROM &sap;</title>

	<para>В ходе установки придется монтировать и демонтировать
	  много дисков CDROM.  При наличии достаточного количества приводов
	  CDROM, можно смонтировать их все.  Мы же решили скопировать
	  содержимое дисков CDROM в соответствующие каталоги:</para>
	<programlisting>/oracle/<replaceable>SID</replaceable>/sapreorg/<replaceable>имя_cd</replaceable></programlisting>

	<para>где <replaceable>имя_cd</replaceable>&nbsp;&mdash; одно из следующих
	  <filename>KERNEL</filename>,
	  <filename>RDBMS</filename>, <filename>EXPORT1</filename>,
	  <filename>EXPORT2</filename>, <filename>EXPORT3</filename>,
	  <filename>EXPORT4</filename>, <filename>EXPORT5</filename> и
	  <filename>EXPORT6</filename> для установки 4.6B/IDES, и
	  <filename>KERNEL</filename>, <filename>RDBMS</filename>,
	  <filename>DISK1</filename>, <filename>DISK2</filename>,
	  <filename>DISK3</filename>, <filename>DISK4</filename> и
	  <filename>LANG</filename> для установки 4.6C SR2.  Все имена
	  файлов на смонтированных дисках должны быть в верхнем регистре,
	  в противном случае, используйте при монтировании опцию
	  <option>-g</option>.  Поэтому используйте следующие команды:</para>

	<screen>&prompt.root; <userinput>mount_cd9660 -g /dev/cd0a /mnt</userinput>
&prompt.root; <userinput>cp -R /mnt/* /oracle/<replaceable>SID</replaceable>/sapreorg/<replaceable>имя_cd</replaceable></userinput>
&prompt.root; <userinput>umount /mnt</userinput></screen>
      </sect3>

      <sect3 id="runningtheinstall-script">
	<title>Запуск скрипта установки</title>

	<para>Сначала надо подготовить каталог <filename class="directory">install</filename>:</para>

	<screen>&prompt.root; <userinput>cd /oracle/<replaceable>SID</replaceable>/sapreorg</userinput>
&prompt.root; <userinput>mkdir install</userinput>
&prompt.root; <userinput>cd install</userinput></screen>

	<para>Затем запускается скрипт установки, который скопирует почти
	  все необходимые файлы в каталог
	  <filename class="directory">install</filename>:</para>

	<screen>&prompt.root; <userinput>/oracle/<replaceable>SID</replaceable>/sapreorg/KERNEL/UNIX/INSTTOOL.SH</userinput></screen>

	<para>Дистрибутив IDES (4.6B) включает полностью настроенную
	  демонстрационную систему &sap.r3;, поэтому он включает шесть
	  дисков EXPORT CD, а не три.  В этот момент шаблон установки
	  <filename>CENTRDB.R3S</filename> предназначен для установки
	  стандартного центрального экземпляра
	  (<application>&r3;</application> и базы данных), а не для
	  установки центрального экземпляра IDES, поэтому необходимо
	  скопировать соответствующий файл <filename>CENTRDB.R3S</filename>
	  из каталога <filename class="directory">EXPORT1</filename>, иначе
	  команда <command>R3SETUP</command> запросит только три диска
	  EXPORT CDs.</para>

	<para>Более новый релиз <application>&sap; 4.6C SR2</application>
	  включает четыре диска EXPORT CD.  Шаги установки определяет файл
	  параметров <filename>CENTRAL.R3S</filename>. В отличие от
	  прежних релизов, больше нет отдельных шаблонов установки для
	  центрального экземпляра с базой данных или без нее.
	  <application>&sap;</application> использует отдельный шаблон для
	  установки базы данных.  Для перезапуска установки в дальнейшем,
	  однако, достаточно перезапустить исходный файл.</para>

	<para>В ходе установки и после нее <application>&sap;</application>
	  требует, чтобы команда <command>hostname</command> возвращала
	  только имя компьютера, не уточнённое именем домена.  Поэтому либо
	  задайте имя хоста в соответствии с этим требованием, либо
	  настройте псевдоним с помощью команды
	  <command>alias hostname='hostname -s'</command> для пользователей
	  <username>ora<replaceable>sid</replaceable></username> и
	  <username><replaceable>sid</replaceable>adm</username> (и для
	  пользователя <username>root</username>, про крайней мере,
	  в ходе шагов по установке, выполняемых от имени
	  <username>root</username>). Можно также изменить
	  файлы <filename>.profile</filename> и <filename>.login</filename>
	  для обоих пользователей, которые создаются в ходе установки
	  <application>&sap;</application>.</para>
      </sect3>

      <sect3 id="startr3setup-46B">
	<title>Запуск <command>R3SETUP</command> 4.6B</title>

	<para>Проверьте, что переменная среды <envar>LD_LIBRARY_PATH</envar>
	  установлена правильно:</para>

	<screen>&prompt.root; <userinput>export LD_LIBRARY_PATH=/oracle/IDS/lib:/sapmnt/IDS/exe:/oracle/805_32/lib</userinput></screen>

	<para>Выполните команду <command>R3SETUP</command> от имени
	  пользователя <username>root</username> из каталога установки:</para>

	<screen>&prompt.root; <userinput>cd /oracle/IDS/sapreorg/install</userinput>
&prompt.root; <userinput>./R3SETUP -f CENTRDB.R3S</userinput></screen>

	<para>Скрипт затем задает ряд вопросов (стандартные ответы даны
	  в скобках, а затем представлены реальные ответы):</para>

	<informaltable frame="none" pgwide="1">
	  <tgroup cols="3">
	  <thead>
	  <row>
	    <entry>Вопрос</entry>
	    <entry>Стандартное значение</entry>
	    <entry>Ответ</entry>
	  </row>
	  </thead>
	  <tbody>
	  <row>
	    <entry>Enter SAP System ID</entry>
	    <entry>[C11]</entry>
	    <entry>IDS<keycap>Enter</keycap></entry>
	  </row>
	  <row>
	    <entry>Enter SAP Instance Number</entry>
	    <entry>[00]</entry>
	    <entry><keycap>Enter</keycap></entry>
	  </row>
	  <row>
	    <entry>Enter SAPMOUNT Directory</entry>
	    <entry>[/sapmnt]</entry>
	    <entry><keycap>Enter</keycap></entry>
	  </row>
	  <row>
	    <entry>Enter name of SAP central host</entry>
	    <entry>[troubadix.domain.de]</entry>
	    <entry><keycap>Enter</keycap></entry>
	  </row>
	  <row>
	    <entry>Enter name of SAP db host</entry>
	    <entry>[troubadix]</entry>
	    <entry><keycap>Enter</keycap></entry>
	  </row>
	  <row>
	    <entry>Select character set</entry>
	    <entry>[1] (WE8DEC)</entry>
	    <entry><keycap>Enter</keycap></entry>
	  </row>
	  <row>
	    <entry>Enter Oracle server version (1) Oracle 8.0.5, (2) Oracle 8.0.6, (3) Oracle 8.1.5, (4) Oracle 8.1.6</entry>
	    <entry> </entry>
	    <entry>1<keycap>Enter</keycap></entry>
	  </row>
	  <row>
	    <entry>Extract Oracle Client archive</entry>
	    <entry>[1] (Yes, extract)</entry>
	    <entry><keycap>Enter</keycap></entry>
	  </row>
	  <row>
	    <entry>Enter path to KERNEL CD</entry>
	    <entry>[/sapcd]</entry>
	    <entry>/oracle/IDS/sapreorg/KERNEL</entry>
	  </row>
	  <row>
	    <entry>Enter path to RDBMS CD</entry>
	    <entry>[/sapcd]</entry>
	    <entry>/oracle/IDS/sapreorg/RDBMS</entry>
	  </row>
	  <row>
	    <entry>Enter path to EXPORT1 CD</entry>
	    <entry>[/sapcd]</entry>
	    <entry>/oracle/IDS/sapreorg/EXPORT1</entry>
	  </row>
	  <row>
	    <entry>Directory to copy EXPORT1 CD</entry>
	    <entry>[/oracle/IDS/sapreorg/CD4_DIR]</entry>
	    <entry><keycap>Enter</keycap></entry>
	  </row>
	  <row>
	    <entry>Enter path to EXPORT2 CD</entry>
	    <entry>[/sapcd]</entry>
	    <entry>/oracle/IDS/sapreorg/EXPORT2</entry>
	  </row>
	  <row>
	    <entry>Directory to copy EXPORT2 CD</entry>
	    <entry>[/oracle/IDS/sapreorg/CD5_DIR]</entry>
	    <entry><keycap>Enter</keycap></entry>
	  </row>
	  <row>
	    <entry>Enter path to EXPORT3 CD</entry>
	    <entry>[/sapcd]</entry>
	    <entry>/oracle/IDS/sapreorg/EXPORT3</entry>
	  </row>
	  <row>
	    <entry>Directory to copy EXPORT3 CD</entry>
	    <entry>[/oracle/IDS/sapreorg/CD6_DIR]</entry>
	    <entry><keycap>Enter</keycap></entry>
	  </row>
	  <row>
	    <entry>Enter path to EXPORT4 CD</entry>
	    <entry>[/sapcd]</entry>
	    <entry>/oracle/IDS/sapreorg/EXPORT4</entry>
	  </row>
	  <row>
	    <entry>Directory to copy EXPORT4 CD</entry>
	    <entry>[/oracle/IDS/sapreorg/CD7_DIR]</entry>
	    <entry><keycap>Enter</keycap></entry>
	  </row>
	  <row>
	    <entry>Enter path to EXPORT5 CD</entry>
	    <entry>[/sapcd]</entry>
	    <entry>/oracle/IDS/sapreorg/EXPORT5</entry>
	  </row>
	  <row>
	    <entry>Directory to copy EXPORT5 CD</entry>
	    <entry>[/oracle/IDS/sapreorg/CD8_DIR]</entry>
	    <entry><keycap>Enter</keycap></entry>
	  </row>
	  <row>
	    <entry>Enter path to EXPORT6 CD</entry>
	    <entry>[/sapcd]</entry>
	    <entry>/oracle/IDS/sapreorg/EXPORT6</entry>
	  </row>
	  <row>
	    <entry>Directory to copy EXPORT6 CD</entry>
	    <entry>[/oracle/IDS/sapreorg/CD9_DIR]</entry>
	    <entry><keycap>Enter</keycap></entry>
	  </row>
	  <row>
	    <entry>Enter amount of RAM for SAP + DB</entry>
	    <entry> </entry>
	    <entry>850<keycap>Enter</keycap> (in Megabytes)</entry>
	  </row>
	  <row>
	    <entry>Service Entry Message Server</entry>
	    <entry>[3600]</entry>
	    <entry><keycap>Enter</keycap></entry>
	  </row>
	  <row>
	    <entry>Enter Group-ID of sapsys</entry>
	    <entry>[101]</entry>
	    <entry><keycap>Enter</keycap></entry>
	  </row>
	  <row>
	    <entry>Enter Group-ID of oper</entry>
	    <entry>[102]</entry>
	    <entry><keycap>Enter</keycap></entry>
	  </row>
	  <row>
	    <entry>Enter Group-ID of dba</entry>
	    <entry>[100]</entry>
	    <entry><keycap>Enter</keycap></entry>
	  </row>
	  <row>
	    <entry>Enter User-ID of <replaceable>sid</replaceable>adm</entry>
	    <entry>[1000]</entry>
	    <entry><keycap>Enter</keycap></entry>
	  </row>
	  <row>
	    <entry>Enter User-ID of ora<replaceable>sid</replaceable></entry>
	    <entry>[1002]</entry>
	    <entry><keycap>Enter</keycap></entry>
	  </row>
	  <row>
	    <entry>Number of parallel procs</entry>
	    <entry>[2]</entry>
	    <entry><keycap>Enter</keycap></entry>
	  </row>
	  </tbody>
	  </tgroup>
	</informaltable>

	<para>Если вы не скопировали диски в разные каталоги,
	  инсталлятор <application>&sap;</application> не сможет найти
	  необходимые CD (идентифицируемые файлом
	  <filename>LABEL.ASC</filename> на диске) и попросит затем
	  вставить и смонтировать CD, и подтвердить или ввести точку
	  его монтирования.</para>

	<para>Файл <filename>CENTRDB.R3S</filename> может содержать
	  ошибки.  В нашем случае, он снова запросил EXPORT4 CD, но
	  указал корректный ключ (6_LOCATION, затем 7_LOCATION и т.д.),
	  так что, можно просто продолжать вводить корректные
	  значения.</para>

	<para>За исключением нескольких упомянутых ниже проблем, все
	  должно идти нормально до момента, когда придется устанавливать
	  программное обеспечение для работы с базой данных &oracle;.</para>
      </sect3>

      <sect3 id="startr3setup-46C">
	<title>Запуск <command>R3SETUP</command> 4.6C SR2</title>

	<para>Проверьте, что переменная среды <envar>LD_LIBRARY_PATH</envar>
	  установлена правильно.  Это значение отличается от использованного
	  при установке версии 4.6B с
	  <application>&oracle; 8.0.5</application>:</para>

	<screen>&prompt.root; <userinput>export LD_LIBRARY_PATH=/sapmnt/PRD/exe:/oracle/PRD/817_32/lib</userinput></screen>

	<para>Выполните команду <command>R3SETUP</command> от имени
	  пользователя <username>root</username> из каталога установки:</para>

	<screen>&prompt.root; <userinput>cd /oracle/PRD/sapreorg/install</userinput>
&prompt.root; <userinput>./R3SETUP -f CENTRAL.R3S</userinput></screen>

	<para>Скрипт затем задаст ряд вопросов (стандартные значения
	  даны в скобках, а затем идут реальные ответы):</para>

	<informaltable frame="none" pgwide="1">
	  <tgroup cols="3">
	  <thead>
	  <row>
	    <entry>Вопрос</entry>
	    <entry>Стандартное значение</entry>
	    <entry>Ответ</entry>
	  </row>
	  </thead>
	  <tbody>
	  <row>
	    <entry>Enter SAP System ID</entry>
	    <entry>[C11]</entry>
	    <entry>PRD<keycap>Enter</keycap></entry>
	  </row>
	  <row>
	    <entry>Enter SAP Instance Number</entry>
	    <entry>[00]</entry>
	    <entry><keycap>Enter</keycap></entry>
	  </row>
	  <row>
	    <entry>Enter SAPMOUNT Directory</entry>
	    <entry>[/sapmnt]</entry>
	    <entry><keycap>Enter</keycap></entry>
	  </row>
	  <row>
	    <entry>Enter name of SAP central host</entry>
	    <entry>[majestix]</entry>
	    <entry><keycap>Enter</keycap></entry>
	  </row>
	  <row>
	    <entry>Enter Database System ID</entry>
	    <entry>[PRD]</entry>
	    <entry>PRD<keycap>Enter</keycap></entry>
	  </row>
	  <row>
	    <entry>Enter name of SAP db host</entry>
	    <entry>[majestix]</entry>
	    <entry><keycap>Enter</keycap></entry>
	  </row>
	  <row>
	    <entry>Select character set</entry>
	    <entry>[1] (WE8DEC)</entry>
	    <entry><keycap>Enter</keycap></entry>
	  </row>
	  <row>
	    <entry>Enter Oracle server version (2) Oracle 8.1.7</entry>
	    <entry> </entry>
	    <entry>2<keycap>Enter</keycap></entry>
	  </row>
	  <row>
	    <entry>Extract Oracle Client archive</entry>
	    <entry>[1] (Yes, extract)</entry>
	    <entry><keycap>Enter</keycap></entry>
	  </row>
	  <row>
	    <entry>Enter path to KERNEL CD</entry>
	    <entry>[/sapcd]</entry>
	    <entry>/oracle/PRD/sapreorg/KERNEL</entry>
	  </row>
	  <row>
	    <entry>Enter amount of RAM for SAP + DB</entry>
	    <entry>2044</entry>
	    <entry>1800<keycap>Enter</keycap> (in Megabytes)</entry>
	  </row>
	  <row>
	    <entry>Service Entry Message Server</entry>
	    <entry>[3600]</entry>
	    <entry><keycap>Enter</keycap></entry>
	  </row>
	  <row>
	    <entry>Enter Group-ID of sapsys</entry>
	    <entry>[100]</entry>
	    <entry><keycap>Enter</keycap></entry>
	  </row>
	  <row>
	    <entry>Enter Group-ID of oper</entry>
	    <entry>[101]</entry>
	    <entry><keycap>Enter</keycap></entry>
	  </row>
	  <row>
	    <entry>Enter Group-ID of dba</entry>
	    <entry>[102]</entry>
	    <entry><keycap>Enter</keycap></entry>
	  </row>
	  <row>
	    <entry>Enter User-ID of <username>oraprd</username></entry>
	    <entry>[1002]</entry>
	    <entry><keycap>Enter</keycap></entry>
	  </row>
	  <row>
	    <entry>Enter User-ID of <username>prdadm</username></entry>
	    <entry>[1000]</entry>
	    <entry><keycap>Enter</keycap></entry>
	  </row>
	  <row>
	    <entry>LDAP support</entry>
	    <entry> </entry>
	    <entry>3<keycap>Enter</keycap> (no support)</entry>
	  </row>
	  <row>
	    <entry>Installation step completed</entry>
	    <entry>[1] (continue)</entry>
	    <entry><keycap>Enter</keycap></entry>
	  </row>
	  <row>
	    <entry>Choose installation service</entry>
	    <entry>[1] (DB inst,file)</entry>
	    <entry><keycap>Enter</keycap></entry>
	  </row>
	  </tbody>
	  </tgroup>
	</informaltable>

	<para>Пока создание пользователей дает сообщение об ошибке при
	  установке на стадиях OSUSERDBSID_IND_ORA (создание пользователя
	  <username>ora<replaceable>sid</replaceable></username>) и
	  OSUSERSIDADM_IND_ORA (создание пользователя
	  <username><replaceable>sid</replaceable>adm</username>).</para>

	<para>За исключением некоторых упомянутых далее проблем, все
	  должно идти нормально до момента, когда придется устанавливать
	  программное обеспечение для работы с базой данных &oracle;.</para>
      </sect3>
    </sect2>

    <sect2 id="installingoracle805">
      <title>Установка &oracle; 8.0.5</title>

      <para>Описания возможных проблем с Linux и <application>Сервером
	&oracle;</application> см. в соответствующих файлах
	&sap; Notes и &oracle; <filename>Readme</filename>. Большинство,
	если не все проблемы, связаны с несовместимыми библиотеками.</para>

      <para>Подробнее об установке <application>&oracle;</application>
	см. в разделе <link linkend="linuxemu-oracle">Установка
	&oracle;</link>.</para>


      <sect3 id="installingtheoracle805withorainst">
	<title>Установка &oracle; 8.0.5 с помощью <command>orainst</command></title>

	<para>Если надо использовать <application>&oracle;
	  8.0.5</application>, для успешной перекомпоновки понадобится
	  несколько дополнительных библиотек, поскольку
	  <application>&oracle; 8.0.5</application> был скомпонован со
	  старой версией glibc (RedHat 6.0), но уже RedHat 6.1 использует
	  новую библиотеку glibc. Так что, для успешной перекомпоновки
	  нужно установить следующие дополнительные пакеты:</para>

	<para><filename>compat-libs-5.2-2.i386.rpm</filename></para>
	<para><filename>compat-glibc-5.2-2.0.7.2.i386.rpm</filename></para>
	<para><filename>compat-egcs-5.2-1.0.3a.1.i386.rpm</filename></para>
	<para><filename>compat-egcs-c++-5.2-1.0.3a.1.i386.rpm</filename></para>        <para><filename>compat-binutils-5.2-2.9.1.0.23.1.i386.rpm</filename></para>

	<para>Дополнительную информацию см. в файлах &sap; Notes или &oracle;
	  <filename>Readme</filename>.  Если установить эти пакеты не
	  представляется возможным (на момент установки у нас не было
	  времени, чтобы это проверить), можно использовать исходные двоичные
	  модули или перекомпонованные двоичные модули с исходной системы
	  RedHat.</para>

	<para>Для компиляции интеллектуального агента должен быть
	  установлен пакет RedHat Tcl.  Если вы не можете найти пакет
	  <filename>tcl-8.0.3-20.i386.rpm</filename>, подойдет и более
	  новый, вроде <filename>tcl-8.0.5-30.i386.rpm</filename> для
	  RedHat 6.1.</para>

	<para>За исключением перекомпоновки, установка выполняется
	  просто:</para>

	<screen>&prompt.root; <userinput>su - oraids</userinput>
&prompt.root; <userinput>export TERM=xterm</userinput>
&prompt.root; <userinput>export ORACLE_TERM=xterm</userinput>
&prompt.root; <userinput>export ORACLE_HOME=/oracle/IDS</userinput>
&prompt.root; <userinput>cd $ORACLE_HOME/orainst_sap</userinput>
&prompt.root; <userinput>./orainst</userinput></screen>

	<para>Нажимайте на всех экранах клавишу <keycap>Enter</keycap>,
	  пока программное обеспечение не будет установлено, убрав только
	  пометку выбора с <emphasis>&oracle; On-Line Text Viewer</emphasis>,
	  поскольку этого компонента для Linux сейчас нет.
	  <application>&oracle;</application> затем захочет
	  перекомпоновать модули с помощью
	  <command>i386-glibc20-linux-gcc</command>
	  вместо имеющихся <command>gcc</command>, <command>egcs</command>
	  или <command>i386-redhat-linux-gcc</command>.</para>

	<para>Из-за нехватки времени мы решили использовать двоичные
	  модули из версии <application>&oracle; 8.0.5
	  PreProduction</application> после того, как первая попытка
	  заставить работать версию с RDBMS CD провалилась, &mdash; попытки
	  найти и загрузить требуемые пакеты RPM нам показались настоящим
	  кошмаром.</para>

      </sect3>

      <sect3 id="installingtheoracle805preproduction">
	<title>Установка &oracle; 8.0.5 Pre-production Release для
	  Linux (ядро 2.0.33)</title>

	<para>Эту установку выполнить очень легко. Монтируем CD, запускаем
	  инсталлятор.  Затем он запрашивает местонахождение начального
	  каталога &oracle; и копирует туда двоичные модули.  Мы, однако,
	  не удаляли остатки прежних попыток установить RDBMS.</para>

	<para>В конечном итоге, базу данных <application>&oracle;</application>
	  удалось запустить без проблем.</para>
      </sect3>
    </sect2>

    <sect2 id="installingoracle817">
      <title>Установка tar-архива &oracle; 8.1.7 для Linux</title>
      <para>Создайте tar-архив <filename>oracle81732.tgz</filename>
	каталога установки на Linux-системе и разархивируйте его в
	каталог <filename>/oracle/<replaceable>SID</replaceable>/817_32/</filename>.</para>
    </sect2>

    <sect2 id="continuewithsapr4installation">
      <title>Продолжение установки &sap.r3;</title>

      <para>Сначала проверьте настройку среды для пользователей
	<username>idsamd</username> (<replaceable>sid</replaceable>adm) и
	<username>oraids</username> (ora<replaceable>sid</replaceable>). У
	них обоих должны теперь быть файлы <filename>.profile</filename>,
	<filename>.login</filename> и <filename>.cshrc</filename>,
	использующие <command>hostname</command>. Если имя хоста в системе
	полностью уточнено, надо заменить <command>hostname</command>
	командой <command>hostname -s</command> во всех трех файлах.</para>

      <sect3 id="databaseload">
	<title>Загрузка базы данных</title>

	<para>Потом команду <command>R3SETUP</command> можно либо
	  перезапустить, либо продолжить (в зависимости от того, была
	  ли завершена ее работа).  <command>R3SETUP</command> затем
	  создает табличные пространства и загружает данные (для 46B
	  IDES&nbsp;&mdash; с дисков от EXPORT1 до EXPORT6, для 46C&nbsp;&mdash;
	  с дисков от DISK1 до DISK4) в базу данных с помощью утилиты
	  <command>R3load</command>.</para>

	<para>После завершения загрузки базы данных (это может занять
	  несколько часов), будет запрошено несколько паролей.  Для тестовых
	  установок можно использовать хорошо известные стандартные
	  пароли (но если защита важна&nbsp;&mdash; используйте другие!):</para>

	<informaltable frame="none" pgwide="1">
	  <tgroup cols="2">
	  <thead>
	  <row>
	    <entry>Вопрос</entry>
	    <entry>Ответ</entry>
	  </row>
	  </thead>
	  <tbody>
	  <row>
	    <entry>Enter Password for sapr3</entry>
	    <entry>sap<keycap>Enter</keycap></entry>
	  </row>
	  <row>
	    <entry>Confirum Password for sapr3</entry>
	    <entry>sap<keycap>Enter</keycap></entry>
	  </row>
	  <row>
	    <entry>Enter Password for sys</entry>
	    <entry>change_on_install<keycap>Enter</keycap></entry>
	  </row>
	  <row>
	    <entry>Confirm Password for sys</entry>
	    <entry>change_on_install<keycap>Enter</keycap></entry>
	  </row>
	  <row>
	    <entry>Enter Password for system</entry>
	    <entry>manager<keycap>Enter</keycap></entry>
	  </row>
	  <row>
	    <entry>Confirm Password for system</entry>
	    <entry>manager<keycap>Enter</keycap></entry>
	  </row>
	  </tbody>
	  </tgroup>
	</informaltable>

	<para>Мы столкнулись с несколькими проблемами с
	  <command>dipgntab</command> при установке 4.6B.</para>
      </sect3>

      <sect3 id="listener">
	<title>Процесс прослушивания</title>

	<para>Запустите процесс прослушивания
	  (<application>&oracle;</application> Listener) от имени
	  пользователя <username>ora<replaceable>sid</replaceable></username>
	  следующим образом:</para>

	<screen>&prompt.user; <userinput>umask 0; lsnrctl start</userinput></screen>

	<para>В противном случае, вы можете получить сообщение об
	  ошибке <errorcode>ORA-12546</errorcode>, поскольку у сокетов
	  будут неправильные права доступа. См. &sap; Note 072984.</para>
      </sect3>

      <sect3 id="mnlstables">
	<title>Обновление таблиц MNLS</title>
	<para>Если вы планируете использовать в системе
	  <application>&sap;</application> языки, для которых не
	  подходит кодировка Latin-1, придется изменить таблицы
	  Multi National Language Support. Эта процедура описана в
	  &sap; OSS Notes 15023 и 45619. Если же нет, можете пропустить
	  этот вопрос в ходе установки <application>&sap;</application>.</para>

	<note><para>Если вам не нужна поддержка MNLS, все равно необходимо
	  проверить таблицу TCPDB и инициализировать ее, если это еще не
	  было сделано. Дополнительную информацию см. в &sap; Note 0015023
	  и 0045619.</para></note>
      </sect3>
    </sect2>

    <sect2 id="postinstallationsteps">
      <title>Шаги после установки</title>

      <sect3 id="requestsapr3licensekey">
	<title>Запрос лицензионного ключа &sap.r3;</title>

	<para>Вы должны запросить ваш лицензионный ключ
	  <application>&sap.r3;</application>. Это необходимо, поскольку
	  временная лицензия, использованная в ходе установки, действительна
	  только четыре недели. Сначала получите ключ оборудования.
	  Зарегистрируйтесь как пользователь <username>idsadm</username>
	  и вызовите команду <command>saplicense</command>:</para>

	<screen>&prompt.root; <userinput>/sapmnt/IDS/exe/saplicense -get</userinput></screen>

	<para>При вызове команды <command>saplicense</command> без
	  параметров будет выдан список опций.  После получения
	  лицензионного ключа, его можно установить с помощью
	  команды:</para>

	<screen>&prompt.root; <userinput>/sapmnt/IDS/exe/saplicense -install</userinput></screen>

	<para>Затем вас попросят ввести следующие значения:</para>

	<programlisting>SAP SYSTEM ID   = <replaceable>SID, 3 символа</replaceable>
CUSTOMER KEY    = <replaceable>ключ оборудования, 11 символов</replaceable>
INSTALLATION NO = <replaceable>установка, 10 цифр</replaceable>
EXPIRATION DATE = <replaceable>yyyymmdd, обычно - "99991231"</replaceable>
LICENSE KEY     = <replaceable>лицензионный ключ, 24 символа</replaceable></programlisting>
      </sect3>

      <sect3 id="creatingusers">
	<title>Создание пользователей</title>

	<para>Создайте пользователя в клиенте 000 (некоторые задачи
	  обязательно надо выполнять из клиента 000, от имени пользователя,
	  отличающегося от <username>sap*</username> и
	  <username>ddic</username>).  В качестве имени пользователя мы
	  обычно выбираем <username>wartung</username> (или
	  <username>service</username>, по английски).  Требуются профили
	  <literal>sap_new</literal> и <literal>sap_all</literal>. Для
	  дополнительной защиты надо изменить пароли стандартных
	  пользователей на всех клиентах (в том числе, пользователей
	  <username>sap*</username> и <username>ddic</username>).</para>
      </sect3>

      <sect3 id="configtranssysprofileopermodesetc">
	<title>Конфигурирование системы передачи, профиля, режимов работы и т.п.</title>

	<para>В клиенте 000, от имени пользователя, отличающегося от
	  <username>ddic</username> и <username>sap*</username>,
	  выполните, как минимум, следующее:</para>

	<informaltable frame="none" pgwide="1">
	  <tgroup cols="2">
	  <thead>
	  <row>
	    <entry>Задача</entry>
	    <entry>Транзакция</entry>
	  </row>
	  </thead>
	  <tbody>
	  <row>
	    <entry>Сконфигурируйте систему передачи, например, как <emphasis>Stand-Alone Transport Domain Entity</emphasis></entry>
	    <entry>STMS</entry>
	  </row>
	  <row>
	    <entry>Создайте/Отредактируйте профиль для системы</entry>
	    <entry>RZ10</entry>
	  </row>
	  <row>
	    <entry>Сконфигурируйте режимы работы и экземпляры</entry>
	    <entry>RZ04</entry>
	  </row>
	  </tbody>
	  </tgroup>
	</informaltable>

	<para>Эти и другие шаги, которые надо выполнить после установки,
	  подробно описаны в руководствах по установке
	  <application>&sap;</application>.</para>
      </sect3>

      <sect3 id="editintsidsap">
	<title>Редактирование <filename>init<replaceable>sid</replaceable>.sap</filename> (<filename>initIDS.sap</filename>)</title>

	<para>Файл <filename>/oracle/IDS/dbs/initIDS.sap</filename>
	  содержит профиль резервного копирования
	  <application>&sap;</application>.  Здесь надо задать размер
	  используемой ленты, тип сжатия и т.д.  Чтобы можно было
	  использовать <command>sapdba</command> /
	  <command>brbackup</command>, мы изменили следующие значения:</para>

	<programlisting>compress = hardware
archive_function = copy_delete_save
cpio_flags = "-ov --format=newc --block-size=128 --quiet"
cpio_in_flags = "-iuv --block-size=128 --quiet"
tape_size = 38000M
tape_address = /dev/nsa0
tape_address_rew = /dev/sa0</programlisting>

	<para>Объяснения:</para>

	<para><varname>compress</varname>: мы использовали ленту HP DLT1,
	  которая поддерживает аппаратное сжатие.</para>

	<para><varname>archive_function</varname>: этот параметр задает
	  стандартное поведение для сохранения архивных журналов &oracle;:
	  новые журнальные файлы сохраняются на ленту, уже сохраненные
	  файлы журнала сохраняются еще раз, а затем удаляются.  Это
	  предотвращает многочисленные проблемы, если потребуется
	  восстановить базу данных, а одна из архивных лент окажется
	  сбойной.</para>

	<para><varname>cpio_flags</varname>: по умолчанию используется
	  <option>-B</option>, что устанавливает размер блока 5120&nbsp;байт.
	  Для лент DLT компания HP рекомендует размер блока не меньше
	  32&nbsp;Кбайт, поэтому мы использовали значение
	  <option>--block-size=128</option> для задания размера блока
	  64&nbsp;Кбайта.  Опция <option>--format=newc</option> необходима,
	  поскольку у нас есть индексные дескрипторы (inodes) с номерами
	  больше 65535.  Последняя опция, <option>--quiet</option> необходима
	  потому, что иначе команда <command>brbackup</command> выдает
	  сообщение об ошибке, как только команда <command>cpio</command>
	  выдаст количество сохраненных блоков.</para>

	<para><varname>cpio_in_flags</varname>: флаги, необходимые для
	  загрузки данных с ленты.  Формат распознается автоматически.</para>

	<para><varname>tape_size</varname>: обычно этот параметр задает
	  реальную ёмкость ленты. Из соображений надежности (мы используем
	  аппаратное сжатие), задано значение несколько меньше
	  фактического.</para>

	<para><varname>tape_address</varname>: устройство без перемотки
	  для использования в команде <command>cpio</command>.</para>

	<para><varname>tape_address_rew</varname>: устройство с
	  перемоткой для использования в команде
	  <command>cpio</command>.</para>
      </sect3>

      <sect3>
	<title>Проблемы конфигурирования после установки</title>

	<para>Следующие параметры <application>&sap;</application> надо
	  настроить после установки (примеры для IDES 46B,
	  1&nbsp;Гбайт памяти):</para>

	<informaltable frame="none" pgwide="1">
	  <tgroup cols="2">
	    <thead>
	      <row>
		<entry>Имя</entry>
		<entry>Значение</entry>
	      </row>
	    </thead>
	    <tbody>
	      <row>
		<entry>ztta/roll_extension</entry>
		<entry>250000000</entry>
	      </row>
	      <row>
		<entry>abap/heap_area_dia</entry>
		<entry>300000000</entry>
	      </row>
	      <row>
		<entry>abap/heap_area_nondia</entry>
		<entry>400000000</entry>
	      </row>
	      <row>
		<entry>em/initial_size_MB</entry>
		<entry>256</entry>
	      </row>
	      <row>
		<entry>em/blocksize_kB</entry>
		<entry>1024</entry>
	      </row>
	      <row>
		<entry>ipc/shm_psize_40</entry>
		<entry>70000000</entry>
	      </row>
	    </tbody>
	  </tgroup>
	</informaltable>

	<para>&sap; Note 0013026:</para>

	<informaltable frame="none" pgwide="1">
	  <tgroup cols="2">
	    <thead>
	      <row>
		<entry>Имя</entry>
		<entry>Значение</entry>
	      </row>
	    </thead>
	    <tbody>
	      <row>
		<entry>ztta/dynpro_area</entry>
		<entry>2500000</entry>
	      </row>
	    </tbody>
	  </tgroup>
	</informaltable>

	<para>&sap; Note 0157246:</para>

	<informaltable frame="none" pgwide="1">
	  <tgroup cols="2">
	    <thead>
	      <row>
		<entry>Имя</entry>
		<entry>Значение</entry>
	      </row>
	    </thead>
	    <tbody>
	      <row>
		<entry>rdisp/ROLL_MAXFS</entry>
		<entry>16000</entry>
	      </row>
	      <row>
		<entry>rdisp/PG_MAXFS</entry>
		<entry>30000</entry>
	      </row>
	    </tbody>
	  </tgroup>
	</informaltable>

	<note>
	  <para>При указанных выше параметрах в системе с 1&nbsp;Гбайт
	    памяти можно обнаружить примерно следующее использование
	    памяти:</para>

	  <programlisting>Mem: 547M Active, 305M Inact, 109M Wired, 40M Cache, 112M Buf, 3492K Free</programlisting>
	</note>
      </sect3>
    </sect2>

    <sect2 id="problemsduringinstallation">
      <title>Проблемы в ходе установки</title>

      <sect3 id="restartr3setup">
	<title>Перезапуск <command>R3SETUP</command> после устранения проблемы</title>

	<para><command>R3SETUP</command> останавливается при выявлении
	  ошибки.  Если вы просмотрели соответствующие журнальные файлы и
	  исправили ошибку, придется запускать <command>R3SETUP</command>
	  снова, обычно выбирая REPEAT как опцию для последнего шага,
	  на котором команда <command>R3SETUP</command> выдала сообщение
	  об ошибке.</para>

	<para>Для перезапуска команды <command>R3SETUP</command> просто
	  запустите её с соответствующим файлом
	  <filename>R3S</filename>:</para>

	  <screen>&prompt.root; <userinput>./R3SETUP -f CENTRDB.R3S</userinput></screen>

	  <para>для 4.6B или с файлом</para>

	  <screen>&prompt.root; <userinput>./R3SETUP -f CENTRAL.R3S</userinput></screen>

	  <para>для 4.6C, независимо от того, произошла ли ошибка
	    при работе с файлом <filename>CENTRAL.R3S</filename> или
	    <filename>DATABASE.R3S</filename>.</para>

	<note><para>На некоторых стадиях команда <command>R3SETUP</command>
	    предполагает, что запущены и работают процессы как сервера
	    базы данных, так и <application>&sap;</application> (поскольку
	    эти шаги уже выполнены).  Если возникнут ошибки и, например,
	    запустить сервер базы данных не получится, придется вручную
	    запускать сервер базы данных и <application>&sap;</application>
	    после исправления ошибок и до повторного запуска
	    <command>R3SETUP</command>.</para>
	  <para>Не забудьте также снова запустить процесс прослушивания
	    <application>&oracle;</application> (как пользователь
	    <username>ora<replaceable>sid</replaceable></username> с помощью
	    команды <command>umask 0; lsnrctl start</command>), если он тоже
	    был остановлен (например, из-за необходимой перезагрузки
	    системы).</para>
	</note>
      </sect3>

      <sect3 id="indoraduringduringr3setup">
	<title>OSUSERSIDADM_IND_ORA в ходе <command>R3SETUP</command></title>

	<para>Если <command>R3SETUP</command> выдает сообщения об
	  ошибках на этом этапе, отредактируйте используемый при этом
	  файл шаблона <command>R3SETUP</command>
	  (<filename>CENTRDB.R3S</filename> (4.6B), либо
	  <filename>CENTRAL.R3S</filename> или
	  <filename>DATABASE.R3S</filename> (4.6C)).
	  Найдите раздел <literal>[OSUSERSIDADM_IND_ORA]</literal> или
	  поищите единственную запись <literal>STATUS=ERROR</literal> и
	  отредактируйте следующие значения:</para>

	<programlisting>HOME=/home/<replaceable>sid</replaceable>adm (было пусто)
STATUS=OK (был статус ERROR)
	</programlisting>

	<para>Затем надо снова перезапустить
	  <command>R3SETUP</command>.</para>
      </sect3>

      <sect3 id="indoraduringr3setup">
	<title>OSUSERDBSID_IND_ORA в ходе <command>R3SETUP</command></title>

	<para>Возможно, команда <command>R3SETUP</command> также выдаст
	  сообщения об ошибке на этой стадии.  Ошибка здесь аналогична
	  возникающей на стадии OSUSERSIDADM_IND_ORA. Просто отредактируйте
	  используемый файл шаблона <command>R3SETUP</command>
	  (<filename>CENTRDB.R3S</filename> (4.6B), либо
	  <filename>CENTRAL.R3S</filename> или
	  <filename>DATABASE.R3S</filename> (4.6C)).
	  Найдите раздел <literal>[OSUSERDBSID_IND_ORA]</literal> или поищите
	  единственную запись <literal>STATUS=ERROR</literal> и
	  отредактируйте следующее значение в этом разделе:</para>

	<programlisting>STATUS=OK</programlisting>

	<para>Затем перезапустите <command>R3SETUP</command>.</para>
      </sect3>

      <sect3 id="oraviewvrffilenotfound">
	<title><errorname>oraview.vrf FILE NOT FOUND</errorname> в ходе установки &oracle;</title>

	<para>Вы не сняли выбор с <emphasis>&oracle; On-Line Text
	  Viewer</emphasis> перед началом установки.  Он помечен для
	  установки, хотя этот продукт и не доступен сейчас для Linux.
	  Снимите пометку с этого продукта в меню установки
	  <application>&oracle;</application> и перезапустите
	  установку.</para>
      </sect3>

      <sect3 id="textenvincalid">
	<title><errorname>TEXTENV_INVALID</errorname> в ходе <command>R3SETUP</command>, RFC или запуска SAPgui</title>

	<para>Если возникает эта ошибка, не найдена нужная локаль.
	  &sap; Note 0171356 перечисляет необходимые пакеты RPM, которые
	  надо установить (например, <filename>saplocales-1.0-3</filename>,
	  <filename>saposcheck-1.0-1</filename> для RedHat 6.1).  Если
	  игнорировать все ошибки и менять <literal>STATUS</literal>
	  соответствующих шагов с <literal>ERROR</literal> на
	  <literal>OK</literal> (в файле <filename>CENTRDB.R3S</filename>)
	  каждый раз, когда <command>R3SETUP</command> сообщает об
	  ошибке и просто перезапуск ать <command>R3SETUP</command>, система
	  <application>&sap;</application> не будет правильно
	  сконфигурирована, и вы затем не сможете подключиться к системе
	  с помощью <application>SAPgui</application>, хотя запустить
	  систему и получится.  Попытка подключения с помощью старой
	  Linux-версии <application>SAPgui</application> приведет к выдаче
	  следующих сообщений:</para>

	<programlisting>Sat May 5 14:23:14 2001
*** ERROR => no valid userarea given [trgmsgo. 0401]
Sat May 5 14:23:22 2001
*** ERROR => ERROR NR 24 occured [trgmsgi. 0410]
*** ERROR => Error when generating text environment. [trgmsgi. 0435]
*** ERROR => function failed [trgmsgi. 0447]
*** ERROR => no socket operation allowed [trxio.c 3363]
Speicherzugriffsfehler</programlisting>

	<para>Это связано с тем, что система
	  <application>&sap.r3;</application> не может корректно назначить
	  локаль и сама не была надлежащим образом сконфигурирована
	  (не хватает записей в некоторых таблицах базы данных).  Чтобы
	  можно было подключиться к <application>&sap;</application>,
	  добавьте следующие записи в файл <filename>DEFAULT.PFL</filename>
	  (см. Note 0043288):</para>

	<programlisting>abap/set_etct_env_at_new_mode = 0
install/collate/active = 0
rscp/TCP0B = TCP0B</programlisting>

	<para>Перезапустите систему <application>&sap;</application>. Теперь
	  вы можете подключиться к системе, хотя специфические для страны
	  языковые установки могут работать не так, как предполагалось.
	  После исправления настроек страны (и добавления соответствующих
	  локалей) эти записи можно удалить из файла
	  <filename>DEFAULT.PFL</filename> и перезапустить систему <application>&sap;</application>.</para>

      </sect3>

      <sect3 id="ora-00001">
	<title><errorcode>ORA-00001</errorcode></title>
	<para>Эта ошибка возникает только с
	  <application>&oracle; 8.1.7</application> на FreeBSD&nbsp;4.5.
	  Причина в том, что сервер <application>&oracle;</application>
	  не может правильно проинициализироваться и аварийно завершает
	  работу, оставляя не освобожденными в системе семафоры и
	  совместно используемую память.  При следующей попытке запустить сервер
	  базы данных выдается ошибка <errorcode>ORA-00001</errorcode>.</para>

	<para>Найдите оставшиеся семафоры и сегменты памяти с помощью
	  команды <command>ipcs -a</command> и удалите с помощью
	  <command>ipcrm</command>.</para>
      </sect3>

      <sect3 id="ora-00445pmon">
	<title><errorcode>ORA-00445</errorcode> (фоновый процесс PMON не запущен)</title>
	<para>Эта ошибка произошла с <application>&oracle; 8.1.7</application>.
	  Она выдается, если сервер был запущен с помощью обычного
	  скрипта <command>startsap</command> (например,
	  <command>startsap_majestix_00</command>) от имени пользователя
	  <username>prdadm</username>.</para>

	<para>Возможный способ обхода&nbsp;&ndash; запускать сервер базы данных
	  от имени пользователя <username>oraprd</username> с помощью
	  <command>svrmgrl</command>:</para>

	<screen>&prompt.user; <userinput>svrmgrl</userinput>
SVRMGR&gt; <userinput>connect internal;</userinput>
SVRMGR&gt; <userinput>startup</userinput>;
SVRMGR&gt; <userinput>exit</userinput></screen>

      </sect3>

      <sect3 id="ora-12546">
	<title><errorcode>ORA-12546</errorcode> (запускайте процесс прослушивания с правильными правами)</title>

	<para>Запускайте процесс прослушивания
	  <application>&oracle;</application> от имени пользователя
	  <username>oraids</username> следующими командами:</para>

	<screen>&prompt.root; <userinput>umask 0; lsnrctl start</userinput></screen>

	<para>В противном случае, вы можете получить сообщение об ошибке
	  <errorcode>ORA-12546</errorcode>, поскольку сокеты не будут иметь
	  нужных прав доступа. См. &sap; Note 0072984.</para>
      </sect3>

      <sect3 id="ora-27102">
	<title><errorcode>ORA-27102</errorcode> (не хватает памяти)</title>

	<para>Эта ошибка произошла при попытке использовать значения
	  <literal>MAXDSIZ</literal> и <literal>DFLDSIZ</literal> больше
	  1&nbsp;Гбайта (1024x1024x1024).  Кроме того, мы получили
	  <errorname>Linux Error 12: Cannot allocate memory</errorname>.</para>
      </sect3>

      <sect3 id="dipgntabindind">
	<title>[DIPGNTAB_IND_IND] в ходе <command>R3SETUP</command></title>

	<para>В общем случае, см. &sap; Note 0130581
	  (прекращается работа <command>R3SETUP</command> на шаге
	  <literal>DIPGNTAB</literal>).  В ходе установки
	  IDES-версии по каким-то причинам процесс установки использовал
	  вместо правильного имени системы <application>&sap;</application>,
	  <quote>IDS</quote>, пустую строку, <literal>""</literal>.  Это
	  приводит к небольшим проблемам при доступе к каталогам, поскольку пути
	  генерируются динамически на базе <replaceable>SID</replaceable>
	  (в данном случае, IDS).  Поэтому вместо обращения к:</para>

	<programlisting>/usr/sap/IDS/SYS/...
/usr/sap/IDS/DVMGS00</programlisting>

	<para>используются следующие пути:</para>

	<programlisting>/usr/sap//SYS/...
/usr/sap/D00</programlisting>

	<para>Чтобы продолжить установку мы создали ссылку и дополнительный
	  каталог:</para>

	<screen>&prompt.root; <userinput>pwd</userinput>
/compat/linux/usr/sap
&prompt.root; <userinput>ls -l</userinput>
total 4
drwxr-xr-x 3  idsadm sapsys 512 May 5 11:20 D00
drwxr-x--x 5  idsadm sapsys 512 May 5 11:35 IDS
lrwxr-xr-x 1  root   sapsys 7 May 5 11:35 SYS -> IDS/SYS
drwxrwxr-x 2  idsadm sapsys 512 May 5 13:00 tmp
drwxrwxr-x 11 idsadm sapsys 512 May 4 14:20 trans</screen>

	<para>Мы также нашли документы &sap; Notes (0029227 и 0008401),
	  описывающие это поведение.  Мы не столкнулись с подобными
	  проблемами при установке
	  <application>&sap; 4.6C</application>.</para>
      </sect3>

      <sect3 id="rfcrswboiniindind">
	<title>[RFCRSWBOINI_IND_IND] в ходе <command>R3SETUP</command></title>

	<para>В ходе установки <application>&sap; 4.6C</application>,
	  эта ошибка возникла в результате другой ошибки, произошедшей
	  ранее по ходу установки. В данном случае придется просмотреть
	  соответствующие журнальные файлы и устранить исходную
	  проблему.</para>

	<para>Если после просмотра журнальных файлов выявлена только эта
	  ошибка (проверьте &sap; Notes), можно поменять
	  <literal>STATUS</literal> соответствующего шага с <literal>ERROR</literal> на <literal>OK</literal> (в файле
	  <filename>CENTRDB.R3S</filename>) и перезапустить
	  <command>R3SETUP</command>. После установки надо
	  выполнить отчет <literal>RSWBOINS</literal> из транзакции SE38.
	  Дополнительную информацию о стадиях <literal>RFCRSWBOINI</literal>
	  и <literal>RFCRADDBDIF</literal> см. в &sap; Note 0162266.</para>
      </sect3>

      <sect3 id="rfcraddbdifindind">
	<title>[RFCRADDBDIF_IND_IND] в ходе <command>R3SETUP</command></title>
	<para>Здесь применяются те же ограничения: проверьте путем просмотра
	  журнальных файлов, что эта ошибка не вызвана какими-то предыдущими
	  проблемами.</para>

	<para>Если подтверждается, что применим документ &sap; Note 0162266,
	  просто поменяйте <literal>STATUS</literal> соответствующего
	  шага с <literal>ERROR</literal> на <literal>OK</literal> (в
	  файле <filename>CENTRDB.R3S</filename>) и перезапустите <command>R3SETUP</command>. После установки надо выполнить
	  отчет <literal>RADDBDIF</literal> из транзакции SE38.</para>
      </sect3>

      <sect3 id="sigactionsig31">
	<title><errorcode>sigaction sig31: File size limit exceeded</errorcode></title>

	<para>Это сообщение об ошибке выдается в ходе запуска процессов
	  <application>&sap;</application> <emphasis>disp+work</emphasis>.
	  Если <application>&sap;</application> запускается скриптом
	  <command>startsap</command>, запускаются отдельные подпроцессы,
	  выполняющие грязную работу по запуску всех остальных процессов
	  <application>&sap;</application>. В результате, сам скрипт
	  не получит уведомления, если что-то пойдет не так.</para>

	<para>Чтобы проверить, нормально ли запустились процессы
	  <application>&sap;</application>, посмотрите на состояние
	  процессов с помощью команды <command>ps ax |
	  grep <replaceable>SID</replaceable></command>, которая выдаст
	  список всех процессов <application>&oracle;</application> и
	  <application>&sap;</application>.  Если похоже, что некоторых
	  процессов не хватает или вы не можете подключиться к системе
	  <application>&sap;</application>, просмотрите соответствующие
	  журнальные файлы, которые можно найти в каталоге
	  <filename>/usr/sap/<replaceable>SID</replaceable>/DVEBMGS<replaceable>nr</replaceable>/work/</filename>.
	  Надо просматривать файлы <filename>dev_ms</filename> и
	  <filename>dev_disp</filename>.</para>

	<para>Сигнал 31 выдается, если объем памяти, совместно используемой
	  <application>&oracle;</application> и
	  <application>&sap;</application>, превосходит заданный в файле
	  конфигурации ядра, и от него можно избавиться, указав большее
	  значение:</para>

	<programlisting># большее значение для производственных систем 46C:
options SHMMAXPGS=393216
# меньшее значение, достаточное для 46B:
#options SHMMAXPGS=262144</programlisting>

      </sect3>

      <sect3 id="saposcolfails">
	<title>Сбой при запуске <command>saposcol</command></title>
	<para>Есть ряд проблем с программой <command>saposcol</command>
	  (версии 4.6D). Система <application>&sap;</application> использует
	  <command>saposcol</command> для сбора данных о производительности
	  системы.  Эта программа не нужна для использования системы
	  <application>&sap;</application>, так что проблему можно отнести
	  к несерьезным.  Более старые версии (4.6B) работают, но собирают
	  не все данные (многие вызовы просто возвращают 0, например,
	  для использования процессора).</para>
      </sect3>
    </sect2>
  </sect1>

  <sect1 id="linuxemu-advanced">
    <title>Дополнительные сведения</title>

    <para>Если вы интересуетесь, как обеспечивается двоичная совместимость
      с Linux, этот раздел для вас.  Большинство материала взято из 
      электронного письма, адресованного Terry Lambert
      <email>tlambert@primenet.com</email> в &a.chat; (ID письма:
      <literal>&lt;199906020108.SAA07001@usr09.primenet.com&gt;</literal>).</para>

    <sect2>
      <title>Как все это устроено?</title>
      <indexterm><primary>загрузчик выполняемых классов</primary></indexterm>

      <para>FreeBSD поддерживает абстракцию, называемую <quote>загрузчик
	выполняемых классов</quote>.  Фактически, он является первой
	стадией системного вызова &man.execve.2;.</para>

      <para>На самом деле, FreeBSD имеет список загрузчиков вместо
	одного, завершающийся загрузчиком <literal>#!</literal> для
	запуска любых командных интерпретаторов и скриптов.</para>

      <para>Исторически сложилось, что единственный загрузчик в &unix;
	системах проверял <quote>магическое число</quote> (чаще всего первые
	4 или 8 байт файла), чтобы определить, известен ли формат
	двоичного файла системе, и если да, то вызвал соответствующий
	загрузчик.</para>

      <para>Если файл не опознавался системой как двоичный, системный
        вызов &man.execve.2; возвращал ошибку, и текущий командный 
	интерпретатор начинал выполнять файл как скрипт.</para>

      <para>По умолчанию скрипт выполнялся <quote>текущим командным
        интерпретатором</quote>.</para>

      <para>Позднее, &man.sh.1; был модифицирован, так, чтобы проверять
	первые два символа в файле, и если они оказывались
	<literal>:\n</literal>, то файл выполнялся как сценарий для
	&man.csh.1; (утверждается, что SCO были первыми, кто сделал
	эту модификацию).</para>

      <para>FreeBSD сейчас ведет себя по-другому: пробегает по списку 
        загрузчиков,включающему специальный загрузчик <literal>#!</literal>,
	который вызывает нужный интерпретатор, указанный после этих символов
	до следующего пробела, или <filename>/bin/sh</filename>, если
	не нашел подходящего.</para>
      <indexterm><primary>ELF</primary></indexterm>

      <para>Для поддержки Linux ABI FreeBSD ищет магическое число, 
        соответствующее двоичному файлу ELF (на этой стадии не различаются
	FreeBSD, &solaris;, Linux или любая другая ОС поддерживающая формат
	ELF).</para>
      <indexterm><primary>Solaris</primary></indexterm>

      <para>Далее, ELF-загрузчик определяет <quote>марку</quote> (brand)
        двоичного файла ELF (специальный комментарий в ELF-файле, 
	отсутствующий в двоичных файлах ELF 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 выявит марку
	<literal>Linux</literal> в файле.</para>
      <indexterm>
        <primary>ELF</primary>
	<secondary>branding</secondary>
      </indexterm>

      <para>Когда ELF-загрузчик находит <quote>марку</quote>
	<literal>Linux</literal>, он заменяет соответствующий указатель в
	структуре <literal>proc</literal>.  Все системные вызовы
	индексируются через этот указатель (в традиционной &unix; системе это
	массив структур <literal>sysent[]</literal>, содержащий системные 
	вызовы).  Кроме того, процесс помечается для специальной обработки
	вектора обработчиков сигналов, а также ряда других (небольших)
	исправлений, которые осуществляются специальным модулем ядра для 
	поддержки Linux.</para>

      <para>Вектор системных вызовов Linux содержит, среди прочего, список
        записей <literal>sysent[]</literal>, адреса которых находятся в
	модуле ядра.</para>

      <para>При выполнении системного вызова из двоичного файла Linux, 
        код обработчика разыменовывает указатель на функцию системного вызова
	из структуры <literal>proc</literal>, и получает точки входа 
	системных вызовов Linux, а не FreeBSD.</para>

      <para>Плюс ко всему, в Linux&ndash;режиме динамически <quote>изменяется
	корень</quote> файловой системы при поиске файлов; фактически
	так же, как и параметр <literal>union</literal> при монтировании
	файловых систем (не путать с <literal>unionfs</literal>!).
	Сперва, файл ищется в каталоге
	<filename>/compat/linux/<replaceable>исходное_полное_имя</replaceable></filename>
	и только затем, в случае неудачи, в
	<filename>/<replaceable>исходное_полное_имя</replaceable></filename>.
	Это гарантирует, что программы, которым требуются другие программы,
	смогут работать (например, весь набор инструментальных средств Linux
	сможет работать в среде поддержки Linux ABI).  Это также дает 
	возможность Linux программам выполнять FreeBSD команды, если не
	найдется соответствующих Linux команд.  Например, можно скопировать
	FreeBSD &man.uname.1; в дерево каталогов
	<filename>/compat/linux</filename>, и Linux-программы не смогут
	разобраться, что они работают не в Linux.</para>

      <para>Фактически, имеется ядро Linux в ядре FreeBSD; различные
        базовые функции, реализующие все услуги ядра, идентичны как
	в записях таблицы системных вызовов FreeBSD, так и в записях
	таблицы системных вызовов Linux: операции с файловой системой,
	виртуальная память, средства доставки сигналов,
	System V IPC &hellip;  Единственное отличие в том, что 
	FreeBSD-программы получают <emphasis>интерфейсные</emphasis> функции
	FreeBSD, а Linux-программы получают <emphasis>интерфейсные</emphasis>
	функции Linux (в большинстве более старых ОС есть только их
	собственные интерфейсные функции: функции берутся из статического
	глобального массива структур <literal>sysent[]</literal>, а не
	из массива, полученного разыменованием динамически 
	проинициализированного указателя в структуре 
	<literal>proc</literal> процесса, выполняющего вызов).</para>

      <para>Какая же реализация ABI для FreeBSD <quote>родная</quote>?  Это
        не имеет значения.  Единственное различие (на данный момент, в
	будущем все может и, вероятно, изменится), пожалуй, в том, что
	функции системных вызовов FreeBSD зашиты в ядро, а для Linux они
	могут быть либо статически скомпонованы в ядро, либо получаться 
	через модуль ядра.</para>

      <para>Да, но можно ли назвать это эмуляцией?  Нет.  Это реализация ABI,
	а не эмуляция. Как таковой, эмулятор (или симулятор)
	отсутствует.</para>

      <para>В таком случае, почему же иногда говорят об 
        <quote>эмуляции Linux</quote>?  Чтобы <quote>насолить</quote> 
	FreeBSD!  Фактически, причина в том, что на момент первой реализации
	не существовало слова, которое бы точнее описывало этот процесс.  
	Нельзя было сказать, что FreeBSD запускает приложения Linux (без
	перекомпиляции или загрузки соответствующего модуля ядра это 
	невозможно).  Но надо было как-то описать, что 
	загружается &mdash; отсюда и <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:
-->
