doc/el_GR.ISO8859-7/books/handbook/linuxemu/chapter.sgml
Gabor Kovesdan 7ba98a21ad MFH
Approved by:	doceng (implicit)
2012-08-19 23:05:52 +00:00

1451 lines
56 KiB
XML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?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;&nbsp;&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) =&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>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 -&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 shared library
που ο αριθμός έκδοσης είναι ο ίδιος με αυτόν της πρώτης στήλης
του <command>ldd</command>, δε θα χρειαστεί να αντιγράψετε το
αρχείο όπως αυτό ονομάζεται στη τελευταία στήλη, τα υπάρχοντα
αρχεία θα πρέπει να κάνουν τη δουλειά τους. Σας συμβουλεύουμε
όμως να αντιγράψετε το shared library αν είναι κάποια νεότερη
έκδοση. Μπορείτε να διαγράψετε τα παλιά αρχεία, αρκεί όμως να
ανανεώσετε τους συμβολικούς δεσμούς ώστε να οδηγούν στα νέα
αρχεία. Επομένως, αν έχετε τις παρακάτω βιβλιοθήκες στο
σύστημά σας:</para>
<screen>/compat/linux/lib/libc.so.4.6.27
/compat/linux/lib/libc.so.4 -&gt; libc.so.4.6.27</screen>
<para>και βρείτε μια εφαρμογή η οποία ζητάει μια νεότερη έκδοση
μέσω του <command>ldd</command>:
</para>
<screen>libc.so.4 (DLL Jump 4.5pl26) -&gt; libc.so.4.6.29</screen>
<para>Αν η διαφορά της έκδοσης στο τελευταία ψηφίο είναι μόνο
μίας ή δύο εκδόσεων, τότε μην σας απασχολεί η αντιγραφή του
<filename>/lib/libc.so.4.6.29</filename>, γιατί το πρόγραμμα
θα πρέπει να τρέχει κανονικά και με τη λίγο παλαιότερη έκδοση.
Παρ' όλα αυτά, αν θέλετε, μπορείτε να αντικαταστήσετε το
<filename>libc.so</filename> και έτσι θα έχετε το παρακάτω:
</para>
<screen>/compat/linux/lib/libc.so.4.6.29
/compat/linux/lib/libc.so.4 -&gt; libc.so.4.6.29</screen>
</note>
</blockquote>
<blockquote>
<note>
<para>Ο μηχανισμός των συμβολικών συνδέσμων χρειάζεται
<emphasis>μόνο</emphasis> για τις εφαρμογές του Linux. Ο
runtime 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 &lt; /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 &gt; $i.tmp
sed 's/\/bin\/sh/\/compat\/linux\/bin\/sh/g' $i.tmp &gt; $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&gt;&gt; ${LOG} 1&gt;&2
echo -n " lmgrd"
;;
stop)
lmgrd -c ${LICENSE_FILE} -x lmdown 2&gt;&gt; ${LOG} 1&gt;&2
;;
*)
echo "Usage: `basename $0` {start|stop}" 1&gt;&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> &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>Εκκινήστε τον 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" : '.*-&gt;.*'` -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>&lt;199906020108.SAA07001@usr09.primenet.com&gt;</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 δεν θα ήταν αλήθεια,
μια και χρειαζόταν να ενσωματωθεί κάποιος κώδικας στον πυρήνα, ή να
φορτωθεί κάποιο άρθρωμα. Χρειαζόταν κάποια λέξη που να περιγράφει τι
φορτωνόταν&mdash;έτσι προέκυψε ο <quote>εξομοιωτής Linux</quote>.
</para>
</sect2>
</sect1>
</chapter>