<?xml version="1.0" encoding="ISO-8859-7" standalone="no"?> <!-- Ôï Åã÷åéñßäéï ôïõ FreeBSD: Óõìâáôüôçôá ìå ÅêôåëÝóéìá ôïõ Linux The FreeBSD Greek Documentation Project $FreeBSD$ %SOURCE% en_US.ISO8859-1/books/handbook/linuxemu/chapter.sgml %SRCID% 38826 --> <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> </chapterinfo> <title>Óõìâáôüôçôá ìå ÅêôåëÝóéìá ôïõ Linux</title> <sect1 id="linuxemu-synopsis"> <title>Óýíïøç</title> <indexterm> <primary>Óõìâáôüôçôá ìå åêôåëÝóéìá (binary) Linux</primary> </indexterm> <indexterm> <primary>binary óõìâáôüôçôá</primary> <secondary>Linux</secondary> </indexterm> <indexterm> <primary>óõìâáôüôçôá åêôåëÝóéìùí Linux</primary> </indexterm> <indexterm> <primary>óõìâáôüôçôá åêôåëÝóéìùí</primary> <secondary>Linux</secondary> </indexterm> <para>Ôï &os; ðáñÝ÷åé binary óõìâáôüôçôá (åêôåëÝóéìùí) ìå áñêåôÜ Üëëá ëåéôïõñãéêÜ ôýðïõ &unix;, óõìðåñéëáìâáíïìÝíïõ êáé ôïõ Linux. Óå áõôü ôï óçìåßï, ìðïñåß íá áíáñùôéÝóôå ãéáôß áêñéâþò ÷ñåéÜæåôáé ôï &os; íá ìðïñåß íá ôñÝîåé åêôåëÝóéìá Linux; H áðÜíôçóç óå áõôÞ ôçí åñþôçóç åßíáé áñêåôÜ áðëÞ. ÐïëëÝò åôáéñßåò êáé ðñïãñáììáôéóôÝò áíáðôýóóïõí åöáñìïãÝò ìüíï ãéá Linux, ìéá êáé åßíáé ðïëý <quote>ôçò ìüäáò</quote> óôï êüóìï ôùí õðïëïãéóôþí. Áõôü áíáãêÜæåé åìÜò ôïõò õðüëïéðïõò, ðïõ ÷ñçóéìïðïéïýìå ôï &os;, íá ðéÝæïõìå ôéò ßäéåò áõôÝò åôáéñßåò êáé ðñïãñáììáôéóôÝò íá äçìéïõñãÞóïõí êáíïíéêÝò åêäüóåéò ôùí åöáñìïãþí ôïõò ãéá &os;. Ôï ðñüâëçìá åßíáé, üôé ïé ðåñéóóüôåñåò áðü áõôÝò ôéò åôáéñßåò äåí áíôéëáìâÜíïíôáé ðñáãìáôéêÜ ðüóïé ðåñéóóüôåñïé Üíèñùðïé èá ÷ñçóéìïðïéïýóáí ôï ðñïúüí ôïõò áí åß÷áí åêäüóåéò êáé ãéá &os;, êáé ïé ðåñéóóüôåñåò óõíå÷ßæïõí íá áíáðôýóóïõí ìüíï ãéá Linux. ¶ñá ôé ìðïñåß íá êÜíåé Ýíáò ÷ñÞóôçò ôïõ &os;; Åäþ Ýñ÷åôáé íá âïçèÞóåé ç binary óõìâáôüôçôá ôïõ &os; ìå ôï Linux.</para> <para>Åí óõíôïìßá, ç óõìâáôüôçôá åðéôñÝðåé óôïõò ÷ñÞóôåò ôïõ &os; íá åêôåëÝóïõí ðåñßðïõ ôï 90% üëùí ôùí Linux åöáñìïãþí ÷ùñßò ìåôáôñïðÝò. Áõôü ðåñéëáìâÜíåé åöáñìïãÝò üðùò ôï <application>&staroffice;</application>, ôçí Linux Ýêäïóç ôïõ <application>&netscape;</application>, <application>&adobe; &acrobat;</application>, <application>&realplayer;</application>, <application>&oracle;</application>, <application>&wordperfect;</application>, <application>Doom</application>, <application>Quake</application>, êáé ðåñéóóüôåñá. ¸÷åé åðßóçò áíáöåñèåß üôé óå êÜðïéåò ðåñéðôþóåéò, ôá åêôåëÝóéìá ôïõ Linux Ý÷ïõí êáëýôåñç áðüäïóç óôï &os; áðü üôé óôï Linux.</para> <para>ÕðÜñ÷ïõí ùóôüóï êÜðïéá óõãêåêñéìÝíá ãéá ôï Linux óôïé÷åßá ôïõ ëåéôïõñãéêïý ðïõ äåí õðïóôçñßæïíôáé óôï &os;. Ôá åêôåëÝóéìá ôïõ Linux äåí èá äïõëÝøïõí óôï &os; áí ÷ñçóéìïðïéïýí ðïëëÝò åîåéäéêåõìÝíåò êëÞóåéò &i386;, üðùò ãéá ðáñÜäåéãìá ôçí åíåñãïðïßçóç ôçò åéêïíéêÞò êáôÜóôáóçò 8086.</para> <para>Áöïý äéáâÜóåôå áõôü ôï êåöÜëáéï, èá îÝñåôå:</para> <itemizedlist> <listitem> <para>Ðùò íá åíåñãïðïéÞóåôå ôçí óõìâáôüôçôá åêôåëÝóéìùí ìå ôï Linux óôï óýóôçìá óáò.</para> </listitem> <listitem> <para>Ðùò íá åãêáôáóôÞóåôå ðñüóèåôåò êïéíü÷ñçóôåò âéâëéïèÞêåò ôïõ Linux.</para> </listitem> <listitem> <para>Ðùò íá åãêáôáóôÞóåôå åöáñìïãÝò ôïõ Linux óôï &os;.</para> </listitem> <listitem> <para>Ôéò ëåðôïìÝñåéåò ôçò õëïðïßçóçò ôçò óõìâáôüôçôáò ìå ôï Linux óôï &os;.</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 (kernel loadable object)</primary></indexterm> <para>Ç óõìâáôüôçôá ìå åêôåëÝóéìá ôïõ Linux äåí åßíáé åíåñãÞ åî' áñ÷Þò. Ï åõêïëüôåñïò ôñüðïò ãéá íá åíåñãïðïéÞóåôå áõôÞ ôç ëåéôïõñãßá åßíáé íá öïñôþóåôå ôï KLD (Üñèñùìá) <literal>linux</literal> (<quote>Kernel LoaDable object</quote>). Ìðïñåßôå íá öïñôþóåôå áõôü ôï Üñèñùìá óôïí ðõñÞíá äßíïíôáò ôç ðáñáêÜôù åíôïëÞ ùò <username>root</username>:</para> <screen>&prompt.root; <userinput>kldload linux</userinput></screen> <para>Áí èÝëåôå íá Ý÷åôå ðÜíôá åíåñãïðïéçìÝíç ôç óõìâáôüôçôá ìå Linux, ôüôå èá ÷ñåéáóôåß íá ðñïóèÝóåôå ôç ðáñáêÜôù ãñáììÞ óôï <filename>/etc/rc.conf</filename>:</para> <programlisting>linux_enable="YES"</programlisting> <para>Ç åíôïëÞ &man.kldstat.8; ìðïñåß íá ÷ñçóéìïðïéçèåß ãéá íá åëåã÷èåß áí ôï KLD åßíáé öïñôùìÝíï:</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>kernel options</primary> <secondary>COMPAT_LINUX</secondary> </indexterm> <para>Áí ãéá êÜðïéï ëüãï äåí èÝëåôå Þ äå ìðïñåßôå íá öïñôþóåôå ôï KLD, ôüôå ìðïñåßôå íá óõíäÝóåôå óôáôéêÜ ôçí õðïóôÞñéîç åêôåëÝóéìùí ôïõ Linux óôïí ðõñÞíá ìå ôï íá ðñïóèÝóåôå ôçí åðéëïãÞ <literal>options COMPAT_LINUX</literal> óôï áñ÷åßùí ñõèìßóåùí ôïõ ðõñÞíá. Óôç óõíÝ÷åéá ìðïñåßôå íá åãêáôáóôÞóåôå ôïí íÝï ðõñÞíá üðùò ðåñéãñÜöåôáé óôï <xref linkend="kernelconfig"/>.</para> <sect2> <title>ÅãêáôÜóôáóç ôùí Linux Runtime Libraries</title> <indexterm> <primary>Linux</primary> <secondary>åãêáôÜóôáóç âéâëéïèçêþí Linux</secondary> </indexterm> <para>Áõôü ìðïñåß íá ãßíåé ìå äýï ôñüðïõò. Åßôå ìå ôç ÷ñÞóç ôïõ <link linkend="linuxemu-libs-port">linux_base-fc4</link> port, Þ ìå <link linkend="linuxemu-libs-manually">÷åéñïêßíçôç</link> åãêáôÜóôáóç ôïõò.</para> <sect3 id="linuxemu-libs-port"> <title>ÅãêáôÜóôáóç ìÝóù ôïõ linux_base Port</title> <indexterm><primary>Ports Collection</primary></indexterm> <para>Áõôüò åßíáé êáôÜ ãåíéêÞ ïìïëïãßá ï åõêïëüôåñïò ôñüðïò ãéá ôçí åãêáôÜóôáóç ôùí runtime libraries. Åßíáé ç ßäéá äéáäéêáóßá åãêáôÜóôáóçò ðïõ áêïëïõèåßôáé êáé ãéá ïðïéïäÞðïôå Üëëï port áðü ôç <link linkend="ports">ÓõëëïãÞ ôùí Ports</link>. ÁðëÜ êÜíôå ôï ðáñáêÜôù:</para> <screen>&prompt.root; <userinput>cd /usr/ports/emulators/linux_base-f10</userinput> &prompt.root; <userinput>make install distclean</userinput></screen> <note> <para>Áí ÷ñçóéìïðïéåßôå êÜðïéá Ýêäïóç ôïõ &os; ðñéí ôçí 8.0, èá ðñÝðåé íá åãêáôáóôÞóåôå ôï port <filename role="package">emulators/linux_base-fc4</filename> áíôß ãéá ôï <filename role="package">emulators/linux_base-f10</filename>.</para> </note> <para>Èá ðñÝðåé ôþñá íá Ý÷åôå êáíïíéêÞ óõìâáôüôçôá ìå åêôåëÝóéìá ôïõ Linux. ÌåñéêÜ ðñïãñÜììáôá ðáñáðïíéïýíôáé üôé ïé âéâëéïèÞêåò óõóôÞìáôïò (system libraries) äåí åßíáé óôç ôåëåõôáßá ôïõò Ýêäïóç. ÃåíéêÜ üìùò, áõôü äåí áðïôåëåß êáíÝíá ðñüâëçìá.</para> <note><para>Ìðïñïýí íá õðÜñ÷ïõí ðïëëáðëÝò åêäüóåéò ôïõ <filename role="package">emulators/linux_base</filename>, ðïõ íá áíôéóôïé÷ïýí óôéò äéáöïñåôéêÝò åêäüóåéò ôùí äéáíïìþí Linux. Èá ðñÝðåé íá êÜíåôå åãêáôÜóôáóç ôùí ports ðïõ ðñïáðáéôïýíôáé áðü ôéò åöáñìïãÝò Linux ôéò ïðïßåò èÝëåôå íá åãêáôáóôÞóåôå.</para></note> </sect3> <sect3 id="linuxemu-libs-manually"> <title>×åéñïêßíçôç åãêáôÜóôáóç ôùí Libraries</title> <para>Áí äåí Ý÷åôå åãêáôáóôÞóåé ôçí óõëëïãÞ ôùí <quote>ports</quote>, ìðïñåßôå íá åãêáôáóôÞóåôå ôéò âéâëéïèÞêåò ÷åéñïêßíçôá. Èá ÷ñåéáóôåßôå ôá Linux shared libraries ôá ïðïßá áðáéôåß ôï ðñüãñáììá. Åðßóçò, èá ÷ñåéáóôåß íá äçìéïõñãÞóåôå êáé Ýíáí êáôÜëïãï <quote>shadow root</quote>, <filename>/compat/linux</filename>, ãéá ôéò âéâëéïèÞêåò Linux ðïõ èá õðÜñ÷ïõí óôï &os;. ÏðïéáäÞðïôå êïéíÝò âéâëéïèÞêåò (shared libraries) ïé ïðïßåò ÷ñçóéìïðïéïýíôáé áðü åöáñìïãÝò Linux êáé åêôåëïýíôáé óôï &os; èá êïéôÜîïõí ðñþôá óå áõôüí ôïí êáôÜëïãï. ÅðïìÝíùò, áí ìéá åöáñìïãÞ Linux öïñôþóåé ãéá ðáñÜäåéãìá ôï <filename>/lib/libc.so</filename>, ôï &os; èá ðñïóðáèÞóåé íá öïñôþóåé ðñþôá ôï <filename>/compat/linux/lib/libc.so</filename>, êáé áí áõôü äåí õðÜñ÷åé, ôüôå èá ðñïóðáèÞóåé íá öïñôþóåé ôï <filename>/lib/libc.so</filename>. Ôá shared libraries èá ðñÝðåé íá åãêáôáóôáèïýí óôï shadow tree <filename>/compat/linux/lib</filename> áíôß ãéá ôéò ôïðïèåóßåò ðïõ áíáöÝñåé ôï <command>ld.so</command> óôï Linux.</para> <para>ÃåíéêÜ, ôïõëÜ÷éóôïí óôéò ðñþôåò óáò åãêáôáóôÜóåéò åöáñìïãþí Linux, èá ÷ñåéáóôåß íá øÜîåôå ãéá ôéò êïéíÝò âéâëéïèÞêåò áðü ôá áíôßóôïé÷á åêôåëÝóéìá. ÌåôÜ áðü êÜðïéï äéÜóôçìá èá Ý÷åôå Ýíá éêáíïðïéçôéêü áñéèìü Linux shared libraries óôï óýóôçìÜ óáò êáé ðëÝïí äå èá ÷ñåéÜæåôáé åðéðëÝïí åñãáóßá ðÝñá áðü ôçí åãêáôÜóôáóç ôçò åöáñìïãÞò.</para> </sect3> <sect3> <title>ÅãêáôÜóôáóç Ðñüóèåôùí Shared Libraries</title> <indexterm><primary>shared libraries</primary></indexterm> <para>Êáé ôé ãßíåôáé óôç ðåñßðôùóç ðïõ Ý÷åôå åãêáôáóôÞóåé ôï <filename>linux_base</filename> port êáé ïé åöáñìïãÝò óáò áêüìç ðáñáðïíéïýíôáé ãéá shared libraries ðïõ ëåßðïõí; Ðþò ìðïñåßôå íá îÝñåôå ðïéá shared libraries ÷ñåéÜæåôáé êÜðïéá åöáñìïãÞ, êáé ðïõ ìðïñåßôå íá ôá âñåßôå; ÂáóéêÜ, õðÜñ÷ïõí 2 åðéëïãÝò (ãéá íá áêïëïõèÞóåôå ôéò ðáñáêÜôù ïäçãßåò èá ðñÝðåé íá åßóôå <username>root</username> óôï óýóôçìÜ óáò).</para> <para>Áí Ý÷åôå ðñüóâáóç óå êÜðïéï ìç÷Üíçìá Linux, ñßîôå ìéá ìáôéÜ óôá shared libraries ðïõ ÷ñåéÜæåôáé ìéá åöáñìïãÞ, êáé áíôéãñÜøôå ôá óôï &os;. Äåßôå ôï ðáñáêÜôù ðáñÜäåéãìá:</para> <informalexample> <para>Áò õðïèÝóïõìå üôé êáôåâÜóáôå ìÝóù FTP ôï åêôåëÝóéìï ôïõ <application>Doom</application> ãéá ôï Linux, êáé ôï âÜëáôå óôï Linux óýóôçìá óôï ïðïßï Ý÷åôå ðñüóâáóç. Ìðïñåßôå óôç óõíÝ÷åéá íá åëÝãîåôå ðïéá shared libraries ÷ñåéÜæåôáé ç åöáñìïãÞ ìå ôçí åíôïëÞ <command>ldd linuxdoom</command>, üðùò:</para> <screen>&prompt.user; <userinput>ldd linuxdoom</userinput> libXt.so.3 (DLL Jump 3.1) => /usr/X11/lib/libXt.so.3.1.0 libX11.so.3 (DLL Jump 3.1) => /usr/X11/lib/libX11.so.3.1.0 libc.so.4 (DLL Jump 4.5pl26) => /lib/libc.so.4.6.29</screen> <indexterm><primary>symbolic links</primary></indexterm> <para>Èá ÷ñåéáóôåß íá ðÜñåôå üëá ôá áñ÷åßá áðü ôç ôåëåõôáßá óôÞëç, êáé íá ôá áíôéãñÜøåôå óôïí êáôÜëïãï <filename>/compat/linux</filename>, êáé íá äçìéïõñãÞóåôå ðñïò áõôÜ ôïõò áíôßóôïé÷ïõò óõìâïëéêïýò äåóìïýò (symbolic links) ìå ôá ïíüìáôá ôçò ðñþôçò óôÞëçò. Áõôü óçìáßíåé üôé ðñáêôéêÜ, èá Ý÷åôå áõôÜ ôá áñ÷åßá óôï óýóôçìá óáò:</para> <screen>/compat/linux/usr/X11/lib/libXt.so.3.1.0 /compat/linux/usr/X11/lib/libXt.so.3 -> libXt.so.3.1.0 /compat/linux/usr/X11/lib/libX11.so.3.1.0 /compat/linux/usr/X11/lib/libX11.so.3 -> libX11.so.3.1.0 /compat/linux/lib/libc.so.4.6.29 /compat/linux/lib/libc.so.4 -> libc.so.4.6.29</screen> <blockquote> <note> <para>Óçìåéþóôå üôé áí Ý÷åôå Þäç êÜðïéï Linux shared library ðïõ ï áñéèìüò Ýêäïóçò åßíáé ï ßäéïò ìå áõôüí ôçò ðñþôçò óôÞëçò ôïõ <command>ldd</command>, äå èá ÷ñåéáóôåß íá áíôéãñÜøåôå ôï áñ÷åßï üðùò áõôü ïíïìÜæåôáé óôç ôåëåõôáßá óôÞëç, ôá õðÜñ÷ïíôá áñ÷åßá èá ðñÝðåé íá êÜíïõí ôç äïõëåéÜ ôïõò. Óáò óõìâïõëåýïõìå üìùò íá áíôéãñÜøåôå ôï shared library áí åßíáé êÜðïéá íåüôåñç Ýêäïóç. Ìðïñåßôå íá äéáãñÜøåôå ôá ðáëéÜ áñ÷åßá, áñêåß üìùò íá áíáíåþóåôå ôïõò óõìâïëéêïýò äåóìïýò þóôå íá ïäçãïýí óôá íÝá áñ÷åßá. ÅðïìÝíùò, áí Ý÷åôå ôéò ðáñáêÜôù âéâëéïèÞêåò óôï óýóôçìÜ óáò:</para> <screen>/compat/linux/lib/libc.so.4.6.27 /compat/linux/lib/libc.so.4 -> libc.so.4.6.27</screen> <para>êáé âñåßôå ìéá åöáñìïãÞ ç ïðïßá æçôÜåé ìéá íåüôåñç Ýêäïóç ìÝóù ôïõ <command>ldd</command>: </para> <screen>libc.so.4 (DLL Jump 4.5pl26) -> 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 -> libc.so.4.6.29</screen> </note> </blockquote> <blockquote> <note> <para>Ï ìç÷áíéóìüò ôùí óõìâïëéêþí óõíäÝóìùí ÷ñåéÜæåôáé <emphasis>ìüíï</emphasis> ãéá ôéò åöáñìïãÝò ôïõ Linux. Ï runtime linker ôïõ &os; êïéôÜåé ìüíïò ôïõ ãéá ôéò ðéï ðñüóöáôåò åêäüóåéò ôùí âéâëéïèçêþí êáé Ýôóé äå ÷ñåéÜæåôáé íá óáò áðáó÷ïëåß. </para> </note> </blockquote> </informalexample> </sect3> </sect2> <sect2> <title>ÅãêáôÜóôáóç ôùí Linux ELF Binaries</title> <indexterm> <primary>Linux</primary> <secondary>ELF binaries</secondary> </indexterm> <para>Ôá ELF binaries ÷ñåéÜæïíôáé ìåñéêÝò öïñÝò Ýíá áêüìá âÞìá, ôï <quote>branding</quote>. Áí ðñïóðáèÞóåôå íá ôñÝîåôå Ýíá åêôåëÝóéìï ELF ÷ùñßò branding, ôüôå èá óáò åìöáíéóôåß ôï ðáñáêÜôù óöÜëìá:</para> <screen>&prompt.user; <userinput>./my-linux-elf-binary</userinput> ELF binary type not known Abort</screen> <para>Ãéá íá âïçèÞóåôå ôïí ðõñÞíá ôïõ &os; íá îå÷ùñßóåé Ýíá ELF ôïõ &os; áðü Ýíá ôïõ Linux, ÷ñçóéìïðïéÞóôå ôçí åíôïëÞ &man.brandelf.1;. </para> <screen>&prompt.user; <userinput>brandelf -t Linux my-linux-elf-binary</userinput></screen> <indexterm><primary>GNU toolchain</primary></indexterm> <para>To GNU toolchain, ïìÜäá ðñüãñáììá GNU, ôïðïèåôåß ðëÝïí áõôüìáôá ôá êáôÜëëçëá ÷áñáêôçñéóôéêÜ óôá åêôåëÝóéìá ELF, åðïìÝíùò ôï ðáñáðÜíù âÞìá èá ÷ñåéÜæåôáé üëï êáé ëéãüôåñï óôï ìÝëëïí. </para> </sect2> <sect2> <title>ÅãêáôÜóôáóç ìéáò Ôõ÷áßáò Linux RPM ÅöáñìïãÞò</title> <para>Ôï &os; äéáèÝôåé ôçí äéêÞ ôïõ âÜóç äåäïìÝíùí ãéá ôá ðáêÝôá, ç ïðïßá ÷ñçóéìïðïéåßôáé ãéá üëá ôá ports (êáé ãéá áõôÜ ðïõ ðñïÝñ÷ïíôáé áðü ôï &linux;). Ãéá ôï ëüãï áõôü, ç âÜóç äåäïìÝíùí &linux; RPM äåí ÷ñçóéìïðïéåßôáé (äåí õðïóôçñßæåôáé).</para> <para>Áí ùóôüóï ÷ñåéÜæåôáé íá åãêáôáóôÞóåôå ìéá ïðïéáäÞðïôå åöáñìïãÞ ôïõ &linux; ðïõ âáóßæåôáé óå ðáêÝôï RPM, ìðïñåßôå íá ôï åðéôý÷åôå ìå ôïí ðáñáêÜôù ôñüðï:</para> <screen>&prompt.root; <userinput>cd /compat/linux</userinput> &prompt.root; <userinput>rpm2cpio -q < /path/to/linux.archive.rpm | cpio -id</userinput></screen> <para>×ñçóéìïðïéÞóôå ôçí &man.brandelf.1; ãéá íá ôõðïðïéÞóåôå êáôÜëëçëá ôá åêôåëÝóéìá (ü÷é ôéò âéâëéïèÞêåò!) ùò åöáñìïãÝò &linux;. Äåí èá ìðïñåßôå íá áðåãêáôáóôÞóåôå ôéò åöáñìïãÝò ìå êáèáñü ôñüðï, áëëÜ èá ìðïñÝóåôå íá êÜíåôå ôéò äïêéìÝò ðïõ åðéèõìåßôå.</para> </sect2> <sect2> <title>Ñýèìéóç ôïõ Hostname Resolver</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 server. ¼ôáí ôï <filename>/compat/linux/etc/host.conf</filename> äåí åßíáé äéáèÝóéìï, ïé åöáñìïãÝò Linux ÷ñçóéìïðïéïýí ôï <filename>/etc/host.conf</filename> ôïõ &os; êáé ðáñáðïíéïýíôáé üôé ç óýíôáîç ôïõ áñ÷åßïõ äåí åßíáé óùóôÞ. Èá ðñÝðåé íá áöáéñÝóåôå ôçí áíáöïñÜ óôï <literal>bind</literal> áí äåí Ý÷åôå ñõèìßóåé Ýíá name server ìÝóù ôïõ <filename>/etc/resolv.conf</filename>.</para> </sect2> </sect1> <sect1 id="linuxemu-mathematica"> <sect1info> <authorgroup> <author> <firstname>Boris</firstname> <surname>Hollas</surname> <contrib>Áíáíåþèçêå ãéá ôï Mathematica 5.X áðü ôïí </contrib> </author> </authorgroup> </sect1info> <title>Åãêáèéóôþíôáò ôï &mathematica;</title> <indexterm> <primary>applications</primary> <secondary><application>Mathematica</application></secondary> </indexterm> <para>Ôï êåßìåíï áõôü ðåñéãñÜöåé ôç äéáäéêáóßá åãêáôÜóôáóçò ôçò Ýêäïóçò Linux ôïõ <application>&mathematica; 5.X</application> óå Ýíá óýóôçìá &os;.</para> <para>Ìðïñåßôå íá áãïñÜóåôå ôçí êáíïíéêÞ Þ ìáèçôéêÞ Ýêäïóç ôïõ <application>&mathematica;</application> ãéá Linux, áðåõèåßáò áðü ôç Wolfram óôï <ulink url="http://www.wolfram.com/"></ulink>.</para> <sect2> <title>Ôï Ðñüãñáììá ÅãêáôÜóôáóçò ôïõ &mathematica;</title> <para>Áñ÷éêÜ, èá ðñÝðåé íá ðåßôå óôï &os; üôé ôá åêôåëÝóéìá ãéá Linux ôïõ <application>&mathematica;</application> êÜíïõí ÷ñÞóç ôïõ Linux ABI. Ï åõêïëüôåñïò ôñüðïò ãéá íá ôï êÜíåôå áõôü åßíáé íá ïñßóåôå ôïí ôýðï ôïõ ELF ùò Linux óå üëåò ôéò åöáñìïãÝò ðïõ äåí åßíáé Þäç branded, êÜíïíôáò ÷ñÞóç ôçò åíôïëÞò:</para> <screen>&prompt.root; <userinput>sysctl kern.fallback_elf_brand=3</userinput></screen> <para>Áõôü èá êÜíåé ôï &os; íá õðïèÝóåé üôé ôá åêôåëÝóéìá ELF ðïõ äåí åßíáé branded, êÜíïõí ÷ñÞóç ôïõ Linux ABI êáé Ýôóé èá ìðïñåßôå íá ôñÝîåôå ôï ðñüãñáììá ôçò åãêáôÜóôáóçò áðåõèåßáò áðü ôï CDROM.</para> <para>Ôþñá, áíôéãñÜøôå ôï áñ÷åßï <filename>MathInstaller</filename> óôïí óêëçñü óáò äßóêï:</para> <screen>&prompt.root; <userinput>mount /cdrom</userinput> &prompt.root; <userinput>cp /cdrom/Unix/Installers/Linux/MathInstaller /localdir/</userinput></screen> <para>Áíïßîôå ôï áñ÷åßï êáé áíôéêáôáóôÞóôå ôï <literal>/bin/sh</literal> óôç ðñþôç ãñáììÞ ìå ôï <literal>/compat/linux/bin/sh</literal>. Áõôü èá óéãïõñÝøåé üôé ôï ðñüãñáììá åãêáôÜóôáóçò èá ôñÝ÷åé ìå ôçí Ýêäïóç &man.sh.1; ãéá Linux. Óôç óõíÝ÷åéá, áíôéêáôáóôÞóôå üëåò ôéò åããñáöÝò <literal>Linux)</literal> ìå <literal>&os;)</literal> ÷ñçóéìïðïéþíôáò Ýíáí óõíôÜêôç êåéìÝíïõ Þ ìå ôï ðáñáêÜôù script óôçí åðüìåíç åíüôçôá. Áõôü èá ðåé óôï ðñüãñáììá åãêáôÜóôáóçò ôïõ <application>&mathematica;</application>, ôï ïðïßï ôñÝ÷åé ôçí åíôïëÞ <command>uname -s</command> ãéá íá äéáðéóôþóåé ôï ëåéôïõñãéêü óýóôçìá, íá áíôéìåôùðßóåé ôï &os; óáí Ýíá ëåéôïõñãéêü ðáñåìöåñÝò ìå ôï Linux. Ç åêôÝëåóç ôïõ <command>MathInstaller</command> èá îåêéíÞóåé ôþñá ôçí åãêáôÜóôáóç ôïõ <application>&mathematica;</application>.</para> </sect2> <sect2> <title>Ôñïðïðïéþíôáò ôá ÅêôåëÝóéìá ôïõ &mathematica;</title> <para>Ôá shell scripts ôá ïðïßá äçìéïõñãåß ôï <application>&mathematica;</application> êáôÜ ôç äéáäéêáóßá ôçò åãêáôÜóôáóçò ðñÝðåé íá ôñïðïðïéçèïýí ðñéí ÷ñçóéìïðïéçèïýí. Áí åðéëÝîåôå ôï <filename class="directory">/usr/local/bin</filename> ùò ôïí êáôÜëïãï ãéá ôá åêôåëÝóéìá ôïõ <application>&mathematica;</application>, èá âñåßôå åêåß óõìâïëéêïýò äåóìïýò (symlinks) ðñïò ôá áñ÷åßá <filename>math</filename>, <filename>mathematica</filename>, <filename>Mathematica</filename>, êáé <filename>MathKernel</filename>. Óå êÜèå ðåñßðôùóç áðü ôéò ðáñáðÜíù, áíôéêáôáóôÞóôå ôéò åããñáöÝò <literal>Linux)</literal> ìå <literal>&os;)</literal> ìå êÜðïéïí óõíôÜêôç êåéìÝíïõ Þ ìå ôï ðáñáêÜôù shell script:</para> <programlisting>#!/bin/sh cd /usr/local/bin for i in math mathematica Mathematica MathKernel do sed 's/Linux)/&os;)/g' $i > $i.tmp sed 's/\/bin\/sh/\/compat\/linux\/bin\/sh/g' $i.tmp > $i rm $i.tmp chmod a+x $i done</programlisting> </sect2> <sect2> <title>Áðïêôþíôáò Êùäéêü ãéá ôï &mathematica;</title> <indexterm> <primary>Ethernet</primary> <secondary>MAC address</secondary> </indexterm> <para>¼ôáí åêêéíÞóåôå ôï <application>&mathematica;</application> ãéá ðñþôç öïñÜ, èá åñùôçèåßôå ãéá Ýíáí êùäéêü. Áí äåí Ý÷åôå êÜðïéïí êùäéêü óå áõôü ôï óôÜäéï, ôñÝîôå ôï ðñüãñáììá <command>mathinfo</command> ðïõ âñßóêåôáé óôïí êáôÜëïãï åãêáôÜóôáóçò ãéá íá óáò äïèåß ôï <quote>machine ID</quote>. Ôï "machine ID" åßíáé åî' ïëïêëÞñïõ âáóéóìÝíï óôç äéåýèõíóç MAC ôçò êÜñôáò äéêôýïõ ðïõ Ý÷åôå. Áõôü óçìáßíåé üôé äåí ìðïñåßôå íá ôñÝîåôå ôï <application>&mathematica;</application> óå Üëëïõò õðïëïãéóôÝò. </para> <para>¼ôáí åããñáöåßôå óôç Wolfram, ìå e-mail, ôçëÝöùíï Þ fax, èá ÷ñåéáóôåß íá äþóåôå ôï <quote>machine ID</quote> êáé èá óáò áðáíôÞóïõí ìå Ýíáí áíôßóôïé÷ï êùäéêü ðïõ èá áðïôåëåßôáé áðü ìéá óåéñÜ áñéèìþí. </para> </sect2> <sect2> <title>ÔñÝ÷ïíôáò ôï &mathematica; Frontend ìÝóù Äéêôýïõ</title> <para>Ôï <application>&mathematica;</application> êÜíåé ÷ñÞóç êÜðïéùí åéäéêþí ãñáììáôïóåéñþí ãéá íá åìöáíßóåé ÷áñáêôÞñåò ïé ïðïßïé äåí õðÜñ÷ïõí óôá óõíçèéóìÝíá óåô (ïëïêëçñþìáôá, áèñïßóìáôá, ÅëëçíéêÜ ãñÜììáôá, êëð). To ðñùôüêïëëï X áðáéôåß áõôÝò ïé ãñáììáôïóåéñÝò íá õðÜñ÷ïõí óôï <emphasis>ôïðéêü</emphasis> óýóôçìá. Áõôü óçìáßíåé üôé èá ÷ñåéáóôåß íá áíôéãñÜøåôå ôéò ãñáììáôïóåéñÝò áõôÝò áðü ôï CDROM Þ áðü áðü êÜðïéïí Üëëïí õðïëïãéóôÞ ðïõ Ý÷åé ôï <application>&mathematica;</application>. ÓõíÞèùò áõôÝò ïé ãñáììáôïóåéñÝò ìðïñïýí íá âñåèïýí ìÝóá óôï êáôÜëïãï <filename>/cdrom/Unix/Files/SystemFiles/Fonts</filename> ôïõ CDROM, Þ óôïí êáôÜëïãï <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>Ôþñá ðñïóèÝóôå ôïõò íÝïõò êáôáëüãïõò ìå ôéò ãñáììáôïóåéñÝò óôï font path:</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> <indexterm><primary>fonts</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>applications</primary> <secondary><application>Maple</application></secondary> </indexterm> <para>Ôï <application>&maple;</application> åßíáé ìßá åìðïñéêÞ åöáñìïãÞ ìáèçìáôéêþí ðáñüìïéá ìå ôï <application>&mathematica;</application>. Èá ðñÝðåé íá áãïñÜóåôå ôï ëïãéóìéêü áðü ôï <ulink url="http://www.maplesoft.com/"></ulink> êáé óôç óõíÝ÷åéá íá êÜíåôå áßôçóç ãéá ìéá Üäåéá ÷ñÞóçò. Ãéá íá åãêáôáóôÞóåôå ôï ëïãéóìéêü óôï &os;, áêïëïõèÞóôå ôá ðáñáêÜôù áðëÜ âÞìáôá. </para> <procedure> <step> <para>ÅêôåëÝóôå ôï <filename>INSTALL</filename> shell script áðü ôï ìÝóï åãêáôÜóôáóçò ðïõ Ý÷åôå. ÅðéëÝîôå <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> license manager åêôåëþíôáò ôï <filename>INSTALL_LIC</filename> shell script ôï ïðïßá ðáñÝ÷åôáé ìáæß ìå ôï <application>&maple;</application>. Äþóôå ôï âáóéêü üíïìá ôïõ õðïëïãéóôÞ óáò ôï ïðïßï áðáéôåßôáé áðü ôïí åîõðçñåôçôÞ äéá÷åßñéóçò ôùí áäåéþí (license server).</para> </step> <step> <para>×ñçóéìïðïéÞóôå ôï ðáñáêÜôù patch óôï áñ÷åßï <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>Ôï patch áõôü ïäçãåß ôï <application>&maple;</application> íá áíáãíùñßóåé ôï <quote>&os;</quote> óáí Ýíá óýóôçìá Linux. Ôï <filename>bin/maple</filename> shell script êáëåß ôï <filename>bin/maple.system.type</filename> shell script, ôï ïðïßï ìå ôç óåéñÜ ôïõ êáëåß ôçí åíôïëÞ <command>uname -a</command> ðñïêåéìÝíïõ íá åíôïðéóôåß ôï üíïìá ôïõ ëåéôïõñãéêïý óõóôÞìáôïò. Áíáëüãùò ìå ôï ðïéï ëåéôïõñãéêü âñåèåß, èá ÷ñçóéìïðïéçèïýí êáé ôá áíôßóôïé÷á åêôåëÝóéìá áñ÷åßá.</para> </step> <step> <para>ÅêêéíÞóôå ôïí license server.</para> <para>¸íáò âïëéêüò ôñüðïò ãéá íá åêêéíÞóåôå ôï<command>lmgrd</command> åßíáé ôï áêüëïõèï script ðïõ âñßóêåôáé óôï <filename>/usr/local/etc/rc.d/lmgrd.sh</filename>:</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>Óå áõôü ôï óçìåßï èá ðñÝðåé íá åßíáé üëá Ýôïéìá êáé íá ìçí Ý÷åôå êáíÝíá ðñüâëçìá. Ìçí îå÷Üóåôå üìùò íá óôåßëåôå Ýíá e-mail óôç Maplesoft êáé íá ôïõò ðåßôå üôé èÝëåôå ìéá Ýêäïóç ðïõ íá õðïóôçñßæåôáé åðßóçìá óôï &os;.</para> </step> </procedure> <sect2> <title>ÓõíçèéóìÝíá ÐñïâëÞìáôá</title> <itemizedlist> <listitem> <para>ºóùò äõóêïëåõôåßôå ìå ôçí ëåéôïõñãßá ôïõ <application>FLEXlm</application> license manager. ÅðéðëÝïí ôåêìçñßùóç ìðïñåßôå íá âñåßôå óôï <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> åßíáé ôï üíïìá ôïõ óõóôÞìáôïò.</para> </note> <para>Ìðïñåßôå íá ôñïðïðïéÞóåôå ôï áñ÷åßï ôçò Üäåéáò ÷ñÞóçò, áñêåß íá ìçí áëëÜîåôå ôçí ãñáììÞ <quote>FEATURE</quote> (ç ïðïßá ðñïóôáôåýåôáé áðü ôï êëåéäß ôçò Üäåéáò).</para> </listitem> </itemizedlist> </sect2> </sect1> <sect1 id="linuxemu-matlab"> <sect1info> <authorgroup> <author> <firstname>Dan</firstname> <surname>Pelleg</surname> <contrib>ÓõíåéóöïñÜ ôïõ </contrib> </author> <!-- daniel+handbook@pelleg.org --> </authorgroup> </sect1info> <title>Åãêáèéóôþíôáò ôï &matlab;</title> <indexterm> <primary>applications</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>, üðùò óõíéóôÜ ôï script ôçò åãêáôÜóôáóçò. Ãéá íá îåêéíÞóåôå ôï script ôçò åãêáôÜóôáóçò äþóôå ôçí åíôïëÞ:</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> åßíáé ï ÷ñÞóôçò áðü üðïõ äþóáôå ôçí åíôïëÞ &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>ÔñïðïðïéÞóåôå ôï áñ÷åßï ôçò Üäåéáò (license file) óýìöùíá ìå ôéò ïäçãßåò ðïõ ëÜâáôå ìå ôçí Üäåéá ôïõ <application>&matlab;</application>.</para> <tip> <para>Ìðïñåßôå íá åôïéìÜóåôå åê ôùí ðñïôÝñùí ôï áñ÷åßï áõôü êáé íá ôï áíôéãñÜøåôå óôï <filename>$MATLAB/license.dat</filename>, ðñéí êáí óáò ðåé ôï ðñüãñáììá åãêáôÜóôáóçò íá ôï ôñïðïðïéÞóåôå.</para> </tip> </step> <step> <para>ÏëïêëÞñùóç ôçò ÅãêáôÜóôáóçò</para> </step> </procedure> <para>Óå áõôü ôï óçìåßï, ç åãêáôÜóôáóç ôïõ <application>&matlab;</application> Ý÷åé ïëïêëçñùèåß. Ôá åðüìåíá âÞìáôá ÷ñåéÜæïíôáé ãéá íá ìðïñÝóåôå íá ôï äïõëÝøåôå óùóôÜ ìå ôï &os;.</para> </sect2> <sect2> <title>Åêêßíçóç ôïõ License Manager</title> <procedure> <step> <para>Äçìéïõñãßá óõìâïëéêþí óõíäÝóìùí ãéá ôá scripts ôïõ license manager:</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>. Ôï ðáñÜäåéãìá ðáñáêÜôù åßíáé ìéá ôñïðïðïéçìÝíç Ýêäïóç ôïõ <filename>$MATLAB/etc/rc.lm.glnx86</filename>. Ïé áëëáãÝò åßíáé óôéò ôïðïèåóßåò ôùí áñ÷åßùí, êáé óôçí åêêßíçóç ôïõ license manager óôï ðåñéâÜëëïí åîïìïßùóçò Linux ôïõ &os; .</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> && echo 'MATLAB_lmgrd' fi ;; stop) if [ -f /usr/local/etc/lmdown_TMW ]; then /compat/linux/bin/sh /usr/local/etc/lmdown_TMW > /dev/null 2>&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>ÅêêéíÞóôå ôïí license manager ìå ôçí åíôïëÞ:</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>ÄçìéïõñãÞóôå ôï Script Åêêßíçóçò ôïõ &matlab; </title> <procedure> <step> <para>ÔïðïèåôÞóôå ôï ðáñáêÜôù script óôï <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>, ðïõ Ý÷åôå, ìðïñåß íá åìöáíéóôïýí ìåñéêÜ óöÜëìáôá üôáí ôñÝîåôå ôï script. Ãéá íá ôï áðïöýãåôå áõôü, ôñïðïðïéÞóôå ôï áñ÷åßï <filename>/compat/linux/usr/local/matlab/bin/matlab</filename>, êáé áëëÜîôå ôç ãñáììÞ ðïõ ëÝåé:</para> <programlisting>if [ `expr "$lscmd" : '.*->.*'` -ne 0 ]; then</programlisting> <para>(óôçí Ýêäïóç 13.0.1 âñßóêåôáé óôç ãñáììÞ 410) óå áõôÞ ôç ãñáììÞ:</para> <programlisting>if test -L $newbase; then</programlisting> </tip> </sect2> <sect2> <title>Äçìéïõñãßá Script Ôåñìáôéóìïý ôïõ &matlab; </title> <para>Ôá åðüìåíá âÞìáôá ÷ñåéÜæïíôáé ãéá íá ëýóåôå Ýíá ðñüâëçìá ðïõ õðÜñ÷åé ìå ôïí ôåñìáôéóìü ôïõ &matlab;.</para> <procedure> <step> <para>ÄçìéïõñãÞóôå ôï áñ÷åßï <filename>$MATLAB/toolbox/local/finish.m</filename>, êáé ìÝóá óå áõôü ðñïóèÝóôå ìüíï ôç ãñáììÞ:</para> <programlisting>! $MATLAB/bin/finish.sh</programlisting> <note> <para>To <literal>$MATLAB</literal> ãñÜøôå ôï áêñéâþò üðùò ôï âëÝðåôå.</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>#!/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>applications</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 óå Ýíá óýóôçìá &os;.</para> </sect2> <sect2> <title>ÅãêáôÜóôáóç ôïõ ÐåñéâÜëëïíôïò Linux</title> <para>Óéãïõñåõôåßôå üôé Ý÷åôå åãêáôáóôÞóåé ôá <filename role='package'>emulators/linux_base</filename> êáé <filename role='package'>devel/linux_devtools</filename> áðü ôç óõëëïãÞ ôùí Ports. Áí áíôéìåôùðßæåôå äõóêïëßåò ìå ôá ðáñáðÜíù, ßóùò ÷ñåéáóôåß íá ôá åãêáôáóôÞóåôå áðü ðáêÝôá Þ áðü ðáëéüôåñåò åêäüóåéò ôçò óõëëïãÞò ôùí Ports.</para> <para>Áí èÝëåôå íá ôñÝîåôå ôïí intelligent agent, èá ÷ñåéáóôåß íá åãêáôáóôÞóåôå êáé ôï ðáêÝôï Red Hat Tcl: <filename>tcl-8.0.3-20.i386.rpm</filename>. Ç åíôïëÞ ãéá ôçí åãêáôÜóôáóç ìÝóù ôïõ åðßóçìïõ <application>RPM</application> port (<filename role='package'>archivers/rpm</filename>) åßíáé:</para> <screen>&prompt.root; <userinput>rpm -i --ignoreos --root /compat/linux --dbpath /var/lib/rpm <replaceable>package</replaceable></userinput></screen> <para>Ç åãêáôÜóôáóç ôïõ <replaceable>package</replaceable> èá ðñÝðåé íá ãßíåé ïìáëÜ êáé ÷ùñßò ðñïâëÞìáôá.</para> </sect2> <sect2> <title>Ñõèìßæïíôáò ôï ÐåñéâÜëëïí ãéá ôçí &oracle; </title> <para>Ðñéí ôçí åãêáôÜóôáóç ôçò <application>&oracle;</application>, èá ðñÝðåé íá ñõèìßóåôå óùóôÜ ôï ðåñéâÜëëïí ôïõ óõóôÞìáôüò óáò. Ôï ðáñáêÜôù êåßìåíï ðåñéãñÜöåé ôé <emphasis>áêñéâþò</emphasis> ðñÝðåé íá êÜíåôå ãéá íá åêôåëÝóåôå ôçí <application>&oracle;</application> ãéá Linux óôï &os;, êáé äåí ðåñéãñÜöåé üôé õðÜñ÷åé Þäç óôïí ïäçãü åãêáôÜóôáóçò ôçò <application>&oracle;</application>.</para> <sect3 id="linuxemu-kernel-tuning"> <title>Ñýèìéóç ôïõ ÐõñÞíá</title> <indexterm><primary>kernel tuning</primary></indexterm> <para>¼ðùò ðåñéãñÜöåé ï ïäçãüò åãêáôÜóôáóçò ôçò <application>&oracle;</application>, èá ðñÝðåé íá ïñßóåôå ôéò ôéìÝò ôçò shared memory óôï ìÝãéóôï. Ìçí ÷ñçóéìïðïéÞóåôå ôï <literal>SHMMAX</literal> óôï &os;. Ôï <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 shared memory options SYSVSEM #SysV semaphores options SYSVMSG #SysV interprocess communication</programlisting> </sect3> <sect3 id="linuxemu-oracle-account"> <title>Ï ×ñÞóôçò &oracle;</title> <para>ÄçìéïõñãÞóôå Ýíá ÷ñÞóôç óõóôÞìáôïò ìå üíïìá <username>oracle</username>, ìå ôïí ßäéï ôñüðï ðïõ èá äçìéïõñãïýóáôå êáé ïðïéïíäÞðïôå Üëëïí ÷ñÞóôç. Ôï ìüíï éäéáßôåñï ÷áñáêôçñéóôéêü ôïõ ÷ñÞóôç <username>oracle</username> åßíáé üôé ÷ñåéÜæåôáé íá ôïõ äþóåôå Ýíá êÝëõöïò Linux. ÐñïóèÝóôå ôï <literal>/compat/linux/bin/bash</literal> óôï <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, èá ÷ñåéáóôåß íá äçìéïõñãÞóåôå Ýíáí êáôÜëïãï ìå ôï üíïìá <filename>.oracle</filename> ìÝóá óôï <filename>/var/tmp</filename>, ðñéí îåêéíÞóåôå ôï ðñüãñáììá åãêáôÜóôáóçò. Ï êáôÜëïãïò áõôüò èá ðñÝðåé íá áíÞêåé óôïí ÷ñÞóôç <username>oracle</username>. Èá ðñÝðåé ôþñá íá ðñáãìáôïðïéÞóåôå ôçí åãêáôÜóôáóç ôçò <application>&oracle;</application> äß÷ùò êáíÝíá ðñüâëçìá. Áí áíôéìåôùðßæåôå üìùò áêüìç ðñïâëÞìáôá, åëÝãîôå ôçí Ýêäïóç ôçò <application>&oracle;</application> ðïõ Ý÷åôå Þ/êáé ôéò ñõèìßóåéò óáò! Áöüôïõ Ý÷åôå ðñáãìáôïðïéÞóåé ôçí åãêáôÜóôáóç ôçò <application>&oracle;</application>, åöáñìüóôå ôá patches ðïõ ðåñéãñÜöïíôáé óôéò äýï ðáñáêÜôù åíüôçôåò.</para> <para>¸íá óõ÷íü ðñüâëçìá åßíáé üôé äåí ãßíåôáé óùóôÞ åãêáôÜóôáóç ôïõ ðñïóáñìïãÝá ôïõ ðñùôïêüëëïõ TCP. Áõôü Ý÷åé ùò áðïôÝëåóìá íá ìçí ìðïñåßôå íá îåêéíÞóåôå ôïõò TCP listeners. Ïé áêüëïõèåò ïäçãßåò èá óáò âïçèÞóïõí íá ëýóåôå áõôü ôï ðñüâëçìá.:</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>, êáôáãñÜöïíôáé óå Ýíá shell script ðïõ ëÝãåôáé <filename>root.sh</filename>. Ôï script áõôü äçìéïõñãåßôáé óôïí êáôÜëïãï <filename>orainst</filename>. Åöáñìüóôå ôï ðáñáêÜôù patch óôï <filename>root.sh</filename>, ãéá íá ìðïñÝóåé íá âñåé êáé íá ÷ñçóéìïðïéÞóåé ôï <command>chown</command>. ÅíáëëáêôéêÜ, ôñÝîôå ôï script ìÝóá áðü Ýíá êÝëõöïò 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>¼ôáí äåí êÜíåôå ÷ñÞóç ôïõ CD ãéá ôçí åãêáôÜóôáóç, ìðïñåßôå íá ðåñÜóåôå ôï patch ãéá ôï <filename>root.sh</filename>, óôçí ðçãÞ åãêáôÜóôáóçò. To áñ÷åßï ïíïìÜæåôáé <filename>rthd.sh</filename> êáé âñßóêåôáé óôïí êáôÜëïãï <filename>orainst</filename>.</para> </sect3> <sect3 id="linuxemu-patch-tcl"> <title>Äéüñèùóç ôïõ genclntsh</title> <para>To script <command>genclntsh</command> ÷ñçóéìïðïéåßôáé ãéá íá äçìéïõñãÞóåé ìéá shared client library. ÔñÝîôå ôï ðáñáêÜôù patch ãéá íá óâÞóåôå ôï êáèïñéóìÝíï <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="linuxemu-advanced"> <title>Ðñï÷ùñçìÝíá ÈÝìáôá</title> <para>Áí Ý÷åôå ôçí áðïñßá ðùò ëåéôïõñãåß ç óõìâáôüôçôá ìå åöáñìïãÝò Linux, ôüôå èá ðñÝðåé íá äéáâÜóåôå ôç ðáñáêÜôù åíüôçôá. Ôá ðåñéóóüôåñá áðü üóá Ý÷ïõí ãñáöôåß åßíáé âáóéóìÝíá óôçí &a.chat; êáé Ý÷ïõí ãñáöôåß áðü ôïí Terry Lambert <email>tlambert@primenet.com</email> (Message ID: <literal><199906020108.SAA07001@usr09.primenet.com></literal>). </para> <sect2> <title>Ðùò Ëåéôïõñãåß;</title> <indexterm><primary>execution class loader</primary></indexterm> <para>Ôï &os; ðåñéÝ÷åé Ýíá åðßðåäï áöáßñåóçò (abstraction) ðïõ ïíïìÜæåôáé <quote>execution class loader</quote>. Áõôü âáóßæåôáé óôï &man.execve.2;.</para> <para>Áõôü ðïõ óõìâáßíåé åßíáé üôé ôï &os; Ý÷åé ìéá ëßóôá öïñôùôþí (loaders), áíôß ãéá Ýíá ðïõ íá êáôáöåýãåé óå ðåñßðôùóç áðïôõ÷ßáò óôï <literal>#!</literal> ãéá íá ôñÝîåé êÜðïéï shell interpreter Þ shell script.</para> <para>ÉóôïñéêÜ, ï ìüíïò öïñôùôÞò óôç ðëáôöüñìá ôïõ &unix; Ýëåã÷å ôïí ìáãéêü áñéèìü (ãåíéêÜ ôá ðñþôá 4 Þ 8 bytes ôïõ áñ÷åßïõ) ãéá íá äåé áí åßíáé êÜðïéï åêôåëÝóéìï / åöáñìïãÞ ãíùóôü óôï óýóôçìá, êáé óôçí ðåñßðôùóç áõôÞ íá êáëÝóåé ôïí áíôßóôïé÷ï öïñôùôÞ.</para> <para>Áí ôï áñ÷åßï äåí Þôáí åêôåëÝóéìï ìå âÜóç ôïí ôýðï ôïõ óõóôÞìáôïò, ç êëÞóç óôï &man.execve.2; åðÝóôñåöå êÜðïéï óöÜëìá, êáé ôï shell ðñïóðáèïýóå íá åêôåëÝóåé ôï áñ÷åßï óáí shell script.</para> <para>Ç ãåíéêÞ éäÝá Þôáí <quote>áí äåí åßíáé åêôåëÝóéìï, ðñïóðÜèçóå íá ôï ôñÝîåéò ùò shell script ìå âÜóç ôï ôñÝ÷ïí shell </quote>.</para> <para>Áñãüôåñá, âñÝèçêå Ýíáò Ýîõðíïò ôñüðïò þóôå ôï &man.sh.1; íá åëÝã÷åé ôïõò ðñþôïõò äýï ÷áñáêôÞñåò, êáé áí Þôáí <literal>:\n</literal>, ôüôå êáëïýóå ôï shell &man.csh.1; (ðéóôåýïõìå ðùò ç ëýóç áõôÞ âñÝèçêå áñ÷éêÜ áðü ôç SCO).</para> <para>Áõôü ðïõ êÜíåé ôþñá ôï &os; åßíáé íá äéáôñÝ÷åé ôç ëßóôá ìå üëïõò ôïõò öïñôùôÝò, ìå Ýíá ãåíéêü öïñôùôÞ <literal>#!</literal> ï ïðïßïò áíáãíùñßæåé ùò äéåñìçíÝá (interpreter) ôïõò ÷áñáêôÞñåò áðü ôï åðüìåíï êåíü ìåôÜ ôï <literal>!</literal> êáé ìÝ÷ñé ôï ôÝëïò, åíþ áí äåí áíáãíùñéóôåß êÜðïéïò, ÷ñçóéìïðïéåßôáé ùò Ýó÷áôç ëýóç ôï <filename>/bin/sh</filename>.</para> <indexterm><primary>ELF</primary></indexterm> <para>Ãéá ôçí õðïóôÞñéîç ôïõ Linux ABI, ôï &os; âëÝðåé ôïí ìáãéêü áñéèìü ôïõ ELF binary (äå áíáãíùñßæåé ôç äéáöïñÜ áíÜìåóá óå &os;, &solaris;, Linux, Þ êÜðïéï Üëëï ëåéôïõñãéêü óýóôçìá ôï ïðïßï ÷ñçóéìïðïéåß áñ÷åßá ôýðïõ ELF).</para> <indexterm><primary>Solaris</primary></indexterm> <para>Ï öïñôùôÞò ELF êïéôÜåé ãéá Ýíá åéäéêü <emphasis>brand</emphasis>, ôï ïðïßï åßíáé ìéá åíüôçôá ó÷ïëßùí ìÝóá óôï ELF image, êáé ôï ïðïßï äåí õðÜñ÷åé óå ELF binaries ãéá SVR4/&solaris;</para> <para>Ãéá íá ëåéôïõñãÞóïõí ôá åêôåëÝóéìá ôïõ Linux, èá ðñÝðåé íá ãßíïõí <emphasis>branded</emphasis> (ìáñêáñéóôïýí) ùò <literal>Linux</literal> ìÝóù ôçò &man.brandelf.1;:</para> <screen>&prompt.root; <userinput>brandelf -t Linux file</userinput></screen> <para>¼ôáí ãßíåé áõôü, ï öïñôùôÞò ELF èá âëÝðåé ôï <literal>Linux</literal> brand ðÜíù óôï áñ÷åßï.</para> <indexterm> <primary>ELF</primary> <secondary>branding</secondary> </indexterm> <para>¼ôáí ï öïñôùôÞò ELF äåé ôï <literal>Linux</literal> brand, èá áíôéêáôáóôÞóåé Ýíáí äåßêôç ìÝóá óôç äïìÞ <literal>proc</literal>. ¼ëåò ïé êëÞóåéò ôïõ óõóôÞìáôïò ôáîéíïìïýíôáé ìÝóá áðü áõôüí ôïí äåßêôç (óå Ýíá ðáñáäïóéáêü óýóôçìá &unix;, ï äåßêôçò èá Þôáí ï ðßíáêáò <literal>sysent[]</literal>, ðïõ ðåñéÝ÷åé ôéò êëÞóåéò ôïõ óõóôÞìáôïò (system calls)). ÅðéðëÝïí, ç äéåñãáóßá óçìåéþíåôáé ãéá åéäéêÞ ìåôá÷åßñéóç ôïõ trap vector êáé Üëëåò (ìéêñÝò) äéïñèþóåéò, ôéò ïðïßåò ÷åéñßæåôáé ôï Üñèñùìá ðõñÞíá ôçò óõìâáôüôçôáò Linux.</para> <para>Ôï system call vector ôïõ Linux ðåñéÝ÷åé, ìåôáîý Üëëùí, ìéá ëßóôá ìå ôá äåäïìÝíá ôïõ <literal>sysent[]</literal> ôùí ïðïßùí ïé äéåõèýíóåéò âñßóêïíôáé ìÝóá óôï Üñèñùìá ôïõ ðõñÞíá.</para> <para>¼ôáí ãßíåôáé ìéá êëÞóç óõóôÞìáôïò áðü ìéá åöáñìïãÞ Linux, ï êþäéêáò (trap code) ôñïðïðïéåß ôïí äåßêôç ôçò ìÝóù ôçò äïìÞò ðïõ Ý÷åé åããñáöåß óôï <literal>proc</literal>, êáé áëëÜæåé ôçí äéåýèõíóç þóôå íá äåß÷íåé óôï óçìåßï åéóüäïõ ôçò óõíÜñôçóçò ôïõ Linux, êáé ü÷é ôïõ &os;.</para> <para>Åðßóçò, ôï óýóôçìá óõìâáôüôçôáò ìå Linux ìðïñåß êáé ðñïóáñìüæåé äõíáìéêÜ ôéò ôïðïèåóßåò áíáæÞôçóçò. ÏõóéáóôéêÜ áõôü êÜíåé êáé ç åðéëïãÞ <option>union</option> êáôÜ ôçí ðñïóÜñôçóç åíüò óõóôÞìáôïò áñ÷åßùí (<emphasis>äåí</emphasis> åííïïýìå åäþ ôï óýóôçìá áñ÷åßùí <literal>unionfs</literal>!). Áñ÷éêÜ, ãßíåôáé áðüðåéñá íá âñåèåß ôï áñ÷åßï óôïí êáôÜëïãï <filename>/compat/linux/<replaceable>original-path</replaceable></filename>, <emphasis>êáé ìüíï</emphasis> áí áõôü áðïôý÷åé, èá ãßíåé áíáæÞôçóç óôïí êáôÜëïãï <filename>/<replaceable>original-path</replaceable></filename>. Ìå ôïí ôñüðï áõôü óéãïõñåýïõìå üôé ôá åêôåëÝóéìá ðïõ ÷ñåéÜæïíôáé Üëëá åêôåëÝóéìá èá ôñÝîïõí (ãéá ðáñÜäåéãìá, ôï óýíïëï åñãáëåßùí ôïõ Linux ìðïñåß íá åêôåëåóôåß ìÝóù ôçò õðïóôÞñéîçò ôïõ Linux ABI). Åðßóçò óçìáßíåé üôé ôá åêôåëÝóéìá ôïõ Linux ìðïñïýí íá öïñôþóïõí êáé íá åêôåëÝóïõí áñ÷åßá ôïõ &os; áí äåí ìðïñïýí íá åíôïðßóïõí ôá áíôßóôïé÷á áñ÷åßá óôï Linux. Ìðïñåßôå åðßóçò íá ôïðïèåôÞóåôå ìéá åíôïëÞ &man.uname.1; ìÝóá óôï <filename>/compat/linux</filename> ðñïêåéìÝíïõ ôá áñ÷åßá ôïõ Linux íá ìç ìðïñïýí íá áíáãíùñßóïõí üôé äåí ÷ñçóéìïðïéïýíôáé ðñáãìáôéêÜ óå Linux.</para> <para>ÏõóéáóôéêÜ, õðÜñ÷åé Ýíáò ðõñÞíáò Linux ìÝóá óôïí ðõñÞíá ôïõ &os;. Ïé äéÜöïñåò ëåéôïõñãßåò ïé ïðïßåò õëïðïéïýí üëåò ôéò õðçñåóßåò ðïõ ðáñÝ÷ïíôáé áðü ôïí ðõñÞíá åßíáé ßäéåò ôüóï óôïí ðßíáêá êëÞóåùí óõóôÞìáôïò ôïõ &os; üóï êáé óôïí áíôßóôïé÷ï ôïõ Linux: ëåéôïõñãßåò ôïõ óõóôÞìáôïò áñ÷åßùí, åéêïíéêÞ ìíÞìç, äéá÷åßñéóç óçìÜôùí, System V IPC êëð. Ç ìüíç äéáöïñÜ åßíáé üôé ôï åêôåëÝóéìá ôïõ &os; êÜíïõí ÷ñÞóç ôùí óõíáñôÞóåùí <emphasis>glue</emphasis> ôïõ &os;, åíþ ôá åêôåëÝóéìá ôïõ Linux, êÜíïõí ÷ñÞóç ôùí óõíáñôÞóåùí <emphasis>glue</emphasis> ôïõ Linux (ðïëëÜ áðü ôá ðáëéÜ ëåéôïõñãéêÜ åß÷áí ôéò äéêÝò ôïõò óõíáñôÞóåéò <emphasis>glue</emphasis>: ïé äéåõèýíóåéò ôùí óõíáñôÞóåùí âñßóêïíôáí óôï óôáôéêü ðßíáêá <literal>sysent[]</literal>, áíôß íá äéåõêñéíßæïíôáé ìÝóù åíüò äõíáìéêïý äåßêôç óôç äïìÞ <literal>proc</literal> ôçò äéåñãáóßáò ðïõ ðñáãìáôïðïéåß ôçí êëÞóç).</para> <para>Ðïéï åßíáé üìùò ôï åããåíÝò &os; ABI; Äåí Ý÷åé êáé ðïëý óçìáóßá. Ç ìüíç âáóéêÞ äéáöïñÜ åßíáé (êÜôé ôï ïðïßï ìðïñåß åýêïëá íá áëëÜîåé óå ìåëëïíôéêÝò åêäüóåéò, êáé ðïëý ðéèáíüí íá áëëÜîåé) üôé ïé óõíáñôÞóåéò <emphasis>glue</emphasis> ôïõ &os; åßíáé óôáôéêÜ óõíäåäåìÝíåò óôï ðõñÞíá, åíþ ïé áíôßóôïé÷åò ôïõ Linux ìðïñïýí åßôå íá åßíáé óõíäåäåìÝíåò óôáôéêÜ, åßôå íá åßíáé ðñïóâÜóéìåò ìÝóù åíüò áñèñþìáôïò ðõñÞíá.</para> <para>Åßíáé áõôü üìùò ðñáãìáôéêÞ åîïìïßùóç; ¼÷é. Åßíáé ìéá õëïðïßçóç ôïõ ABI, ü÷é åîïìïßùóç. Äåí õðÜñ÷åé êáìßá åîïìïßùóç (Þ ðñïóïìïßùóç, ãéá íá ðñïëÜâïõìå ôçí åðüìåíç óáò åñþôçóç).</para> <para>Ôüôå ãéáôß ìåñéêÝò öïñÝò ìéëÜìå ãéá <quote>åîïìïßùóç Linux</quote>; Ãéá íá äõóêïëåõôåß ç ðñïþèçóç ôïõ &os;! Ç áñ÷éêÞ õëïðïßçóç Ýãéíå ôçí åðï÷Þ üðïõ äåí õðÞñ÷å Üëëç ëÝîç ðïõ íá ìðïñïýóå íá ðåñéãñÜøåé ôï ôé áêñéâþò ãéíüôáí. Ôï íá ëÝãáìå üôé ôï &os; Ýôñå÷å åêôåëÝóéìá Linux äåí èá Þôáí áëÞèåéá, ìéá êáé ÷ñåéáæüôáí íá åíóùìáôùèåß êÜðïéïò êþäéêáò óôïí ðõñÞíá, Þ íá öïñôùèåß êÜðïéï Üñèñùìá. ×ñåéáæüôáí êÜðïéá ëÝîç ðïõ íá ðåñéãñÜöåé ôé öïñôùíüôáí—Ýôóé ðñïÝêõøå ï <quote>åîïìïéùôÞò Linux</quote>. </para> </sect2> </sect1> </chapter>