old-www/LDP/LG/issue53/issue53.html

10374 lines
413 KiB
HTML
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<HTML>
<HEAD>
<TITLE> Linux Gazette Table of Contents LG #53</TITLE>
<META NAME="robots" CONTENT="noindex, nofollow">
</HEAD>
<BODY BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#0000FF" VLINK="#0000AF"
ALINK="#FF0000" >
<center>
<!-- A HREF="http://www.linuxgazette.com/">
<H1><IMG SRC="../gx/newlogo.jpg" ALT="LINUX GAZETTE" border="0"></H1></A> -->
<A HREF="http://www.linuxgazette.com/">
<H1><IMG ALT="LINUX GAZETTE" SRC="../gx/lglogo.jpg"
WIDTH="600" HEIGHT="124" border="0"></H1></A>
<H2>May 2000, Issue 53 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
Published by <I>Linux Journal</I></H2>
<A HREF=../index.html>Front Page</A> &nbsp;|&nbsp;
<A HREF=../index.html>Back Issues</A> &nbsp;|&nbsp;
<A HREF=../faq/index.html>FAQ</A> &nbsp;|&nbsp;
<A HREF=../mirrors.html>Mirrors</A> &nbsp;|&nbsp;
<A HREF=http://www.linuxgazette.com/search.html>Search</A>
</center>
<!--=================================================================-->
<table>
<TR>
<TD COLSPAN="3" WIDTH="100%" BGCOLOR="#000000"><IMG
SRC="../gx/hammel/cleardot.gif" ALT="" HSPACE=30 VSPACE=2 HEIGHT=1
WIDTH=1 ALIGN=LEFT></TD>
<TD></TD>
</TR>
<tr><td>
<table>
<tr>
<td VALIGN="top"><H1><font color="#BB0000">Visit Our Sponsors:</font></H1></td></tr>
<!-- *** BEGIN sponsors *** -->
<TR><TD>
<A HREF="http://www.linuxjournal.com"><IMG ALT="Linux Journal" SRC="../gx/ljtop.gif" BORDER="0" VSPACE="10"></A>
</TD></TR>
<TR><TD>
<A HREF="http://www.pervasive.com/linuxgazette"><IMG ALT="Pervasive Software" SRC="../gx/sponsors/pervasive.gif" BORDER="0" VSPACE="10"></A>
</TD></TR>
<TR><TD>
<A HREF="http://www.linuxcare.com"><IMG ALT="LinuxCare" SRC="../gx/linuxcare.gif" BORDER="0" VSPACE="10"></A>
</TD></TR>
<TR><TD>
<A HREF="http://www.linuxmall.com/"><IMG ALT="LinuxMall" SRC="../gx/linuxmall.gif" BORDER="0" VSPACE="10"></A>
</TD></TR>
<TR><TD>
<A HREF="http://www.linuxjournal.com/lr-toc.html"><IMG ALT="Linux Resources" SRC="../gx/linux6.gif" BORDER="0" VSPACE="10"></A>
</TD></TR>
<TR><TD>
<A HREF="http://www.cygnus.com"><IMG ALT="Cygnus Solutions" SRC="../gx/sponsors/cygnus.gif" BORDER="0" VSPACE="10"></A>
</TD></TR>
<TR><TD>
<A HREF="http://www.vmware.com"><IMG ALT="VMware" SRC="../gx/sponsors/vmware.jpg" BORDER="0" VSPACE="10"></A>
</TD></TR>
<TR><TD>
<A HREF="http://www.infomagic.com"><IMG ALT="InfoMagic" SRC="../gx/infologo.gif" BORDER="0" VSPACE="10"></A>
</TD></TR>
<!-- *** END sponsors *** -->
</table>
</td>
<!--==================================================================-->
<TD ROWSPAN="3" WIDTH="2" BGCOLOR="#000000" NOSAVE><IMG
SRC="../gx/hammel/cleardot.gif" ALT="" HSPACE=1 HEIGHT=1 WIDTH=1%></TD>
<td VALIGN=top>
<H1><font color="#BB0000">Table of Contents:</font></H1>
<!-- *** BEGIN toc *** -->
<UL>
<LI> <a HREF="lg_mail53.html">The MailBag</A>
<UL>
<LI> <a HREF="lg_mail53.html#help">Help Wanted &amp; Article Ideas</A>
<LI> <a HREF="lg_mail53.html#gen">General Mail</A>
</UL>
<LI> <a HREF="lg_bytes53.html">News Bytes</A>
<UL>
<LI> <a HREF="lg_bytes53.html#distro">Distro News</A>
<LI> <a HREF="lg_bytes53.html#general">News in General</A>
<LI> <a HREF="lg_bytes53.html#software">Software Announcements</A>
</UL>
<LI> <a HREF="lg_answer53.html">The Answer Guy</A> , <EM>by James T. Dennis</EM>
<LI> <a HREF="lg_tips53.html">More 2-Cent Tips</A>
<LI> <a HREF="baptista.html">Graphical Programs</A> , <EM>by Paulo Henrique Baptista de Oliveira</EM>
<LI> <a HREF="boldyshev.html">Introduction to UNIX Assembly Programming</A> , <EM>by Konstantin Boldyshev</EM>
<LI> <a HREF="collinge.html">HelpDex</A> , <EM>by Shane Collinge</EM>
<LI> <a HREF="correa1.html">Miguel de Icaza on Gnome and His New Company HelixCode</A> , <EM>by Fernando Ribeiro Corr&ecirc;a</EM>
<LI> <a HREF="correa2.html">KDE2 is Just Around the Corner. Are You Curious?</A> , <EM>by Fernando Ribeiro Corr&ecirc;a</EM>
<LI> <a HREF="correa3.html">Linux in France: Guess Mandraksoft's Next Move</A> , <EM>by Fernando Ribeiro Corr&ecirc;a</EM>
<LI> <a HREF="eyler.html">Functions and aliases in bash</A> , <EM>by Pat Eyler</EM>
<LI> <a HREF="lamb.html">Linux Site O' The Month: SourceForge</A> , <EM>by Sean Lamb</EM>
<LI> <a HREF="okopnik.html">Introduction to Shell Scripting</A> , <EM>by Ben Okopnik</EM>
<LI> <a HREF="sipos.html">Setting Up International Keyboards</A> , <EM>by Juraj Sipos</EM>
<LI> <a HREF="stagner.html">Connecting to Your Home Computer</A> , <EM>by Robert Stagner</EM>
<LI> <a HREF="ward.html">Some issues on floating-point precision under Linux</A> , <EM>by Alan Ward</EM>
<LI> <a HREF="lg_backpage53.html">The Back Page</A>
<UL>
<LI> <a HREF="lg_backpage53.html#authors">About This Month's Authors</A>
<LI> <a HREF="lg_backpage53.html#notlinux">Not Linux</A>
</UL>
</UL>
<!-- *** END toc *** -->
</td>
</tr>
<TR>
<TD COLSPAN="3" WIDTH="100%" BGCOLOR="#000000"><IMG
SRC="../gx/hammel/cleardot.gif"
ALT="-------------------------------------------------------------"
HSPACE=30 VSPACE=2 HEIGHT=1 WIDTH=1 ALIGN=LEFT></TD>
<TD></TD>
</TR>
</table>
<!--=============================================================-->
<P>
<table>
<tr><td>
<A HREF="issue53.txt.gz">TWDT 1 (gzipped text file)</A><BR>
<A HREF="issue53.html">TWDT 2 (HTML file)</A><BR>
are files containing the entire issue: one in text format, one in HTML.
They are provided
strictly as a way to save the contents as one file for later printing in
the format of your choice;
there is no guarantee of working links in the HTML version.
</td></tr>
<!--==================================================================-->
<TR>
<TD COLSPAN="3" WIDTH="100%" BGCOLOR="#000000"><IMG
SRC="../gx/hammel/cleardot.gif" ALT="" HSPACE=30 VSPACE=2 HEIGHT=1
WIDTH=1 ALIGN=LEFT></TD>
<TD></TD>
</TR>
<tr><td>
<center>
<I>Linux Gazette</I><img alt="[tm]" src="../gx/tm.gif">,
<A HREF="http://www.linuxgazette.com/">http://www.linuxgazette.com/</A><BR>
This page maintained by the Editor of <I>Linux Gazette</I>,
<A HREF="mailto: gazette@ssc.com"> gazette@ssc.com</A>
<P>
<H5>Copyright &copy; 1996-2000 Specialized Systems Consultants, Inc.</H5>
</center>
</td></tr>
<TR>
<TD COLSPAN="3" WIDTH="100%" BGCOLOR="#000000"><IMG
SRC="../gx/hammel/cleardot.gif" ALT="" HSPACE=30 VSPACE=2 HEIGHT=1
WIDTH=1 ALIGN=LEFT></TD>
<TD></TD>
</TR>
</table>
<H4>"Linux Gazette...<I>making Linux just a little more fun!</I>"</H4>
<HR>
<center>
<table width="100%" cellpadding=7><tr><td>
<H2><a NAME="mail"><IMG SRC="../gx/mailbox.gif" ALIGN=MIDDLE ALT=" ">
The Mailbag!</a> </H2>
Write the Gazette at <A HREF="mailto:gazette@ssc.com"> gazette@ssc.com</A>
</td><td>
<H3>Contents:</H3>
<ul>
<li><a HREF="#help">Help Wanted -- Article Ideas</a>
<li><a HREF="#gen">General Mail</a>
</ul>
</td></tr></table>
</center>
<a name="help"></a>
<p><hr><p>
<!-- =================================================================== -->
<center><H3><font color="maroon">Help Wanted -- Article Ideas</font></H3></center>
<P>
Answers to these questions should be sent directly to the e-mail address of
the inquirer with or without a copy to gazette@ssc.com. Answers that are
copied to <I>LG</I> will be printed in the next issue in the Tips column.
<P> <STRONG>Before asking a question, please check the
<A HREF=../faq/index.html><I>Linux Gazette</I> FAQ</A> to see if it has been
answered there.</STRONG>
<P> <HR> <P>
<!--====================================================================-->
<IMG ALT=" " SRC="../gx/envelope.gif">
Fri, 31 Mar 2000 20:57:04 -0000
<BR>From: The Strangemores &lt;<A HREF="mailto:sstrange@crrstv.net">sstrange@crrstv.net</A>&gt;
<BR>Subject:
<P> Do you know what the Linux kernel split is? If so, can you tell me about
it?
<P> Chantil
<P> <HR> <P>
<!--====================================================================-->
<IMG ALT=" " SRC="../gx/envelope.gif">
Sat, 01 Apr 2000 01:03:33 -0600
<BR>From: Randall E. Cook, Sr. &lt;<A HREF="mailto:Randy@MNCom.Net">Randy@MNCom.Net</A>&gt;
<BR>Subject: Help in setting up Red Hat as a dial-up server
<P> I have searched and searched for 2 months now and can not get any
info on how to set up a server for customers to dial into and access the
internet with mail accounts and such.
I have been to every news group and discussion I can find. No one
will give any information on how to set this up.
The ONLY help or answer I get is...:"why do you want to be an ISP,
they are to expensive to set up?"
Please have a "How-To" for the beginner to set up an ISP for the
first time?
<P> Thanks in advance.
<P> <HR> <P>
<!--====================================================================-->
<IMG ALT=" " SRC="../gx/envelope.gif">
Sun, 02 Apr 2000 15:37:16 -0500
<BR>From: Dan Stroock &lt;<A HREF="mailto:dws@math.mit.edu">dws@math.mit.edu</A>&gt;
<BR>Subject: linux and DHCP
<P> I have been trying, without success, to hitch my Linux box to a
Linksys Etherfast cable router. I set networking configuration
to use DHCP, but my machine does not get the information which
it needs. Has anyone got a HOWTO page or other source of information
about this sort of thing?
<P> <HR> <P>
<!--====================================================================-->
<IMG ALT=" " SRC="../gx/envelope.gif">
Sun, 2 Apr 2000 23:31:20 +0100
<BR>From: andrew sprott &lt;<A HREF="mailto:andru@btinternet.com">andru@btinternet.com</A>&gt;
<BR>Subject: sharing filesystems
<P> hi
<P> i have tried searchin your site for 'share', 'sharing filesystem' etc., but nothin
came up. basically, i've got 6 networked machines, half of which can't take
a full installation of suse 6.3. what i want to do is export the installation on
a 20.4gb disk to the other machines. so say, most of /etc can be shared by
the other machines.
<P> the thing is how can linux be installed on the other machines without doin
a seperate install that takes up all disk space on the local machines. has
anybody tackled this and wrote about it? the thing that appeals to me is
the prospect of simply loggin onto any machine and access my usual apps
and data etc.
<P> <HR> <P>
<!--====================================================================-->
<IMG ALT=" " SRC="../gx/envelope.gif">
Sun, 02 Apr 2000 22:55:05 -0200
<BR>From: Rakesh Mistry &lt;<A HREF="mailto:rakeshm@REMOVETHIS.netactive.co.za">rakeshm@REMOVETHIS.netactive.co.za</A>&gt;
<BR>Subject: Swing on Linux
<P> Hi
<P> I am having trouble installing Swing1.0.3/1.1.1 on my RH6.0 system. I
have managed to setup jdk117_v3 successfully sometime ago.
<P> I have unzipped the tar.Z and placed it in
/usr/local/lib/jdk117_v3/swing-1.0.3/ directory. I have added this path
to my CLASSPATH. I have also added it to a SWING_HOME variable as well
as added a JAVA_HOME variable.
<P> However, everytime I try and compile a java program which tries to
import a swing package, I get the following error :
<PRE>
SwingUI.java:4: Package javax.swing not found in import.
import javax.swing.*;
^
SwingUI.java:6: Superclass JFrame of class SwingUI not found.
class SwingUI extends JFrame
^
SwingUI.java:24: '(' expected.
panel.setLayout(new BorderLayout);
^
3 errors
</PRE>
<P> I have copied this code straight out of a java tutorial.
<P> Any help would be greatly appreciated !!!
<P> <HR> <P>
<!--====================================================================-->
<IMG ALT=" " SRC="../gx/envelope.gif">
Mon, 03 Apr 2000 17:16:28 +0200
<BR>From: Silvia Scarpetta &lt;<A HREF="mailto:scarpetta@na.infn.it">scarpetta@na.infn.it</A>&gt;
<BR>Subject: linux and win2000
<P> I have updated winNT to windows2000, and LILO is not able to boot either
linux or win2000 , any more
(before I had winNT and Linux on the two harddisks and it works!)
<P> I mean LILO starts but when I says to boot windows2000 it says:
<PRE>
NTLDR is missing.
???????
</PRE>
Anyone knows if win2000 has been made in order to
not to be compatible with Linux?
is there a way to solve the problem?
<P> I tryed to do again
<PRE>
sbin/lilo
</PRE>
(in case the MBR was damneged)
but it did not work either.
<P> <HR> <P>
<!--====================================================================-->
<IMG ALT=" " SRC="../gx/envelope.gif">
Wed, 05 Apr 2000 10:53:22 PDT
<BR>From: Paul Grainger &lt;<A HREF="mailto:psfgrainger@hotmail.com">psfgrainger@hotmail.com</A>&gt;
<BR>Subject: Interfacing with Novell Netware
<P> Hi there,
can you help me with tips on how to interface to a Novell Netware network
(3.12 bindery). I am currently running Mandrake 7 and have a 3 Com ethernet
adapter (which Linux seems to be able to auto-configure). Whenever I try to
configure my card the system requests IP addresses, which is not relevant in
this instant.
I know that IPX support is provided but what are the steps required to
enable use of file and print services on the network?
Thanks in anticipation of your help,
<P> <HR> <P>
<!--====================================================================-->
<IMG ALT=" " SRC="../gx/envelope.gif">
Thu, 6 Apr 2000 23:16:16 +0200
<BR>From: Andrea &lt;<A HREF="mailto:amerini@dada.it">amerini@dada.it</A>&gt;
<BR>Subject: LILO
<P> Hi , I 'm a new user of Linux (Great!!) and I have a little problem:
<P> I have 2 HD , the 1st SCSI with Win 98 and th 2nd EIDE with Red Hat 6.1.
<P> I can't start windoze from LILO , (the machine does nothing)and I must switch the boot from BIOS.
Could you tell me please , how to solve this little problem ?
<P> <HR> <P>
<!--====================================================================-->
<IMG ALT=" " SRC="../gx/envelope.gif">
Wed, 12 Apr 2000 13:42:43 +0200
<BR>From: Otto Wyss &lt;<A HREF="mailto:Otto.Wyss@eds.com">Otto.Wyss@eds.com</A>&gt;
<BR>Subject: More than one keyboard with different layout
<P> Sorry I'm not sure if this is the right place to ask, please tell me the
right place if I'm wrong.
<P> I have 2 keyboards connected to my PC, one is a old AT-serial keyboard
and the other an USB-keyboard with Win98 key assignment. Now I'd like to
modify the keymap so I could use the new Command("Windows")-key.
Unfortunalty this conflicts with the old keyboard (which I still need in
case of an emergency). I have to install 2 different keymaps, each one
for each keyboard. but currently the kernel (2.2.14) only allows for one
keyboard.
<P> My wish for enhancement:
Keyboards should be implemented as ordinary devices in the kernel (like
mouses), so an arbitrary count of keyboards where possible. Keymaps,
kbdrates, etc. should be attached to keyboard devices as well.
<P> <HR> <P>
<!--====================================================================-->
<IMG ALT=" " SRC="../gx/envelope.gif">
Tue, 11 Apr 2000 17:47:22 EDT
<BR>From: &lt;<A HREF="mailto:JDGIOVINCO@aol.com">JDGIOVINCO@aol.com</A>&gt;
<BR>Subject: shell scripting in a "C++" based shell
<P> I recently read your article about the basic scripting commands in the April
issue. However, the bash system and i are like oil and water, because i am
more familiar with programing in "C++" After some searching I was able to
find some incredibly informative manuals that also contained cdrom packages
with libraries, patches and other assorted tools to help learn how to script
some of the varieties of "C" based shell. Soon enough, my happiness was
brought to a skreaching halt when i glanced down at some of the prices. So I
was writing to ask if maybe in your next issue, you could follow up the
scripting article with some basic commands in "ksh" or "zsh," or just inform
me of any manuals published within a reasonable price range.
Thanks
<H2>The author Ben Okopnic &lt;<A HREF="mailto:fuzzybear@pocketmail.com">fuzzybear@pocketmail.com</A>&gt; writes:</H2>
<P> My current goal in writing the column is to concentrate on "bash" until I feel that my readers, by following the column, have reached a high enough level of proficiency that they would be interested in other options - and those may include a look at other shells. Unfortunately for your requirements, this isn't likely to happen for quite a long while. Do be aware, though, that unless you get into somewhat deep scripting stuff (co-processes, async pipelines, etc.), there isn't _that_ much difference between, say, "ksh" and "bash": "ksh" is actually a superset of "sh" which is bash-compatible, and "bash" incorporates a number of "ksh" and "csh" features.
<P> Since I don't know what your level of general scripting/shell expertise may be, let me toss in a perspective from my own experience: the first shell that I ever used was "sh", and it was nothing short of a battle to produce my first script, simple as it was. Later, in my rather brief flirtations with other shells, I found that learning their specific syntax was an *incremental* task - I had already learned 90+% of what I needed to write scripts for them via my experience with "sh". You too may find that it isn't only "bash" that is problematic: there is a learning curve associated with any shell - they all have their quirks. I'm certainly not trying to talk you into switching your shell preference, but you should realize that there's a "cost" associated with entering the "shell game" - and the type of shell is, in my opinion, largely irrelevant to that "cost".
<P> Given the nature of Linux, you'll find that the information that is freely available is copious and of high quality. This implies that any commercially available material will be a) _outstanding_ in quality (this is certainly true in my experience), and b) relatively expensive, since "quality costs". My suggestion for you is to study the free material, look for info on the Net (e.g., "ksh keybindings (vi keys)" in The Answer Guy's column, issue 51 of LG, has some good pointers), and study other people's "zsh"/"ksh" scripts (hint: use AltaVista's Advanced search to look for "#!*/bin/[kz]sh".)
<P> By the time you exhaust those resources, you should either feel justified in your purchase of those "expensive" books - or you may decide that you've lerned enough that you don't need them after all.
<P> <HR> <P>
<!--====================================================================-->
<IMG ALT=" " SRC="../gx/envelope.gif">
Wed, 12 Apr 2000 14:40:44 -0700
<BR>From: Anderson, Randy (FRM) &lt;<A HREF="mailto:randy.anderson@compaq.com">randy.anderson@compaq.com</A>&gt;
<BR>Subject: adding pseudo devices in a sunos 4.1.4 environment..
<P> hi,
my sunos kernel is already configed for 256 pseudo devices. my users
complain about running out
of them often...i know they are not using even a fraction of that number, so
what gives?? do i need to
add /dev device files? recompile the kernel (GENERIC) again??? help!
<P> thanks for any assistance..
<P> <HR> <P>
<!--====================================================================-->
<IMG ALT=" " SRC="../gx/envelope.gif">
Fri, 14 Apr 2000 11:14:17 -0500
<BR>From: David K. Daniels &lt;<A HREF="mailto:daved@hutchtel.net">daved@hutchtel.net</A>&gt;
<BR>Subject: Is There a Version of PC/NFS for Linux?
<P> I have the O'Reilly book "Managing NFS and NIS" and there is a section in
the back of the book called PC/NFS describing a Unix utility that enables a
PC DOS machine to access a Unix machine using the NFS file system as an
extended DOS file system. I am wondering if there is a Linux version of
this available?
<P> I would like to be able to run a Linux server on a TCP/IP network and have
the capability of booting a PC using DOS and map a drive letter to the file
system running on the Linux server for the purpose of using a utility called
"Ghost" and make a ghost image of the DOS/Windows drive and drop it on the
Linux server for storage.
<P> Any information or pointers would be appreciated.
<P> <HR> <P>
<!--====================================================================-->
<IMG ALT=" " SRC="../gx/envelope.gif">
Sat, 15 Apr 2000 00:02:45 +0530
<BR>From: US Mohalanobish &lt;<A HREF="mailto:usmbish@crosswinds.net">usmbish@crosswinds.net</A>&gt;
<BR>Subject: SiS6215C graphics adapter card
<P> Can anybody help me make my SiS6215c graphics card deliver a resolution more than 640x480 in Linux? On Windows, I get resolutions as high as 1024x768 with 256 colors or 800x600 with 16bit colors.
<P> <HR> <P>
<!--====================================================================-->
<IMG ALT=" " SRC="../gx/envelope.gif">
05 Apr 2000 09:19:10 +0200
<BR>From: Andr&eacute;s Hortig&uuml;ela Garc&iacute;a &lt;<A HREF="mailto:Andres.Hortiguela@csbs.jcyl.es">Andres.Hortiguela@csbs.jcyl.es</A>&gt;
<BR>Subject: Graphics card question (Spanish)
<P> Necesito un driver para la tarjeta gr<67>fica integrada en placa base con chipset Intel 810, para configurar mi Linux (EsWare - Red Hat 6.0)
<P> <20>Me pod<6F>is ayudar? <20>Donde lo puedo obtener?
<P> Muchas gracias, ... Andr<64>s.
<P> <HR> <P>
<!--====================================================================-->
<IMG ALT=" " SRC="../gx/envelope.gif">
Fri, 14 Apr 2000 11:50:22 -0700
<BR>From: Ahmad &lt;<A HREF="mailto:al-iman@net.sy">al-iman@net.sy</A>&gt;
<BR>Subject: How to hack a proxy
dear sir
we are in bad need for a program to pass the firewall because our server is filltering the most of hackers sites and all the free Email.
your prompt positive reply is highly appreciated
thanks, best regards.
</BLOCKQUOTE>
<P> <HR> <P>
<!--====================================================================-->
<IMG ALT=" " SRC="../gx/envelope.gif">
Sun, 16 Apr 2000 14:39:06 -0400
<BR>From: Robin and David Pickens &lt;<A HREF="mailto:rdpickens@email.msn.com">rdpickens@email.msn.com</A>&gt;
<BR>Subject: Downloading X11/ XF86 upgrades
<P> I am new to the alternative OS world of Linux. I recently purchased a (old)
beginners version of Caldera Linux 1.3 and, through much frustration on my part
as well as the tech reps at Mandrake, have come to realize that my computer's
on- board video card is too modern for the XF86Setup v. 3.3.2. I discovered (I
think) that XF86Setup v. 3.3.6 is the updated one which supports my card (a
Trident Blade 3D/ MVP4). I went to the XF86 web site to download the proper
files and uncovered a plethora of files and folders that have left me rather
confused as to which ones to use. Can anybody tell me which ones (specifically)
from that site to download or, direct me to another mirror site with a bit less
confusing archives and easier to follow guidelines for acquiring these most
needed programs? P.S. I have looked through "rpmfind.net" and could only find
version 4.0 of XF86 for Trident Blade cards. The tech rep at Mandrake said 4.0
would probably not help me. Any further assistance would be greatly
appreciated. Thanks, David P.
<P> <HR> <P>
<!--====================================================================-->
<IMG ALT=" " SRC="../gx/envelope.gif">
Mon, 17 Apr 2000 15:34:34 +0530
<BR>From: Prakash Nair &lt;<A HREF="mailto:nairp@zeenetwork.com">nairp@zeenetwork.com</A>&gt;
<BR>Subject: Switching from Xchange Server To Linux
<P> Hello..
I hope u can help me with this. We have MS Exchange server with 400
users.We would now like to switch to linux as the mail server(remove Xchange
server). How could this be done?
<P> Pl. help as this is to be done urgently.
<P> <HR> <P>
<!--====================================================================-->
<IMG ALT=" " SRC="../gx/envelope.gif">
Mon, 17 Apr 2000 14:39:39 -0700
<BR>From: Chetan Gadgil (Work - Linux) &lt;<A HREF="mailto:chetan@objectstream.com">chetan@objectstream.com</A>&gt;
<BR>Subject: Porting to a new language
<P> I am interested in porting Linux to "Indic (Indian)" languages. Is there
a good place to start?
Could anyone please provide a brief outline of how a port to a new
language/script is done?
<P> Does Linux use GNU/gettext for the locale specific languages?
<P> <HR> <P>
<!--====================================================================-->
<IMG ALT=" " SRC="../gx/envelope.gif">
Tue, 18 Apr 2000 04:18:11 -0700 (PDT)
<BR>From: Phil Coval - RzR.online.FR &lt;<A HREF="mailto:philippe_coval@yahoo.com">philippe_coval@yahoo.com</A>&gt;
<BR>Subject: is Debian deadbian ?
<P> When next debian is out ?
<P> i've seen on magazine that it will be out in a few
weeks that was on jannuary 2000 ?
the site isnt updated
<P> Whats the matter ?
<P> <HR> <P>
<!--====================================================================-->
<IMG ALT=" " SRC="../gx/envelope.gif">
Tue, 18 Apr 2000 09:32:26 -0500
<BR>From: Mark Contatore &lt;<A HREF="mailto:contatorem@iivip.com">contatorem@iivip.com</A>&gt;
<BR>Subject: Compaq help
<P> I recently acquired a Compaq ProSignia 300, it has the on board NCR53C810
SCSI controller. I have been totally unsuccessful in installing RedHat
Linux 6.2, the system indicates the driver is incorrect . I am asking for
anyone with the experience of a successful install on this platform to
please help!
<P> <HR> <P>
<!--====================================================================-->
<IMG ALT=" " SRC="../gx/envelope.gif">
Wed, 19 Apr 2000 14:50:52 +0200
<BR>From: Joseph Simushi &lt;<A HREF="mailto:jsimushi@pulse.com.zm">jsimushi@pulse.com.zm</A>&gt;
<BR>Subject: LAN Administrator Books.
<P> Help me with information as regards where I can find the above books or if
you offer some, please send me some on the address below.
<P> Regards,
<P> Simushi Joseph<BR>
LAN Administrator<BR>
PULSE Project<BR>
P.O. Box RW 51269<BR>
Lusaka<BR>
Zambia.<BR>
Tel: 295642 (W), 250236 (H)
<P> <HR> <P>
<!--====================================================================-->
<IMG ALT=" " SRC="../gx/envelope.gif">
Wed, 19 Apr 2000 15:23:27 +0100
<BR>From: Stephen Wileman &lt;<A HREF="mailto:Pcrep@mancat44.freeserve.co.uk">Pcrep@mancat44.freeserve.co.uk</A>&gt;
<BR>Subject: linux courses / books
<P> I am IT teacher being asked a lot of questions to do with
the linux operating systems in particular Linux Red Hat 6 and
above.
<P> Please could you help with any suggestions on a good basic book
or material which I could use to help my students out with their
problems or a any recognised Linux professional qualifications I
can undertake to aid my own understanding of the Linux / Red
Hat operating system?
<P> <HR> <P>
<!--====================================================================-->
<IMG ALT=" " SRC="../gx/envelope.gif">
Wed, 19 Apr 2000 20:28:49 -0700 (PDT)
<BR>From: Venkat Rajagopal &lt;<A HREF="mailto:venkat_rajagopal@yahoo.com">venkat_rajagopal@yahoo.com</A>&gt;
<BR>Subject: Command line editing
<P> Hi,
<P> I have been trying to set command line editing (vi mode) as part of my
bash shell environment and have been unsuccessful so far. You might think
this is trivial - well so did I.
<P> I am using Red Hat Linux 6.1 and wanted to use "set -o vi" in my start up
scripts. I have tried all possible combinations but it JUST DOES NOT WORK.
I inserted the line in /etc/profile , in my .bash_profile, in my .bashrc
etc but I cannot get it to work. How can I get this done? This used to be a
breeze in the korn shell. Where am I going wrong?
<P> <HR> <P>
<!--====================================================================-->
<IMG ALT=" " SRC="../gx/envelope.gif">
Thu, 20 Apr 2000 21:59:27 +0200
<BR>From: Matej Cepl &lt;<A HREF="mailto:CeplM@seznam.cz">CeplM@seznam.cz</A>&gt;
<BR>Subject: Other markup languages - LG #27
<P> Hi,
<P> I have found your article on "markup languages and lout" on the
website of Linux Gazette. Thank you for it -- as beginer in lout (and
emigre from LaTeX), I have greatly appreciated it your open attitude
towards something different than TeX.
<P> However, I would be very interested in other articles from series --
on TeX and troff. When I tried to found them on LG site, I have not
found either of them. Are they presented anywhere on the Web? If
so, would you be so kind and send me URL, please?
<P> Have a very nice day
<P> Matej Cepl
<P> <HR> <P>
<!--====================================================================-->
<IMG ALT=" " SRC="../gx/envelope.gif">
Thu, 20 Apr 2000 16:37:53 -0700
<BR>From: Martin Perry &lt;<A HREF="mailto:m.perry@dtn.ntl.com">m.perry@dtn.ntl.com</A>&gt;
<BR>Subject: Screen Dump of Linux
<P> I am writing to request a screen dump picture of what Linux looks like when it is running.
<P> I am currently doing a HNC in Business Information Technology and I have got to give a presentation on Linux in a weeks time and would like to put a screen dump on the OHP for people to see. From what I understand it can either look like windows or the Mac equivalent.
<P> I have been searching for days to find this on the net with no luck as yet.
<P> Sorry for any inconvience.
<P> Maria Perry.
m.perry@dtn.ntl.com
<BLOCKQUOTE> <EM>
[I think several distributions have such images on their web sites,
usually in a section called "Screenshots". Go to
<A HREF="www.linuxjournal.com">www.linuxjournal.com</A>,
"How to Get Linux" and follow the links from there.
<P> Also, the GUI interfaces (KDE and GNOME) and window managers have
screen shots on their web sites, to give you a preview of what the
program will look like. <A HREF="http://www.kde.org">www.kde.org</A>,
<A HREF="http://www.gnome.org">www.gnome.org</A>,
<A HREF="http://www.enlightenment.org">www.enlightenment.org</A>,
<A HREF="http://www.windowmaker.org">www.windowmaker.org</A>,
<A HREF="http://www.plig.org/xwinman/fvwm95.html">
http://www.plig.org/xwinman/fvwm95.html</A>, etc. -Ed.]
</EM> </BLOCKQUOTE>
<P> <HR> <P>
<!--====================================================================-->
<IMG ALT=" " SRC="../gx/envelope.gif">
Fri, 21 Apr 2000 11:41:19 +1000 (EST)
<BR>From: Russ Pitman &lt;<A HREF="mailto:russ@tasman.net.au">russ@tasman.net.au</A>&gt;
<BR>Subject: BU backup utility
<P> This was the subject of an excellent article in Issue 32 of
the Gazette.
<P> My only hard copy is missing and the site (http://www.crel.com)
is not reachable. Also mail to vstemen@crel.com is undeliverable.
<P> Web searching has not, for me, found any other address for bu
so I came here hoping that the Gazette can help.
<P> Does any one know where a copy of Vincent Stemens 'bu' can be
obtained.
Thanks for your time.
<P> <HR> <P>
<!--====================================================================-->
<IMG ALT=" " SRC="../gx/envelope.gif">
Fri, 21 Apr 2000 00:21:56 -0700
<BR>From: MVE &lt;<A HREF="mailto:getsome@mcsi.net">getsome@mcsi.net</A>&gt;
<BR>Subject: Please Help
<P> Please help me. I am at my wits end.
<P> I have VERY recently installed Linux, so I am very new to all of this, and
pehaps I am going about this the wrong way. I want to install Oracle8i on my
system. ALL the information says I have to install a JRE (JRE 1.1.6v5) in order
to get Oracle to work. (NOT JDK...JRE).
<P> I CAN NOT find it for the life of me!!!! PLEASE PLEASE PLEASE do not send
me to Blackdown.org. They do not have it either. Do not send me to Sun, because
they do not have it either. Nor does Susie, nor does Red Hat...NOBODY!! I can
NOT find it. What is up with this??? Is this usual? Why would a company sell me
an operating system (I know, it's free), and the SAME company (Mandrake) sell
me the Oracle81 program, and NOT include it in their package??? (They don't
have JRE 1.1.6v5 either)!
<P> Where can I find it???? I am becoming very discouraged with all the support
I have heard about concerning Linux...(there doesn't seem to be ANY).
<P> <HR> <P>
<!--====================================================================-->
<IMG ALT=" " SRC="../gx/envelope.gif">
Fri, 21 Apr 2000 03:30:51 -0700 (PDT)
<BR>From: belahcene abdelkader &lt;<A HREF="mailto:belahcene@yahoo.com">belahcene@yahoo.com</A>&gt;
<BR>Subject: troubling with ftp , telnet
<P> hi,
someone can help me!
I have a lab with several PCs, pentium II, running
under linux redhat 6.0. The installation is complete
on
each one, with ftp, http, telnet etc.... The ping is
correct for all machines.
I can use internet with netscape from each one. I
use one machine as server with proxy.
Clearly :
I have machine 1 with proxy package, this machine is
connected to internet via modem, the machines 2
and 3 are connected in LAN and can access to internet
via machine 1.
My probleme is: when I want to get file from one
machine in another, via ftp, the system refuse with
non
permission. Sometimes it is possible in one sens and
not in the other.
I have the same probleme with telnet.
I have login and passwd in all the machines and i can
enter as root.
Thank you.
<P> <HR> <P>
<!--====================================================================-->
<IMG ALT=" " SRC="../gx/envelope.gif">
Fri, 21 Apr 2000 18:48:03 BST
<BR>From: Ben Parsons &lt;<A HREF="mailto:ukbenz@hotmail.com">ukbenz@hotmail.com</A>&gt;
<BR>Subject: Help with email
<P> Hello. I've only just really started out with linux Mandrake (call it
redhat) and I wanted to know if I can get my hotmail email into say, Pine or
Elm, I looked through all the docs but it dosen't mention it and in any case
I don't know where to start. Cheers in advance to anyone who can help.
<P> <HR> <P>
<!--====================================================================-->
<IMG ALT=" " SRC="../gx/envelope.gif">
Tue, 25 Apr 2000 00:36:59 +0200
<BR>From: Gonzalo Aguilar &lt;<A HREF="mailto:gad@reymad.com">gad@reymad.com</A>&gt;
<BR>Subject: XFree 4.0 and internationalization
<P> Hello, I'm an Spanish linux user and XFree 4.0 is having problems with
the "special characters" of my keyboard.
<P> I cannot write letter with "<22>" on the top (is very important for my
languaje) or cannot put "<22>" also.
<P> Those work after in XFree 3.3.5 but now...
<P> Do you know any tips on this. Nobody seems to know cause a lot of people
has the same problem.
Thanks
<P> <HR> <P>
<!--====================================================================-->
<IMG ALT=" " SRC="../gx/envelope.gif">
Tue, 25 Apr 2000 10:43:12 +0200
<BR>From: Dominic STEUR &lt;<A HREF="mailto:dominic.steur@belgacom.be">dominic.steur@belgacom.be</A>&gt;
<BR>Subject: GUI
<P> Hello,
I am kind of a beginner in the linux world and I have little knowledge about
unix and even less about linux.
I have installed the Linux Redhat 6.1 recently, and that went quite smooth,
it is on an intel machine with now
a lilo boot and a win2000 boot menu, in which I can choose 98 or 2000.
Here comes my problem: when booting the linux i end up in the bourne-shell
login screen, but this is not quite what
I had in mind for interface...
i had performed the gnome workstation installation, so it should end up in a
x-windows environment if I am correct.
When i did an upgrade installation, it became clear that there were no
interface ( or similar) packages installed, so
I selected the lot of them and installed it. But after rebooting the
bourne-shell was back, and I am at a loss.
It probably is a stupid problem with a simple solution (I hope), but I fancy
some help.
<P> <HR> <P>
<!--====================================================================-->
<IMG ALT=" " SRC="../gx/envelope.gif">
Tue, 25 Apr 2000 18:19:37 +0100
<BR>From: &lt;<A HREF="mailto:saqib@saqib-shaikh.freeserve.co.uk">saqib@saqib-shaikh.freeserve.co.uk</A>&gt;
<BR>Subject: A Problem
<P> Dear Editor,
<P> My name is Saqib Shaikh and I live in the UK. I have been reading
Linux books for a few years now, and decided to put my knowledge
into practice. I got out my CD of Slackware 3.6, and my old
computer. My computer's specifications are: 486, 33 mhz
processor, 4 MB RAM, 80 MB hard drive. The Slackware guide
said that 4 MB was enough RAM, so gave it a go. I made the boot
and root floppies. I inserted the boot floppy, powered up, inserted
the root floppy when asked. It stood there, blank screen, doing
nothing. I thought on such an old computer it must just be taking
its time. 25 minutes later I pressed ctrl+alt+del. This has resulted
in my computer, whenever turned on, giving the error "Cannot find
ROM basic"!. It does not even check the floppy disk. One last thing
to mention is that before starting the install I used fdisk to remove
all partitions, and used fdisk /mbr to remove the mbr. I would be
extremely greatful for your help. I do not mind throwing the
computer away, but rather would like to learn the cause for the
future.
<P> REgards, Saqib Shaikh
<P> <HR> <P>
<!--====================================================================-->
<IMG ALT=" " SRC="../gx/envelope.gif">
Tue, 25 Apr 2000 18:19:37 +0100
<BR>From: Linux Gazette &lt;<A HREF="mailto:gazette@ssc.com">gazette@ssc.com</A>&gt;
<P> Hai,<BR>
I want to take backup on HP 5GB Dat Drive.
Could u please help me any body how to configure it.
Thanks in advance.
<BLOCKQUOTE> <EM>
[I inadvertently cut off the querent's name and e-mail address.
Please send answers to the <EM>Gazette</EM>. -Ed.]
</EM> </BLOCKQUOTE>
<P> <HR> <P>
<!--====================================================================-->
<IMG ALT=" " SRC="../gx/envelope.gif">
Tue, 25 Apr 2000 18:19:37 +0100
<BR>From: Linux Gazette &lt;<A HREF="mailto:gazette@ssc.com">gazette@ssc.com</A>&gt;
The following questions received this month are answered in the
<A HREF="http://www.linuxgazette.com/faq/index.html">Linux Gazette FAQ</A>:
<UL>
<LI> Will my Winmodem (this time a PCI Internal faxmodem Well FM-56PC
V:RWH-A) work under Linux?
</UL>
<P> <HR> <P>
<!--====================================================================-->
<IMG ALT=" " SRC="../gx/envelope.gif">
Wed, 26 Apr 2000 10:52:35 +0800
<BR>From: Kana Krishna &lt;<A HREF="mailto:Kana_Krishna@netcel360.com">Kana_Krishna@netcel360.com</A>&gt;
<P> My name is Kanagaraj and I'm from Malaysia . Currently I'm doing my degree
in Computer Science in a local university here . I need help in creating a
script that can log into telnet or ftp server ( with user name and password
) to copy a file(log file) and send it to a pc that
is connected to the network . What I really need to do is :-
<OL>
<LI> Telnet a site with its password and user name.
<LI> From there , ftp another site (with password and user name).Get a
log file and send it through both the servers again to a pc that is
connected to the network
</OL>
<P> I need the automate the process by scripting for one of my projects and I'm
really having a tough time doing it . I'm have to connect using MS-Dos
enviroment. As I was looking for some information or somebody to help me , I
found your e-mail address in one of the web sites . It would nice if you
could help me .Bye
<P> <HR> <P>
<!--====================================================================-->
<IMG ALT=" " SRC="../gx/envelope.gif">
Wed, 26 Apr 2000 18:42:50 -0400
<BR>From: Aurelio Mart&iacute;nez Dalis &lt;<A HREF="mailto:aureliomd@cantv.net">aureliomd@cantv.net</A>&gt;
<P> My Name is Aurelio Mart&iacute;nez, from Venezuela, Latin America. I speak
english just a little, and I am a Linux begineer. I would like to know if
exists any other video system for linux other than X11, free or comercial,
under development or stable. Can you help me ? Thanks.
<P> <HR> <P>
<!--====================================================================-->
<IMG ALT=" " SRC="../gx/envelope.gif">
Fri, 28 Apr 2000 14:42:50 -0400
<BR>From: Roland Glenn McIntosh &lt;<A HREF="mailto:roland@sunriselabs.com">roland@sunriselabs.com</A>&gt;
<BR>Subject: Two problems - change password with Eudora, how to APOP?
<P> I'm using the IMAP package, whichever version comes with Red Hat Linux 6.2.
I'd like to be able to change my mail password on the server from the client,
using Eudora's "change password" feature.
<P> I'd also like to be able to use APOP authentication, though I haven't seen
how to set this up anyplace on the server side. Please help!
<P> <HR> <P>
<!--====================================================================-->
<IMG ALT=" " SRC="../gx/envelope.gif">
Fri, 28 Apr 2000 15:05:17 -0700
<BR>From: Julio &lt;<A HREF="mailto:axios@dccnet.com">axios@dccnet.com</A>&gt;
<BR>Subject: leading distributions
<P> hello there folks,
<P> thank you for the quality publication
<P> would you please help me find information on the leading distributions of
Linux?
<P> I have looked everywhere I can think of, including linuxorg, linux this and
linux that. Also IDC and IDG. Internet.com, cnet...
<P> where o where can I find a simple explanation of the top distributions,
what is their market share, how many copies each has sold and if it is broken
down by continent then all the better.
<P> sorry to bother you but after 3 days of fruitless searching, I just came to
the conclusion that I should start asking people who are likely to know
<P> I am another new convert - I am having a dual processor Linux machine
built as I type this and will deep six Windows for good. Finally. And good
riddance.
<P> please help if you can, even if you don't know that answer, please direct
me to somebody that does know the answers to the above questions.
<P> thanks for your help,
<a name="gen"></a>
<P> <hr> <P>
<!-- =================================================================== -->
<center><H3><font color="maroon">General Mail</font></H3></center>
<P> <HR> <P>
<!--====================================================================-->
<IMG ALT=" " SRC="../gx/envelope.gif">
Mon, 3 Apr 2000 23:27:54 -0400
<BR>From: Pierre Abbat &lt;<A HREF="mailto:phma@oltronics.net">phma@oltronics.net</A>&gt;
<BR>Subject: Best Linux and BestCrypt
<P> Best Linux is at Technology Center Hermia, Tampere. BestCrypt is by Jetico,
which is on Hermiankatu, Tampere. Any connection?
<P> phma
<P> <HR> <P>
<!--====================================================================-->
<IMG ALT=" " SRC="../gx/envelope.gif">
Tue, 11 Apr 2000 15:23:46 GMT
<BR>From: Harry &lt;<A HREF="mailto:harryw@thegenstore.com">harryw@thegenstore.com</A>&gt;
<BR>Subject: Good work.
<P> Hi
<P> I read the Linux Gazette regularly, but I hadn't read it for the few
months just passed. I read the new cartoon Helpdex, and
really liked it. So much in fact that I decided it was worth
e-mailing you to tell you that I think it's a great addition to
a great 'Zine.
<P> Keep up the good work.
<P> <HR> <P>
<!--====================================================================-->
<IMG ALT=" " SRC="../gx/envelope.gif">
Mon, 24 Apr 2000 17:45:25 GMT
<BR>From: Michael Williams &lt;<A HREF="mailto:iamalsogod@hotmail.com">iamalsogod@hotmail.com</A>&gt;
<BR>Subject: Newbie installation tips and reorganizing the tech support columns
<BLOCKQUOTE> <EM><H4>[These are excerpts from a long conversation. My
proposal is near the end. Readers: please send in your suggestions or offers
to help! -Ed.]</H4></EM></BLOCKQUOTE>
<P> How about setting up a regular section where people email their problems
with setting up Linux, especially on a machine that already runs windows
(along with the solutions of course). I'm suggesting this because of the
problems that I found when installing Linux - I believe that this is a major
factor in stopping people from using the operatins system. It wouldn't be
immediate, but I would be happy to put it all together if you would just
mention it in the next issue.
<H2>Your humble Editor wrote:</H2>
<P> How would this be different from the Mailbag/2-cent Tips and The Answer Guy?
Do you wish the installation questions moved all together under their own
heading? Or what is it you're looking for?
<H2>Michael responded:</H2>
<P> Okay....
<P> 1. It is different from the answer guy/2 cent tips as it allows the readers
to offer their solutions for problems. As good as he is, the answer guy
cannot answer every problem that may arrise simply because of the range of
hardware available. If enough people responded, it would end up as a pretty
comprehensive list of problems that may arrise during the Linux
installation. I see your point, it is fairly
similair to two cent tips. However, it would be purely based around
installation issues.
<P> 2. Yes, I believe that the installation issues should be moved under a
seperate heading. This is by far the most difficult/traumatic part of Linux (in
my view), especially when there's another OS involved (ie windows). This put me
off installing Linux for almost two whole years. Those were two wasted years -
there should definately be a comprehensive and detailed guide to installing
Linux (yes, I know they do exist, but I haven't seen any that allow user
contribution on this scale).
<H2>Your magnificent Editor wrote:</H2>
<P> You are very right about people putting off installing Linux because of
potential installation problems, and how this is "wasted time" when they could
be learning the OS. Unfortunately, even the most comprehensive book will not
cover all situations.
<P> I'm cc'ing Jim Dennis and Heather Stern (the Answer Guy and HTML Gal)
and Margie Richardson (the Ruler of the Gazette) to get their input
on this.
<P> A good portion of our questions are indeed first-time user issues, and
another good portion deals with adding hardware. I'm unsure whether
trying to separate those questions out would be worthwhile. The thing is, the
technical details regarding first-time installation also come back when you add
new hardware, install Linux on `a different computer, etc.
<P> Would you be interested in coordinating the installation- and hardware-
related questions in the Mailbag and 2-Cent Tips?
<P> You could also build something like a knowledge-base index based on
subject with links to the letters, if you're ambitious. This would be
something to help newbies find the information they need.
<P> The LG FAQ also has a section for questions that come up so frequently
(like Winmodems) that Jim, Heather and I get tired of repeating them,
so we just point people to the FAQ. If you'd like to augment that
section of the FAQ, it might help some readers. (Now if readers would only
realize the FAQ exists. It seems that links on every page and even a link in
the blurb about how to submit a question doesn't help....)
<H2>Heather Stern chimed in:</H2>
<P> Also with many querents it's not clear if they'd fall into the space of
"first tine user" - they didn't say, so we'd be presuming to say so. And
a very experienced person is often new to the one aspect they're asking about.
<P> The readers already are supposed to be putting forward their own problems
and solutions with 2cent Tips; but we're getting an increase of people
sending raw Tips to The Answer Guy, usually inspired by a previous letter
in his column.
<P> My personal inclination would lean toward, if Michael's willing to
coordinate it, sprouting Tips (short answers only), Answer Guy, and the
Clueful Hoard (i.e. answerguy like answers from the readership, to
technical questions to the Mailbag) into its own meta-section, with the
FAQ and/or sorted best answers prominently bulleted below these. For such
an endeavor I'd be happy to throw together some extra graphics, and send
him the current edition of the AnswerGuy preprocessing script, with some
docs on how to use it effectively :)
<P> This would mean some things that presently get pubbed as Tips, and some
messages that come to The Answer Guy, would be moved to the Clueful Hoard.
<P> Jim had originally (way back in the teen issues) figured the Answer Guy
would someday become an Answer Gang. This is one way to do it. Another
way to do it would be to turn Answer Guy into a moderated list where the
querent gets a consensus or best answer from the Gang. I have on occasion
piped in an editorial comment as well...
<P> It's hard to tell who uses Past Answers since if they got their answer,
they generally don't email us...
<P> I made an attempt at sorting Past Answers into topics and Michael, you're
welcome to look at them, even, to become their maintainer (I'm usually a
month or two behind on them), and for the FAQ too. Deciding on where to
split the topics can be difficult, even if you're willing to link a question
multiple times. It's behind (3 months I think ;P) but -All- the answers the
Answer Guy wrote up to the last maintenance visit I made to them, are in the
Past Answers.
<H2>Your all-around good guy Mr Editor wrote:</H2>
<P> I'm hearing lots of good suggestions. Let's think about it for a month
before deciding what to do. We have two requests: (1) giving Linux newbies
better access to information about configuring their hardware, and (2) a
general reorganizing of the tech support columns.
<P> It's clear that the Answer Guy column is better organized than the
Mailbag/2-Cent Tips in regard to finding the messages that deal with your
question, so I'd like to consider moving all the tech support questions to
that framework. The Mailbag would then be just for general mail (which usually
means mail about the <EM>Gazette</EM>), and 2-Cent Tips would be for standalone
tips: nifty shell scripts, cool .bashrc settings, etc. (I really enjoy doing
the standalone tips, so nobody's taking that part away from me. :)
<H2>Heather responded:</H2>
Michael wrote:
<BLOCKQUOTE>
How about creating a regular section entirely devoted to newbie's? It would
almost be like a 'sub magazine' in its own right, with its own sections. To
go into more detail....
</BLOCKQUOTE>
<A HREF="http://www.linuxnewbie.org">www.linuxnewbie.org</A> and
<A HREF="http://www.linuxstart.org">www.linuxstart.com</A>
(multilingual)--both aimed at newbies--already exist.
<BLOCKQUOTE>
It would be split up into 5 seperate sections:
<P> 1. Distrubution Reviews (which would have an archive of distribution
reviews as well as new ones)
</BLOCKQUOTE>
Just another article type, really.
<BLOCKQUOTE>
2. A newbie version of the answer guy (all newbie questions would go here)
</BLOCKQUOTE>
<P> The Answer Guy is popular because he is (1) an ordinary person answering
ordinary people and (2) he will chase down a lot of weird answers (his
experience can lead him to give much better than a newbie knows to ask for).
<P> I think it is harmful rather than helpful to suggest that newbies should
somehow get shoved into a corner (what, they're not "allowed" to speak to
the answer guy? the same one who actually -answers- when he gently flames
the poor weener who is not quite on-topic, or has asked in a creatively
misunderstanding way? I don't think so) And lest you suggest that I have no
experience with them... I teach on Mondays, to a few people who are newbies
to Linux and computers themselves at the same time. If you'd be assuming
that they even know what an A: is... you'd do them a terrible disservice.
<P> I have no objections to a transformation into a Answer Gang (multiple gurus
in the column, maybe more bubble types?) or a Clueful Hoard (someone edits
answers from the multitude into a similar column, while the wizardly Answer
Guy answers his as well) but I have a *serious* objection to completely
restructuring the whole webzine.
<BLOCKQUOTE>
3. Reader's Tips (this is basically my original idea, concentrating mainly
on installation and compatibility issues. It too would have an archive
section split up into easily findable topics)
</BLOCKQUOTE>
<P> Tips already exists as a column. If you're interested in becoming a
maintainer for it that would probably be great.
<BLOCKQUOTE>
4. Programming for Newbies (programming is an -extremely- important part of
Linux. It would not concentrate on more complex and specific issues. It
would deal with more general and introductory topics and contain links to
reference material.
</BLOCKQUOTE>
<P> This could easily become a longterm column of its own, the transformation
of one unfamiliar with programming into a script wizard and junior programmer.
Good idea.
<BLOCKQUOTE>
5. Feature artical (each month it would contain a different feature e.g
setting up Linux under windows etc....)
</BLOCKQUOTE>
<P> You're welcome to contribute ordinary articles to the Gazette during any
month whatsoever, and if you can encourage others to do so also, more power
to you.
<P> Didn't we used to have a "weekend mechanic" section?
<BLOCKQUOTE>
Of course, I would be happy to moderate and design this with a little help.
It would not be a huge, certainly not the size of the magazine itself. If
you want to encourage people to use Linux and get the most out of it, a
section like this would be great. I know it is a lot more than I originally
suggested, but I for one certainly believe it would be a good idea.
</BLOCKQUOTE>
<P> On the one hand I want to encourage the enthusiasm. On the other, I'd like
to note, it's a lot of work merely to corrdinate the answerguy letters into
one column. I think at one point it was about half the work in the whole
magazine, and that I took it over from Marjorie both made TAG look better,
and allowed Marjorie some breathing room to make the Gazette better. I do
not honestly believe that one person can do all of this that you describe
without ramping up to it. Though you claim it'd be smaller than the zine,
it sounds bigger than the early issues of it, and Marjorie had her hands
full every month back then too.
<P> Take over the FAQs and Past Answers and mush them together nicely, or start
writing articles regularly. Heck, if you can manage to do both of those
every month without going completely bonkers, maybe a "section for newbies"
will be completely and utterly unnecessary, because they will tend to find
what they are looking for.
<H2>Michael wrote:</H2>
<P> I would be happy to help out in any way that I
can, just tell me what to do :-). Your comments were justified - it would
involve a huge remake of the overall layout and a considerable ammount of
work. Thanx for your time :) (No hard feelings by the way).
<H2>Your Editor, who rode his bike to work and enjoyed the sunshine, wrote:</H2>
Heather wrote:
<BLOCKQUOTE>
I think it is harmful rather than helpful to suggest that newbies should
somehow get shoved into a corner
</BLOCKQUOTE>
<P> I agree with Heather here. Everybody is a veteran at some things and a
newbie at others.
<P><FONT SIZE="+1"> <STRONG>
Here's a proposal:
<OL>
<LI> Create a topic index covering both articles and tips
<LI> Answer Guy -&gt; Answer Gang/Clueful Hoard
<LI> All tech support questions/answers -&gt; Answer Gang/Clueful Hoard
<LI> Have more articles and series like the Weekend Mechanic
</OL>
</STRONG></FONT>
<P> Now to elaborate.
<H4>#1 -- TOPIC INDEX</H4>
<P> This would help newbies (and veterans) find the articles/letters
relevant to their problem. We'd have to decide on categories (e.g.,
Network/PPP, Hardware/Video Cards, XWindows).
<P> The back end for this is partially covered: each article and TAG answer
already has its own URL, and some tips (not in recent issues) have their
own anchor links as well. Somebody just needs to categorize the items
and create the entry links in the index. For tips without their own
anchor link (=all the recent issues), we'd just have to link to the
page.
<P> If we can build a framework that allows contributions from home, then
readers can submit, say, a text file containing all the index
entries for issue X (category, link title, URL), and a script can merge
these into the index. I can categorize the articles for each current
issue, and the Answer Gang can do the same for the tips, and volunteers
can do the back issues gradually one by one.
<H4>#2 -- Answer Gang/Clueful Hoard</H4>
<P> We need to get more people working on this before we all get burned out.
<P> Heather, can you and Jim propose some logistics on how we could
coordinate keeping the Gang together and getting each question to the Hoard and
moderating the answers? We first need to know what needs to be done, then we
can figure out who will do what.
<H4>#3 -- Moving the tech support letters/tips</H4>
<P> This will have to wait until the Answer Gang is ready to take it on.
<H4>#4 -- More articles/series</H4>
<P> This will take care of itself as potential authors propose things.
We can list in the Mailbag what series are missing and desired.
<BLOCKQUOTE>
This could easily become a longterm column of its own, the transformation
of one unfamiliar with programming into a script wizard and junior programmer.
Good idea.
</BLOCKQUOTE>
We have two articles this issue on shell scripting. If the authors
would like to put their heads together, perhaps they can come up with
some ideas and manpower for a series or two. Programming of course
covers several areas: shell, scripting languages (Python, Perl, etc.),
C-like languages, assembly/low-level stuff, and others. One series
would be able to cover probably only one of those.
<BLOCKQUOTE>
Didn't we used to have a "weekend mechanic" section?
</BLOCKQUOTE>
We did, but the author John Fisk is no longer available. If somebody
wishes to revive it, that would be great.
<!-- *** BEGIN copyright *** -->
<P> <hr> <P>
<H5 ALIGN=center>
This page written and maintained by the Editor of the <I>Linux Gazette</I>.
Copyright &copy; 2000, <A HREF="mailto:gazette@ssc.com">gazette@ssc.com</A><BR>
Published in Issue 53 of <i>Linux Gazette</i>, May 2000</H5>
<!-- *** END copyright *** -->
<H4>"Linux Gazette...<I>making Linux just a little more fun!</I>"</H4>
<HR>
<center>
<table cellpadding=7><tr><td>
<IMG SRC="../gx/bytes.gif" border=1 ALT="News Bytes">
</td><td>
<H3>Contents:</H3>
<ul>
<li><a HREF="#distro">Distro News</A>
<li><a HREF="#general">News in General</a>
<li><a HREF="#software">Software Announcements</a>
</ul>
</td></tr></table>
</center>
<P> <hr> <P>
<!-- =================================================================== -->
<center><IMG ALT=" " SRC="gx/cover73.jpg" WIDTH=200 HEIGHT=268></center>
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
<font color="green">
May 2000 <I>Linux Journal</I>
</font>
</H3>
<P>
The May issue of <A HREF="http://www.linuxjournal.com/"><I>Linux
Journal</I></A> is on the newsstands now.
This issue focuses on Programming and includes a
<STRONG>Python supplement</STRONG>.
<P> <I>Linux Journal</I> has articles that appear "Strictly On-Line".
Check out the Table of Contents at
<A HREF="http://www.linuxjournal.com/issue73/index.html">
http://www.linuxjournal.com/issue73/index.html</A> for articles in
this issue as well as links to the on-line articles.
To subscribe to <I>Linux Journal</I>, go to <A
HREF="http://www.linuxjournal.com/subscribe/index.html">
http://www.linuxjournal.com/subscribe/index.html</A>.
<P>
<font color="green">
For Subcribers Only</font>: <I>Linux Journal</I> archives are available
on-line at
<A HREF="http://interactive.linuxjournal.com">
http://interactive.linuxjournal.com/</A>
<a name="distro"></a>
<p><hr><p>
<!-- =================================================================== -->
<center><H3><font color="green">Distro News</font></H3></center>
<P> <hr> <P>
<!-- =================================================================== -->
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
<FONT COLOR="green">BlueCat
</FONT>
</H3>
<P> SAN JOSE, Calif. - March 6, 2000 - Lynx Real-Time Systems, Inc., today
announced delivery of Hewlett-Packard Company's (HP) ChaiVM, embedded
virtual-machine technology on Lynx' BlueCat Linux operating system (OS).
BlueCat users can now field soft real-time Java applications in a wide
range of products using the Java-compliant embedded virtual machine from HP.
<P> BlueCat offers a fast, interpretive byte code execution and a Java
native interface to bind Java threads to BlueCat pthreads for deterministic
scheduling. BlueCat features a reduced run-time footprint, as small as
600K, and concurrent, incremental garbage collection contributing to
predictable soft real-time performance.
<P> <hr> <P>
<!-- =================================================================== -->
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
<FONT COLOR="green">Corel
</FONT>
</H3>
<P> Following the launch of Corel LINUX OS in November 1999, Corel's U.S.
retail market share for Linux increased more than eight times to 19.3
per cent as of February 2000. Prior to the release of Corel LINUX OS,
the company held 2.3 per cent of the retail market share based on sales
of Corel WordPerfect 8 for Linux. Corel also released WordPerfect
Office 2000 for Linux in March.
<P>
The free Corel LINUX OS Download is NOW available! Check it out at
<A HREF="http://linux.corel.com/">http://linux.corel.com/</A>
<P> <hr> <P>
<!-- =================================================================== -->
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
<FONT COLOR="green">Debian
</FONT>
</H3>
<P> Debian has recently added another machine to its computing resources. The
system is an UltraSPARC 60 with dual 360Mhz CPU's and 512Megs of RAM. It
was donated by Sun Microsystems <http://www.sun.com/>. To add to the system,
Sun also donated a Netra st A1000 Telecom Class storage array. The array
contains eight 9gig 10k RPM drives, for a total of 72gigs of raw capacity.
The storage unit, configured as a RAID 5 system, will serve as Debian's new
primary internal archive server. IntraServer <http://www.intraserver.com/>
also assisted in getting this system operational by donating the PCI
Differential UltraWide SCSI Controller that the array is attached to.
<P> The system is currently running Debian's frozen SPARC GNU/Linux
distribution, potato (aka, Debian 2.2), utilizing a 2.2.15-pre11 SMP
kernel. The machine is being hosted at VisiNet <http://www.visi.net/>,
a Winstar owned ISP <http://www.winstar.com/>.
<P> Debian wishes to thank all of the contributors of the system and hosting
site as well as the developers who invested time and effort into testing and
configuring the system for Debian's network. Thank you!
<P> <hr> <P>
<!-- =================================================================== -->
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
<FONT COLOR="green">Mandrake
</FONT>
</H3>
<P> INDIANAPOLIS - March 27, 2000 - Macmillan USA, the Place for Linux,
(<A HREF="http://www.placeforlinux.com">www.placeforlinux.com</A>), announced
Secure Server 7.0 for professional server administrators. Macmillan's new
product is a secure Linux web server built within the new Linux<75>-Mandrake(tm)
7.0 operating system. With Secure Server 7.0, managers of mid-level traffic
web sites will have a secure server solution.
<P> Secure Server 7.0 provides graphical tools for easy Linux installation
and disk partitioning. The Apache-based web server utilizes RSA's
BSAFE<EFBFBD> SSL-C technology - the best technology available for encryption
and security. Secure Server 7.0 is designed for the Linux professional
responsible for managing an e-commerce, intranet or any web site
requiring security. Additional tools, utilities, and documentation
round out the product, providing more value and functionality.
<P> Secure Server 7.0 is available now at an MSRP of U.S. $149.95.
<P> <hr> <P>
<!-- =================================================================== -->
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
<FONT COLOR="green">SuSE
</FONT>
</H3>
<P> NUREMBERG, Germany -- March 13, 2000 -- SuSE Linux today announced that
it has designated VA Linux Systems' SourceForge, the
world's largest Open Source development center, as a primary mirror for
ftp.suse.com, to help improve the availability of SuSE Linux via download.
<P> SuSE Linux is available for download at
<A HREF="ftp://download.sourceforge.net/pub/suse/">
ftp://download.sourceforge.net/pub/suse/</A>, which carries the full FTP
version of SuSE Linux, as well as ISO images of the evaluation version,
updates and fixes.
<P> Further, SuSE Linux is now offered as a platform on the SourceForge
CompileFarm, a unique service that gives Open Source developers a
convenient way to build and test applications on multiple versions of
the Linux and BSD operating systems over the Internet. The SourceForge
CompileFarm enables Open Source developers to automatically create
packages that can be installed on SuSE Linux using SuSE's YaST
installation tool, without having to compile the programs manually.
<P>
SuSE announced a deal with Fugitsu
Siemens Computers, Siemens Business Services and Siemens IT Service to
deliver SuSE Linux-based systems with complete customer and sales support.
With a global reach, the Fujitsu/Siemens and SuSE agreement allows the above
partners to deliver an encompassing enterprise Linux solution to thousands
of potential customers.
<P> SuSE will disperse a free distribution CD within the June 2000 issue of
MacTech Magazine.
This CD will be a fully working distribution of Linux on the 2.2.14 kernel,
with SuSE's powerful installation tool as well as other open-source
software. This CD does not expire and can be distributed freely.
<P> SAN MATEO, CA and HANNOVER, GERMANY - March 14, 2000 - SuSE will now budle
Enlighten Software Solutions, Inc.'s Linux System Monitoring and Reporting
technology with the SuSE Linux 6.4 for Intel distribution. When enabled, the
Enlighten Linux Monitoring Agent will be able to monitor and report on critical
Linux system and operating conditions including processor, memory utilization,
changes in hardware and software configuration and increases in network errors.
<a name="general"></a>
<p><hr><p>
<!-- =================================================================== -->
<center><H3><font color="green">News in General</font></H3></center>
<P> <hr> <P>
<!-- =================================================================== -->
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
<FONT COLOR="green">Upcoming conferences &amp; events
</FONT>
</H3>
<P>
<table cellpadding=10 border=3 width=100%>
<tr>
<td valign=top>
<b>Forum of Free Software</b><BR>
<td valign=top>
May 4-5, 2000<BR>
Porto Alegre, RS, Brazil<BR>
English: <A HREF="http://www.softwarelivre.rs.gov.br/welc_ing.html" target=_blank>
http://www.softwarelivre.rs.gov.br/welc_ing.html</A><BR>
Portuguese: <A HREF="http://www.softwarelivre.rs.gov.br/welc_port.html" target=_blank>
http://www.softwarelivre.rs.gov.br/welc_port.html</A><BR>
<P>
</td></tr>
<tr>
<td valign=top>
<b>HPC Linux 2000</b>: Workshop on High-Performance Computing with
Linux Platforms<BR>
<td valign=top>
May 14-17, 2000<BR>
Beijing, China<BR>
<A
HREF="http://www.csis.hku.hk/~clwang/HPCLinux2000.html" target=_blank>
www.csis.hku.hk/~clwang/HPCLinux2000.html</A>
<P>
(In conjunction with <A
HREF="http://www.cs.wm.edu/hpcs/HPCAsia2000.html/" target=_blank>
HPC-ASIA 2000</A>:
The Fourth International Conference/Exhibition on
High Performance Computing in Asia-Pacific Region)
<P>
</td></tr>
<tr>
<td valign=top>
<b>Linux Canada</b><BR>
<td valign=top>
May 15-18, 2000<BR>
Toronto, Canada<BR>
<A HREF="http://www.linuxcanadaexpo.com" target=_blank>www.linuxcanadaexpo.com</A>
<P>
</td></tr>
<tr>
<td valign=top>
<b>Converge 2000</b><BR>
<td valign=top>
May 17-18, 2000<BR>
Alberta, Canada<BR>
<A HREF="http://www.converge2000.com" target=_blank>www.converge2000.com</A>
<P>
</td></tr>
<tr>
<td valign=top>
<b>SANE 2000</b>: 2nd International SANE (System Administration and
Networking)
Conference<BR>
<td valign=top>
May 22-25, 2000<BR>
MECC, Maastricht, The Netherlands<BR>
<A HREF="http://www.nluug.nl/events/sane2000/index.html" target=_blank>
www.nluug.nl/events/sane2000/index.html</A>
<P>
</td></tr>
<tr>
<td valign=top>
<b>ISPCON</b><BR>
<td valign=top>
May 23-25, 2000<BR>
Orlando, FL<BR>
<A HREF="http://www.ispcon.internet.com" target=_blank>www.ispcon.internet.com</A>
<P>
</td></tr>
<tr>
<td valign=top>
<b>Strictly Business Expo</b><BR>
<td valign=top>
June 7-9, 2000<BR>
Minneapolis, MN<BR>
<A HREF="http://www.strictly-business.net" target=_blank>www.strictly-business.com</A>
<P>
</td></tr>
<tr>
<td valign=top>
<b>USENIX</b><BR>
<td valign=top>
June 19-23, 2000<BR>
San Diego, CA<BR>
<A HREF="http://www.usenix.org/events/usenix2000/" target=_blank>www.usenix.org/events/usenix2000/</A>
<P>
</td></tr>
<tr>
<td valign=top>
<b>LinuxFest</b><BR>
<td valign=top>
June 20-24, 2000<BR>
Kansas City, KS<BR>
<A HREF="http://www.linuxfest.com" target=_blank>www.linuxfest.com</A><BR>
<P>
</td></tr>
<tr>
<td valign=top>
<b>PC Expo</b><BR>
<td valign=top>
June 27-29, 2000<BR>
New York, NY<BR>
<A HREF="http://www.pcexpo.com" target=_blank>www.pcexpo.com</A><BR>
<P>
</td></tr>
<tr>
<td valign=top>
<b>LinuxConference</b><BR>
<td valign=top>
June 27-28, 2000<BR>
Z&uuml;rich, Switzerland<BR>
<A HREF="http://www.linux-conference.ch" target=_blank>www.linux-conference.ch</A><BR>
<P>
</td></tr>
<tr>
<td valign=top>
<b>"Libre" Software Meeting #1<BR> (Rencontres mondiales du logiciels
libre)</b>, sponsored by ABUL (Linux Users Bordeaux Association)<BR>
<td valign=top>
July 5-9, 2000<BR>
Bordeaux, France<BR>
French: <A HREF="http://www.abul.org/rmll1-fr.html" target=_blank>
www.abul.org/rmll1-fr.html</A><BR>
English: <A HREF="http://www.abul.org/rmll1-uk.html" target=_blank>
www.abul.org/rmll1-uk.html</A>
<P>
</td></tr>
<tr>
<td valign=top>
<b>Summer COMDEX</b><BR>
<td valign=top>
July 12-14, 2000<BR>
Toronto, Canada<BR>
<A HREF="http://www.zdevents.com/comdex/" target=_blank>www.zdevents.com/comdex</A><BR>
<P>
</td></tr>
<tr>
<td valign=top>
<b>O'Reilly/2000 Open Source Software Convention</b><BR>
<td valign=top>
July 17-20, 2000<BR>
Monterey, CA<BR>
<A
HREF="http://conferences.oreilly.com/convention2000.html" target=_blank>
conferences.oreilly.com/convention2000.html</A><BR>
<P>
</td></tr>
<tr>
<td valign=top>
<b>Atlanta Linux Showcase</b><BR>
<td valign=top>
October 10-14, 2000<BR>
Atlanta, GA<BR>
<A HREF="http://www.linuxshowcase.org" target=_blank>www.linuxshowcase.org</A><BR>
<P>
</td></tr>
<tr>
<td valign=top>
<b>Web 2000</b><BR>
<td valign=top>
November 1-3, 2000<BR>
(Location unknown at present)<BR>
(URL unknown at present)<BR>
<P>
</td></tr>
<tr>
<td valign=top>
<b>Fall COMDEX</b><BR>
<td valign=top>
November 13-17, 2000<BR>
Las Vegas, NV<BR>
<A HREF="http://www.comdex.com" target=_blank>www.zdevents.com/comdex</A>
<P>
</td></tr>
<tr>
<td valign=top>
<b>USENIX Winter - LISA 2000</b><BR>
<td valign=top>
December 3-8, 2000<BR>
New Orleans, LA<BR>
<A HREF="http://www.usenix.org" target=_blank>www.usenix.org</A>
<P>
</td></tr>
<tr>
<td valign=top>
<b>Linux Expo</b><BR>
<td valign=top>
(Dates unknown at present)<BR>
San Jose, CA<BR>
(URL unknown at present)<BR>
<P>
</td></tr>
<tr>
<td valign=top>
<b>ISPCON</b><BR>
<td valign=top>
(Dates unknown at present)<BR>
San Jose, CA<BR>
<A HREF="http://www.ispcon.internet.com" target=_blank>www.ispcon.internet.com</A><BR>
<P>
</td></tr>
</table>
<P> <hr> <P>
<!-- =================================================================== -->
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
<FONT COLOR="green">Magic Software news
</FONT>
</H3>
<BLOCKQUOTE> <EM>
[Magic Software sent in these beautiful penguin photos from Antarctica.
<P>
<CENTER>
<IMG ALT="Diving Penguins" SRC="gx/bytes/magic/Diving_Penguins.jpg"
WIDTH="418" HEIGHT="280">
<IMG ALT="Sea of Penguins" SRC="gx/bytes/magic/Sea_of_Penguins.jpg"
WIDTH="418" HEIGHT="281">
</CENTER>
<P> The pictures were taken when Mike McMillin won the Magic for Linux Really
Cool Contest and embarked on his prize--an 18-day cruise around Antarctica and
its surrounding islands.
<P> Thanks, Magic! -Ed.]
</EM> </BLOCKQUOTE>
<P> Magic introduced eService, the Company's new Web-based, enterprise-level
customer service management system that allows companies to manage their
service departments as profit centers. The new product, which marks the debut
of Magic's new customer relationship management (CRM) suite, streamlines
service workflow and provides companies a comprehensive picture of their
service departments in real time.
<P> In addition, Magic eService reduces costs by making it possible for
companies to employ cost-effective "virtual support centers," where service
agents can work from their own homes around the world. Virtual support centers
also allow the organization to easily provide 24-hour, seven day a week support
through "follow-the-sun" service that utilizes the availability of the
Internet.
<P> Magic has also signed a deal to deliver MiTAC Europe Ltd. Powered by
Magic's eMerchant, the web site will provide consumers easy access to a wide
range of mall-type stores through a three-dimensional interface that helps
simulate a true store-to-store mall shopping experience for the visitor. It is
a site that MiTAC expects will revolutionize the design and convenience of
online shopping sites. eMerchant is available for Linux.
<P>
<P> <hr> <P>
<!-- =================================================================== -->
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
<FONT COLOR="green">PileofPcs.Org: open-source Beowulf project
</FONT>
</H3>
<P> (STOCKHOLM,SWEDEN) (April 17, 2000) In an effort to address some of the
barriers that are limiting the spread of Beowulf class cluster-based
supercomputer,
<A HREF="http://www.Pileofpcs.Org">Pileofpcs.Org</A> has been created. It is
dedicated to the proliferation of cluster-based supercomputing (i.e. Beowulf
class computers) by creating, promoting and sponsoring the Open Source
development of distributions, applications and tools comparable to those sold
by traditional supercomputer vendors. All three of our initial projects are
being hosted at Sourceforge.net.
<P> "PileofPcs.Org hopes to hasten the day that clusters of cheap computers
become more useful. Our intention is to apply all the technology,
resources and volunteers we can to help the growth of cluster-based high
performance computing as fast as it possibly can. Furthermore, the
PileofPcs.Org is imbedded and wedded to the Open-Source Philosophy and
community," Dr. Terrence E. Brown, Founder/Executive Director.
<P> We are doing this in a number of ways. First, we are creating a new Linux
distribution (and tools) that will allow anyone to easily create a general
purpose supercomputer - a Vanilla Beowulf without being a linux programming
expert. Second, given that a supercomputer is worthless unless it does
something; therefore, perhaps more importantly, we are also, sponsoring the
development of wide range of useful applications both parallel and
parametric. Additionally, one of the biggest problem with deploying
scalable production-class superclusters is the lack of mature and tested
management tools comparable to what the traditional supercomputer vendors
provide. PilesofPcs.Org aims to change this as well.
<P> Current Projects
1. A new linux distribution that will allow those with limited technical
knowledge create a vanilla Beowulf class supercomputer. SuperClustor Linux
is hosted here.
<A HREF="http://sourceforge.net/project/?group_id=4302">http://sourceforge.net/project/?group_id=4302</A>
<P> 2. An Open source version of an base application that would delivers the
high level of performance required for parametric executions by
distributing the jobs over a computer cluster and/or network. This
application will allow users of cluster systems to using already existing
programs with little of no rewriting. Commercial products that do similar
tasks include Clustor and EnFuzion. This would be an open source
alternative to them. OpenClustor is hosted here.
http://sourceforge.net/project/?group_idC03
<P> 3. An open source version of a base application that would enable users
with no particular knowledge in Linux, to setup, configure and manage a
linux cluster. With ease of use so that simple click is enough to add or
remove nodes, monitor processors loads and temperatures. Users will no
longer be required to anymore to allocate specific resources to build and
maintain their cluster supercomputer. A commercial product of this nature
include Alinka's Raisin. SuperCluster Manager is hosted here.
<A HREF="http://sourceforge.net/project/?group_id=4304">http://sourceforge.net/project/?group_id=4304</A>
<P> PileofPcs.Org is looking to support and encourage the development many
other application and/or tool projects including two special types: those
requiring parallelization and those supporting parametric execution. We
want to spur the development applications for all types of situations
including, but not limited to science, finance, multimedia, bioinformatics,
statistics, weather, data mining, design, neural networks, modelling, etc.
<P> 1. Parallelized applications - Although efficient parallelization is a
property of the specific beowulf computer, we believe that we can promote
the creation of pre-parallelized applications. While this will be a
challenge, creating a repository for pre-parallelized and parallelized code
with help speed the development of useable applications for all.
<P> 2. Applications that support parametric execution - Parametric executions
require that the same application is executed numerous times. A single
application is run under a wide range of input conditions and the results
of these different runs are collected together. Parametric executions are
ideally suited to run on large computing clusters, since they produce a lot
of jobs, often exceeding thousands. These applications will allow users to
tap power of distributed computing.
<P> PileofPcs.Org is looking for Project leaders, developers, html designers,
and all others interested in the PileofPcs.Org and Open Source movement.
PileofPcs.Org is also looking for software and hardware sponsors to
facilitate the rapid development and deployment of our efforts.
<P> Contact: Dr. Terrence E. Brown<BR>
<A HREF="mailto:drbrown@pileofpcs.org">drbrown@pileofpcs.org</A><BR>
<A HREF="http://www.PileofPcs.Org">www.PileofPcs.Org</A><BR>
+46 8 790 6174
<P> <hr> <P>
<!-- =================================================================== -->
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
<FONT COLOR="green">Seagate Partners with cobalt Networks
</FONT>
</H3>
<P> SCOTTS VALLEY, CA and MOUNTAIN VIEW, CA - April 3, 2000 - Seagate
Technology, Inc., announced
the first of a suite of Linux-based server appliances targeted at Internet
and Application Service Providers (ISPs and ASPs), through a strategic
partnership with Cobalt Networks, Inc. The first Seagate
Server Appliance Solution, scheduled to be available this summer, is an
easy-to-use, cost-effective solution that provides scablable storage and
reliable data protection for ISPs and ASPs. The Seagate Server Appliance
Solution enables ISPs and ASPs to generate incremental revenue through
"vending" storage and data protection applications to their small and
medium-sized customers.
<P>
<A HREF="http://www.seagate.com">http://www.seagate.com</A><BR>
<A HREF="http://www.cobalt.com">http://www.cobalt.com</A><BR>
<P> <hr> <P>
<!-- =================================================================== -->
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
<FONT COLOR="green">Agate HotData Shuttle
</FONT>
</H3>
<P> FREMONT, Calif., March 30 -- Agate Technologies, Inc. today announced the
release of its popular HotData Shuttle(TM) hot swap IDE Plug &amp; Play
solution, designed to support the Linux operating system on Intel based
workstations and Internet Server Appliances.
<P> IDE hot swap is an industry term used to describe technology, which allows
a component of a computer, such as a hard drive, to be attached or detached
physically and electrically without impeding the performance and state of the
computer. Agate provides this hot swap data-transfer capability by integrating
its proprietary ASCII HotChip(TM) with an interface Printed Circuit Board (PCB)
mounted in a generic device bay. The end result is the only true hot swap
solution available today.
<P> Priced at $49.95 (U.S.), HotData Shuttle for Linux comes with Shuttle
bay/Tray, software driver, and mounting kit. HotData Shuttle(TM) for Linux will
be marketed and distributed through its fully owned subsidiary, ei Corporation.
<P> <hr> <P>
<!-- =================================================================== -->
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
<FONT COLOR="green">Penguin power credited for 100.000% network availability
</FONT>
</H3>
<P> NORTH QUINCY, MASS: Wednesday, April 5, 2000: Jeff Morris, President of the
Xensei Corporation
(<A HREF="http://www.xensei.com">http://www.xensei.com</A>), announced today
that they have reached a service level milestone that will allow them to begin
rolling out high-availability web hosting, an emerging service level that has
now become business-critical for eCommerce. High-availability hosting is
required by successful eCommerce sites to ensure that their site will be "up",
or open for business for a pre-determined percentage of time-often guaranteed
in a service-level agreement (SLA).
<P> He commented that, "Our customers have certainly appreciated the increased
reliability of our hosting service as network availability has increased to
99.982% over the past year, and 100.000% over the last 90 days."
<P> There are multiple grades of high-availability hosting-they are named
according to the number of "nines" in the uptime percentage. 90% is one nine or
Class I, 99% is two nines or Class II, 99.9% is three nines or Class III, and
so on. Class V is 99.999% and means that the site is down only 5 minutes per
year as opposed to a Class 1 which means that your site is down for 876 hours
per year (or 73 hours per month). Most hosting providers are currently
providing Class I or lower hosting. Few offer the guarantee of an SLA.
<P> Class 1 hosting is most appropriate for companies interested in maintaining
an Internet presence that is informative in nature. Class II hosting is
recommended for companies who are outsourcing their e-mail system or doing
P.O.S. retailing over the Internet. Class IV hosting is required by companies
involved in Manufacturing, Utilities, Telecommunications Customer Service, or
whose business is strictly eCommerce. Class V hosting is business critical to
health systems, satellite navigation, reservation systems, banking (EFT and ATM
transactions) and financial securities trading. Class VI (99.9999%) hosting is
used by defense systems in launch readiness.
<P> <hr> <P>
<!-- =================================================================== -->
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
<FONT COLOR="green">LinuxMall news
</FONT>
</H3>
<P> DENVER - The first Linux product orders from LinuxMall.com's
<A HREF="http://www.linuxmall.com">web site</A> are
being filled through Frank Kasper &amp; Associates' Minneapolis, Minn.
warehouse. The fulfillment operation is a key component of the recently
announced merger between LinuxMall.com and Frank Kasper &amp; Associates.
<P> LinuxMall sponsored all four Linux Business Expo Community Hubs. Linux
Community Hubs provide free booth space to non-profit organizations that make
significant contributions to the Linux and Open Source movement.
<P> <hr> <P>
<!-- =================================================================== -->
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
<FONT COLOR="green">Tux and DustPuppy (Linux Mall)
</FONT>
</H3>
<P> DENVER - Tux the penguin and Dust Puppy, the hottest celebrities in the
IT technical community, have announced their partnership agreement. Geeks from
around the Internet are gathering to support the cuddly mascots in the joint
venture.
The partnership between Tux, the Linux mascot and User Friendly's Dust
Puppy clears the way for a cross-marketing agreement between LinuxMall.com and
<A HREF="http://Userfriendly.org">Userfriendly.org</A>.
<P> "I'm thrilled about the Little Guy and my new friends at User Friendly," said Tux in response to the agreement. "My favorite thing to do after eating a few gallons of raw herring, is to curl up with Dust Puppy and the cast of User Friendly. Now I'll get some laughs first-hand."
<P> "Tux and the whole Linux community are way-cool," the Canadian Dust Puppy remarked. "I'm looking forward to some major appearances together in the future."
<P> <hr> <P>
<!-- =================================================================== -->
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
<FONT COLOR="green">Linux Expo North America (review)
</FONT>
</H3>
<P> Montreal, April 18, 2000 - The first ever Linux Expo North America was a
marked success. Close to 4,500 visitors made their way through the snow storm
to attend the Expo at Palais des Congr<67>s. The slight shortfall in the number of
visitors due to Mother Nature's whimsy was more than made up for in the
discernible quality of visitors. The success of this first edition set the tone
for future shows in Toronto in October and in Montreal in April 2001.
<P> "The comments we've received from the majority of our 102 exhibitors confirm
that our choice of quality versus quantity of visitors, was indeed the best
strategy for positioning our event as one of the great shows in the Linux North
America circuit" declared St<53>phane Labrouche, V.P. and Director General of Sky
Events, show organizers.
<P> Linux Expo North America is already scheduled to take place in Montreal from
April 10 to 12, 2001. In the meantime, the event will be held in Sao Paulo June
20 and 21, 2000 and at Toronto's Metro Convention Center October 30, 31 and
November 1, 2000.
<P> <A HREF="http://www.linuxexpocanada.com">www.linuxexpocanada.com</A>
<P> <hr> <P>
<!-- =================================================================== -->
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
<FONT COLOR="green">Hewlett-Packard to bundle TapeWare Linux software its
tape drives
</FONT>
</H3>
<P> FRESNO, CA., February 14 ( Yosemite Technologies, Inc. today announced an
agreement with Hewlett-Packard Company to bundle Yosemite's storage management
software, TapeWare, with the HP SureStore family of DAT, and DLT tape drives.
<P> HP gains a powerful, comprehensive, yet intuitive backup technology that
has been often rated superior to other industry leading backup applications and
the bundled solution will provide additional support for the innovative new HP
One-Button Disaster Recovery (OBDR) feature, for integrated full-system
restoration. HP's OBDR offers a fast, simple solution to return a server or
desktop system to its normal operational state following a crash.
<P> "Introducing TapeWare into HP SureStore products offers a complete backup
solution and One-Button Disaster Recovery for Windows NT and NetWare" says
Peter Doughty, marketing manager for HP Computer Peripherals Bristol. "It also
provides HP SureStore customers with the ability to backup Linux servers and
workstations."
<P> <A HREF="http://www.tapeware.com">http://www.tapeware.com</A>
<P> <hr> <P>
<!-- =================================================================== -->
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
<FONT COLOR="green">NetWinder OfficeServer 1.5
</FONT>
</H3>
<P> OTTAWA, Canada - April 5, 2000 - Rebel.com Inc. announced the availability
of an upgrade to its OfficeServer software - NetWinder OfficeServer 1.5.
<P> NetWinder OfficeServer 1.5 is an all-in-one Internet gateway server
appliance which provides small and medium-sized businesses with full
Internet and local area network support. Based on the Linux operating
system, NetWinder OfficeServer 1.5 is configured with a broad range of
network services such as firewall/VPN, Web site hosting, Web access, file
and printer sharing and e-mail.
<P> Features and enhancements to NetWinder OfficeServer 1.5 include:
<P> * PPPoE (PPP over Ethernet) support - PPPoE is a relatively new protocol that
specifies how a computer interacts with a broadband modem (ie. xDSL, cable,
wireless, etc.) to achieve access to the growing number of highspeed data
networks;
<P> * Third-party plug-in to allow developers to add applications independently
to the OfficeServer;
<P> * Dynamic Host Configuration Protocol (DHCP) client has been upgraded to
support the @home cable modem service.
<P> The security features of the OfficeServer have been significantly enhanced
in order to keep pace with industry-standard security criteria. This
includes more secure default firewall rules and increased privacy protection
in the mail server. In addition, NetWinder OfficeServer 1.5 now allows users
to securely connect to their OfficeServer-protected LAN anywhere in the
world using the Virtual Private Network (VPN) software. The VPN software is
bundled with the OfficeServer at no additional charge and includes 3 free
client licenses.
<A HREF="http://shop.rebel.com/netwinder/officeserver.cfm">
http://shop.rebel.com/netwinder/officeserver.cfm</A>
<P> <hr> <P>
<!-- =================================================================== -->
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
<FONT COLOR="green">Cobalt RaQ3i Systems and Phoenix Adaptive Firewall
</H3></H3> <!-- Netscape shouldn't need the extra </H3>, but for some
reason it does. -->
<P> COLUMBUS, OH, (April 11, 2000) Progressive Systems, Inc., has implemented
its Phoenix Adaptive Firewall onto Cobalt Networks' platform. Designed for the
many small and medium sized businesses (SMBs) that are implementing full-time
Internet access but have growing security concerns, the new firewall appliance
can be quickly installed and configured to provide very effective protection
that is transparent to the network. This new implementation joins
Progressive's existing firewall appliance based on the Cobalt Qube and Cobalt
RaQ server appliances.
<P> The fully featured product will sell for $4495 for unlimited users.
<P> <A HREF="http://www.progressive-systems.com">
http://www.progressive-systems.com</A>
<P> <hr> <P>
<!-- =================================================================== -->
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
<FONT COLOR="green">Cobalt Networks Named As Worldwide Market Share Leader
</FONT>
</H3>
<P> Mountain View, Calif., April 24, 2000- Cobalt Networks, Inc.
announced today that it was named as the worldwide leader in unit market
share for server appliances in the 1999 Server Appliance report published by
Dataquest on April 3, 2000. The Dataquest report names Cobalt as the unit
share leader for the total market, as well as for the entry-level and
midrange market segments.
<P> Server appliances are application-specific devices. Cobalt's products are
affordable, easy to use, and designed to support one or a few applications
well. Cobalt's product line includes server appliances focused on Web and
e-commerce hosting, e-mail, firewall, caching, and many other Internet-based
applications. In addition, the Cobalt Developer's Network, launched in the
first quarter of 2000, has attracted over 600 application developers to the
Cobalt server appliance platform.
<P> <A HREF="http://www.cobalt.com">http://www.cobalt.com</A>
<P> <hr> <P>
<!-- =================================================================== -->
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
<FONT COLOR="green">The World's First SANappliance hits the street
</FONT>
</H3>
<P> SPRING INTERNET WORLD -- Apr. 5, 2000 -- DataDirect Networks, Inc., a
leader in SAN network infrastructure solutions, today is releasing the SAN
DataDirector<EFBFBD>, the world's first storage area network (SAN) appliance. The SAN
DataDirector is an intelligent network infrastructure device incorporating the
functionality of next generation SANs into a single integrated, reliable, plug
and play appliance that makes it easier to build and manage a SAN.
<P> The SAN DataDirector allows UNIX,
Linux, clustered Linux, Sun, SGI, AIX, Mac and Windows NT servers and
workstations to access shared storage resources, permitting workgroups and
clusters within a heterogeneous computing environment with incompatible
operating systems to simultaneously share storage resources. The SAN
DataDirector easily plugs into existing servers and storage, increasing their
capabilities while providing investment protection. This capability enables
data access between SAN and client-server users bridging the SAN and NAS
environments, while also upgrading legacy storage into intelligent storage
resources.
<P> <A HREF="http://www.datadirectnet.com">www.datadirectnet.com</A>
<P> <hr> <P>
<!-- =================================================================== -->
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
<FONT COLOR="green">Technical Manager Wanted - NetJammer.com
</FONT>
</H3>
<P> <A HREF="http://www.netjammer.com/">netjammer.com</A>
is looking for a Linux-capable webmaster that could
handle the administrative / webmaster / maintenance side of the site.
<P> It's a very uncorporate "musician" and internet environment.
<P> The Technical Manager's desired skills include all aspects of server
administration and webmastering, HTML, Javascript, Perl, rich media
(audio/video) development and delivery, writing ad copy, tech support, etc.
<P> Pay is negotiable.
Company is located in Hollywood.
<P> PLEASE CONTACT:
Chapin Hemphill at <A HREF="mailto:jobs@netjammer.com">jobs@netjammer.com</A>
<P> <hr> <P>
<!-- =================================================================== -->
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
<FONT COLOR="green">Linux Links
</FONT>
</H3>
<P> LinuxDevices.com articles re embedded systems:
<UL>
<LI> <A HREF="http://linuxdevices.com/cgi-bin/article_view.cgi?artid=AT7901775675">
Linux and Windows square off over devices</A> and why Linux will win.
<LI> <A HREF="http://www.linuxdevices.com/cgi-bin/news_view.cgi?newsid=NS8757266703">
Embedded Linux Consortium launched</A>
</UL>
<P> <A HREF="http://www.team-linux.com">TeamLinux</A> is a professional
services organization that provides customers completely integrated solutions
enabled by open source / Linux technology. TeamLinux offers
consulting, design, integration, migration, training and support services
for many business applications, including: e-commerce, Internet-enabled
business- to-business, Computer Aided Design (CAD), Electronic Design
Automation (EDA), embedded systems and Internet appliance applications.
<P> <A HREF="http://userlocal.com">http://userlocal.com</A> is a site with
information for new Linux users. (from comp.os.linux.announce)
<P> <A HREF="http://www.linuxnetworx.com">Linux NetworX</A> offers a
reliable and cost-effective clustering alternative to the "super computer" for
organizations demanding high performance and extremely low failure rates.
<a name="software"></a>
<P> <hr> <P>
<!-- =================================================================== -->
<center><H3><font color="green">Software Announcements</font></H3></center>
<P> <hr> <P>
<!-- =================================================================== -->
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
<FONT COLOR="green">OpenAL: a 3D audio library
</FONT>
</H3>
<P> San Jose, CA. -- March 8, 2000 -- Loki Entertainment Software, the
leading publisher of commercial games for the Linux operating system,
announced a multi-company project to create and distribute OpenAL,
an open-source, cross-platform 3D-Audio library.
<P> 3D-Audio greatly improves the immersive quality of a game. It allows
games and other applications to take advantage of powerful spacialized
sound effects, including distance and direction attenuation, panning and
reverb. With these features, gamers can, for example, determine by sound
the distance and direction of an explosion in a 3D-gaming environment.
<P> "OpenAL represents a milestone for Linux and for the game industry in
general," said Scott Draeker, president, Loki Entertainment Software.
"Until now, games running on Linux have not had access to the advanced
3D-Audio features available on other platforms. OpenAL provides those
advanced features with an open-source, nonproprietary implementation
which is available not just for Linux, but for Windows and MacOS games as
well. What SGI's OpenGL has done for 3D-Video, OpenAL will do for
3D-Audio."
<P> Creative Technology,
plans to release Linux drivers that will work with OpenAL, and which
natively support the advanced 3D-Audio effects which OpenAL enables. In
addition, Creative is evaluating MacOS and Windows implementations of the
OpenAL standard
<P> Loki is already incorporating OpenAL into its growing product line of
AAA Linux games. In March, Loki will release the Linux version of
Activision's Heavy Gear II, the first Linux game to support 3D-Audio
using OpenAL.
<P> The source code for OpenAL for Mac, Windows and Linux is freely available
for download and is offered under the GNU Library Public License (LGPL).
Visit <A HREF="http://www.openal.org">www.openal.org</A> for more information.
<P> <hr> <P>
<!-- =================================================================== -->
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
<FONT COLOR="green">Joydesk
</FONT>
</H3>
<P> Seattle, Washington--March 3, 2000--
Virtualtek/<A HREF="http://Joydesk.com">Joydesk.com</A> announces the release
of the wireless version of the popular Joydesk software for March 15, 2000.
The software enables users to access all the functionality of their web-based
collaboration applications from the minibrowser of their Internet ready
cellular phone.
<P> Joydesk is a fully featured information management suite of
applications with its own built-in mail server. Users can send or receive
e-mail, check their schedule, access contact information, manage tasks, share
information or receive urgent e-mail notification from the web at anytime, from
any location and through any browser, web-enabled PDA, and now, from any
Internet ready phone.
<P> A free 30 day trial version is available for
download.
<P> <hr> <P>
<!-- =================================================================== -->
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
<FONT COLOR="green">Rogue Wave C++ Toolkit
</FONT>
</H3>
<P> BOULDER, CO - April 10, 2000 - Rogue Wave Software announced the release of
its comprehensive collection of C++ components for Linux. The C++ Toolkit for
Linux enables developers to easily create applications on the Linux platform.
<P> This special edition Linux-Only CD includes ports of Rogue Wave's most
popular cross-platform C++ products to the Linux platform, including
Standard C++ Library, Tools.h++, Threads.h++, Tools.h++ Professional,
DBTools.h++ and Money.h++. This new offering provides Linux developers with
basic data structures, threading classes, classes for accessing relational
databases and classes for business analysis and currency conversion.
<P> Pricing starts at $545 and includes a license and one year of Silver
Technical Support and product updates.
<P> <hr> <P>
<!-- =================================================================== -->
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
<FONT COLOR="green">TopPage
</FONT>
</H3>
<P> IBM has recently developed a WYSIWYG HTML editor for
Linux (beta) TopPage is an award-winning
WYSIWYG HTML editor which allows you to create dazzling Web pages in minutes
without any HTML knowledge or programming skills. It is suitable for beginners
and experts. It includes all the tools necessary to create Web pages, including
a WebArt Designer which lets you create logos and buttons, and a Web Animator
which lets you create animation GIF files with just a few simple steps. The
program includes up-to-date technology -- such as Cascading Style Sheets, Java
applets and Dynamic HTML. TopPage gives you the capability to build lively pages
with state-of-the-art Web technology. TopPage brings together everything you
need to build pages and publish your site in one package. Now the Linux version
(beta) is available. You can download it free from
<A HREF="http://www.ibm.com/jp/toppage/">http://www.ibm.com/jp/toppage/</A>
and use it until December 31, 2000.
<P> <hr> <P>
<!-- =================================================================== -->
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
<FONT COLOR="green">HancomLinux word processor spans Asian and European languages
</FONT>
</H3>
<P>
HancomLinux, Inc., a subsidiary of Haansoft which holds
80% of Korea's word processor market, has completed development of a Linux
version word processor targeted on overseas markets and will kick off on sales
this month.
<P> The
Chinese version "Wenjie" is still undergoing tests for supplying the program to
significant Linux PC corporations and has yet to select distributors. The
Chinese version is divided into two versions; version for users in mainland
China, and version for users in Hong Kong and Taiwan. The general users'
version will also include a Windows version.
<P>
"HancomWord," which has its target on English-speaking
regions, will begin sales immediately after beta testing is completed.
HancomWord is reported to be particularly convenient in that the selection of
various languages, not only English or French, but also languages such as
German, Greek, Russian, Spanish, Japanese and many more is possible without the
nuisance of extra procedures. The company currently hold the beta testing event
by free downloading
(<A HREF="http://www.hancom.com/english">http://www.hancom.com/english</A>) prior to official release.
This new word processor is prospected to surface as a new contestant in the
Linux Office market with its compatibility with HTML, text, and MS Word
documents.
<P>The
Japanese version will be under the name "Are-A Hangul 2000" and will be
exhibited at the Tokyo Linux Convention to be held next
month.
<P>The
successful porting of LinuxHangul from Windows Hangul, which has undergone
continuous improvement for the past 10 years, was made possible by the
successful application of the 'Wine' technology. Wine
is a developing tool which facilitates the use of Windows application programs
in a Linux environment. This project has been openly operated with Linux
programmers from all over the world.
<P> HancomLinux has planned to seek overseas markets through cooperation with
local distributors and is reported to first finish development of programs
including spread sheet, graphics, presentation, etc. and then start seeking new
markets full scale with an competitive Office suite.
<P> <hr> <P>
<!-- =================================================================== -->
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
<FONT COLOR="green">Artstream
</FONT>
</H3>
<P> A new release of Artstream, version 2.0b11-3, has now been posted. This
version has several enhancements and fixes.
<P> All the patches needed for the Mesa library are now including in the
Mesa developer distribution of version 3.2 and later at
<A HREF="http://mesa3d.sourceforge.net/devel.html#branches">
http://mesa3d.sourceforge.net/devel.html#branches</A>. This version will
soon become the official release. If desired an rpm of this release is
still available from the Mediascape site.
<P> Both the new Artstream and the Mesa rpms are available at:
<A HREF="http://www.mediascape.com/linuxrpm.html">
http://www.mediascape.com/linuxrpm.html</A>
<P> Documentation remains at:
<A HREF="http://www.mediascape.com/mediaEscape/guide.html">
http://www.mediascape.com/mediaEscape/guide.html</A>
<P> In this release some text functionality is still omitted until we
complete our licensing of certain spelling and hyphenation dictionaries
for Linux. However all illustration tools should be intact.
<P> <hr> <P>
<!-- =================================================================== -->
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
<FONT COLOR="green">Corel news
</FONT>
</H3>
<P> Ottawa, Canada - April 11, 2000 - CorelDRAW 9 for Linux will be available
in July, two months earlier than scheduled. In addition, Corel VENTURA
Publisher 8.5 for Linux and Windows will be available by the end of this year
and the free download of Corel PHOTO-PAINT 9 for Linux will be available in
June.
<P> The first beta of CorelDRAW 9 for Linux was sent to beta sites April 7.
<P> Ottawa, Ontario - March 10, 2000 - Corel Corporation today announced it
will offer a free download of Corel PHOTO-PAINT<4E> 9 for Linux. The download
version of Corel PHOTO-PAINT 9 for Linux, Corel's photo-editing, image
composition and painting application, will be available in early summer.
<P> A retail version of CorelDRAW 9 Graphics Suite for Linux which includes
Corel PHOTO-PAINT 9 will ship late summer 2000 with comparable pricing
to the Windows version of this product.
<P> <hr> <P>
<!-- =================================================================== -->
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
<FONT COLOR="green">Helix GNOME
</FONT>
</H3>
<P> Cambridge, MA - March 6, 2000 - Helix Code, Inc. today unveiled a preview
version of its Helix GNOME desktop -- a collection of more than 80
industry-leading software applications designed to meet every need of the
Linux user.
<P> "As open source software, GNOME is a significant step forward
technologically; we have effectively leap-frogged the legacy problems which
are keeping software development in a state of little progress. Innovation
will finally be brought back to software. And the Helix
GNOME desktop means that all of this is available to end-users with very
little effort," said Miguel de Icaza, co-founder of Helix Code, who recently
was named as one of the "50 Leaders of the New Millennium" by Time Magazine
and CNN.
<P> For more information about Helix GNOME, and to download the preview release
version of the Helix GNOME desktop, visit the Helix Code, Inc. website at
<A HREF="http://www.helixcode.com">www.helixcode.com</A>.
<P> Helix Code Inc. is an open source software company that produces
high-quality productivity applications under the terms of the GNU GPL.
Helix Code, Inc., is devoted to improving GNOME, the leading desktop
environment for Linux.
<BLOCKQUOTE> <EM>
[An <A HREF="correa1.html">interview with Miguel de Icaza</A> is in this
issue of <EM>Linux Gazette</EM>. -Ed.]
</EM> </BLOCKQUOTE>
<P> <hr> <P>
<!-- =================================================================== -->
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
<FONT COLOR="green">Exile III: Ruined World
</FONT>
</H3>
<P> Spiderweb Software and Boutell.com proudly present Exile III: Ruined World!
Exile III: Ruined World is an epic fantasy role-playing game for Linux,
featuring a fascinating plot, detailed and enormous world, and an elegant
game system and interface.
<P> What makes Exile III exceptional? Well, it features ...
<UL>
<LI> Involving, intricate plot, with 200000 words of story!
<LI> An enormous, changing world. Do nothing, and things evolve around you.
Refugees move from town to town. Villages will be destroyed. Characters will
die. Monsters will gain territory.
<LI> Detailed, open ended system. Don't want to go on adventures? Do odd jobs.
Save up and buy a house. Go on one of dozens of side missions. Explore an
enormous outdoors with well over a hundred dungeons and towns. Just go
through people's houses and rummage through their stuff!
<LI> Pleasing, professionally done graphics and sound.
<LI> Carefully designed interface, with comprehensive online help, adventure
journals, and design with an eye towards enabling you to do everything with
the minimum amount of fuss.
</UL>
<P> <A HREF="http://www.spiderwebsoftware.com/exile3/linuxexile3.html">
http://www.spiderwebsoftware.com/exile3/linuxexile3.html</A>
<P> <hr> <P>
<!-- =================================================================== -->
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
<FONT COLOR="green">Tripp Lite's UPS gets Red Hat
</FONT>
</H3>
<P> Chicago, IL (April 13, 2000)-Tripp Lite, a manufacturer of power
protection products, has established another milestone in its support for the
Linux development community. Tripp Lite's PowerAlert UPS Management Software
has been tested and approved by Red Hat<61>, Inc. to install and run flawlessly
using the Red Hat Linux operating system.
<P> "Receiving Red Hat Ready certification capped a thorough testing process
which proved that both Red Hat and Tripp Lite are dedicated to providing Linux
users with the most comprehensive power protection solutions available," said
Mike DelGrosso, Tripp Lite's Director of Software Development. "Although other
UPS software has been tested by Red Hat, Tripp Lite is the only UPS
manufacturer that provides Red Hat's customers with a complete UPS software
source code. This allows developers to customize not only basic UPS shutdown
functions, but the full range of intelligent UPS control as well."
<P> <hr> <P>
<!-- =================================================================== -->
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
<FONT COLOR="green">JavaServer pages book (alternative to CGI)
</FONT>
</H3>
<P> Greenwich, CT -- Web Development with JavaServer Pages, by Duane
K. Fields and Mark A. Kolb, is the the first book to
systematically cover everything a developer needs to know to
create effective web pages and web-based applications with JSP.
<P> Unlike older technologies such as ASP and CGI scripts, JSP
provides full access to all the Java APIs, enabling a web
developer to tap the power of one of the largest and most refined
libraries of reusable code in existence--and all within the
simple, familiar HTML format. But until now, web developers had
few places to turn to learn how to take full advantage of this
new technology.
<P> Web Development with JavaServer Pages covers the entire JSP
development process from start to end, from an enterprise
perspective.
<P>
<A HREF="http://www.manning.com/Fields/Contents.html">Contents</A><BR>
<A HREF="http://www.manning.com/Fields/Chapters.html">Chapters 1 and 6</A>
(PDF format)
<P> The book is also available electronically (14 MB PDF file), in color
and searchable, for $13.50 (70% less than the hard copy price). The cost is
applicable to the on-line purchase of the printed book later.
<P> <hr> <P>
<!-- =================================================================== -->
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
<FONT COLOR="green">Other software
</FONT>
</H3>
<P> <A HREF="http://www.software-carpentry.com/entries/index.html">
First-round entries in the Software Carpentry design competition</A>
<P> <A HREF="http://www.changingpages.com/">ChangingPages</A> 3.0 is a web
authoring tool released under the GNU Public License. It requires Perl 5 and
MySQL. (Psand)
<P> <A HREF="http://www.comuno.com/linux/leafwa/screen/leafwa.phtml">Leafwa</A>
is a web-based administration program for Leafnode, a small nntp news server.
<P> <A HREF="http://www.easysw.com">Easy Software Products</A>'s ESP Print Pro
v4.0.4 is a complete printing solution for UNIX. It prints PostScript, PDF,
GIF, TIFF, PNG, JPEG, SGI RGB, etc, to over 1600 printers via serial, parallel
and network.
<P> <A HREF="http://www.zend.com">Zend Optimizer for PHP 4.0</A> betas 1 and 2
are available for download.
<P> <A HREF="http://www.ihtmlmerchant.com">iHTML Merchant</A> e-commerce
transaction service "now offers more payment processors than any of their
competitors" according to their press release. (Inline Internet Systems, Inc.)
<BLOCKQUOTE> <EM>
[Note to Inline: Linux does not have a stock symbol! "LNUX" refers
to only <STRONG>one</STRONG> Linux-using company among many.. -Ed.]
</EM> </BLOCKQUOTE>
<P> <A HREF="http://www.elsop.com/">LinkScan</A> Enterprise &amp; Enhancements
7.0 is a scalable, industrial-strength tool for doing link checking, HTML
validation, web site management and creating site maps. Three other
mutually-comptatible LinkScan products are available for workstations and
servers. (Electronic Software Publishing Corporation (Elsop))
<P> Axis Communications has open-sourced its Linux drivers for Bluetooth, a
technology for wireless communications between mobile phones and other portable
devices. Axis also produces a Journaled Flash File System (JFFS) for
Flash-ROM's. Axis has also released a Linux-based Axis 2100
Network Camera. It does not require a PC; it connects directly to the
network and is controlled from a web browser.
<A HREF="http://developer.axis.com">http://developer.axis.com</A>
<P> <A HREF="">iServer</A>is a platform-independent application/web server
written entirely in Java. 90-day free preview at
<A HREF="http://www.servertec.com">http://www.servertec.com</A>. (Servertec)
<P> Aladdin Expander beta uncompresses/decodes files from a variety of Unix,
Windows and Macintosh formats. Linux/Intel version is available at
<A HREF="http://www.aladdinsys.com/expander/expander_linux_login.html">
http://www.aladdinsys.com/expander/expander_linux_login.html</A>.
Linux/Macintosh version is expected soon.
<P> <A HREF="">Voodoo3 3D graphics-card drivers</A> are available from
<A HREF="http://www.xig.com">http://www.xig.com</A> for US$29.
<P> <A HREF="http://www.aestiva.com">Aestiva</A>
1.8 is a web-based operating system now with
improved scalability, including the ability for dynamic sites to operate across
multiple servers (called "server-jumping").
<P> <a href="http://www.chilisoft.com">Chili!Soft Active Server
Pages</A> for Linux. Also available preinstalled on Cobalt's RaQ 3 server
appliance.
<P> <A HREF="">NetLedger</A> is a web-based accounting solution for small
businesses. Its new Data Center represents the largest deployment of Linux on
Oracle worldwide.
<P> <A HREF="http://www.ActiveState.com">Active Perl</A> 5.6 is a binary
distribution of Perl for Linux, Windows and Solaris that is faster to install,
includes a Perl Package Manager (PPM) for installing modules, and runs up to
48x quicker than the standard Perl. (ActiveState)
<P> <A HREF="http://www.parasoft.com">Parasoft</A> has three programs that
run on Linux. SiteRuler detects HTML files for bad links, spelling errors,
orphaned files, and non-standard HTML. CodeWizard checks C/C++ programs for
coding-standard violations. Insure++ is an automatic runtime error detection
tool for C/C++.
<P> <A HREF="http://www.micronetics.net">SecureNet PRO</A> 3.0 is an
enterprise-scalable network monitoring and intrusion detection platform.
(MimeStar, Inc.; MicroNetics, Inc.)
<P> <A HREF="http://www.omnis.net">Omnis Studio</A> 2.4 makes learning 4GL and
OO easier. A demonstration copy can be downloaded from the web site.
(Omnis Software)
<P> <A HREF="http://www.enhydra.org">Enhydra</A>, an open-source Java/XML
application server has been selected to power <A
HREF="http://AnywhereYouGo.com">AnywhereYouGo.com</A>, a community site for
wireless Internet developers and IT managers. (Lutris Technologies, Inc.)
<P> <A HREF="">Vividata, Inc.</A> has reduced the prices of its OCR Shop,
ScanShop and PostShop scanning and printing software for personal and
non-profit users.
<!-- *** BEGIN copyright *** -->
<P> <hr> <P>
<H5 ALIGN=center>
This page written and maintained by the Editor of the <I>Linux Gazette</I>.
Copyright &copy; 2000, <A HREF="mailto:gazette@ssc.com">gazette@ssc.com</A><BR>
Published in Issue 53 of <i>Linux Gazette</i>, May 2000</H5>
<!-- *** END copyright *** -->
<H3>Contents:</H3>
<dl>
<!-- dt><a href="#tag/greeting"
><img src="../gx/dennis/bbub.gif" alt="(!)" border="0"
align="middle"><strong>Greetings From Jim Dennis</strong></A>
<dd>plus <a href="#tag/hgreeting"
><strong>&para;: Greetings From Heather Stern</strong></A></dl -->
<DL>
<!-- index_text begins -->
<dt><A HREF="#tag/1"
><img src="../gx/dennis/qbub.gif" height="28" width="50"
alt="(?)" border="0"
></a>Win4Lin and www.linuxdoc.org/LDP/LG/issue50/tag/26.html --or--
<dd><A HREF="#tag/1"
><strong>Win4Lin eMERGEs</strong></a>
<dt><A HREF="#tag/2"
><img src="../gx/dennis/qbub.gif" height="28" width="50"
alt="(?)" border="0"
><strong>Extracting a block of text from a file</strong></a>
<dt><A HREF="#tag/3"
><img src="../gx/dennis/qbub.gif" height="28" width="50"
alt="(?)" border="0"
></a>Please can you help ? --or--
<dd><A HREF="#tag/3"
><strong>Zipping Across the LAN</strong></a>
<dt><A HREF="#tag/4"
><img src="../gx/dennis/qbub.gif" height="28" width="50"
alt="(?)" border="0"
></a>accessing windows files --or--
<dd><A HREF="#tag/4"
><strong>Accessing Local MS-DOS/Windows '9x Drives/Disks from Linux</strong></a>
<dt><A HREF="#tag/5"
><img src="../gx/dennis/qbub.gif" height="28" width="50"
alt="(?)" border="0"
></a>co-processes --or--
<dd><A HREF="#tag/5"
><strong>More on &gt;&gt; zsh Co-processes</strong></a>
<dt><A HREF="#tag/6"
><img src="../gx/dennis/qbub.gif" height="28" width="50"
alt="(?)" border="0"
></a>Linux - AMD? --or--
<dd><A HREF="#tag/6"
><strong>Linux for AMD, Cyrix, etc</strong></a>
<dt><A HREF="#tag/7"
><img src="../gx/dennis/qbub.gif" height="28" width="50"
alt="(?)" border="0"
></a>rcp question --or--
<dd><A HREF="#tag/7"
><strong>UNIX User Tries Linux 'rsh'</strong></a>
<dt><A HREF="#tag/8"
><img src="../gx/dennis/qbub.gif" height="28" width="50"
alt="(?)" border="0"
><strong>Telnet</strong></a>
<dt><A HREF="#tag/9"
><img src="../gx/dennis/qbub.gif" height="28" width="50"
alt="(?)" border="0"
></a>unix system admin --or--
<dd><A HREF="#tag/9"
><strong>Getting Familiar with a UNIX System</strong></a>
<dt><A HREF="#tag/10"
><img src="../gx/dennis/qbub.gif" height="28" width="50"
alt="(?)" border="0"
></a>NT OS/2 --or--
<dd><A HREF="#tag/10"
><strong>Connecting NT and OS/2</strong></a>
<dt><A HREF="#tag/11"
><img src="../gx/dennis/qbub.gif" height="28" width="50"
alt="(?)" border="0"
></a>control another VT? --or--
<dd><A HREF="#tag/11"
><strong>"Temporarily Controlling a VT"</strong></a>
<dt><A HREF="#tag/12"
><img src="../gx/dennis/qbub.gif" height="28" width="50"
alt="(?)" border="0"
></a>question regarding adding pty's to my sunos environment --or--
<dd><A HREF="#tag/12"
><strong>Running out of Pseudo-tty's</strong></a>
<dt><A HREF="#tag/13"
><img src="../gx/dennis/qbub.gif" height="28" width="50"
alt="(?)" border="0"
></a>xdm wont start a session --or--
<dd><A HREF="#tag/13"
><strong>XFree 4.0 and &quot;:0.0 refused by server&quot; Errors</strong></a>
<dt><A HREF="#tag/14"
><img src="../gx/dennis/bbub.gif" height="28" width="50"
alt="(!)" border="0"
><strong>FW: Linux</strong></a>
<dt><A HREF="#tag/15"
><img src="../gx/dennis/qbub.gif" height="28" width="50"
alt="(?)" border="0"
></a>Which filesystem? --or--
<dd><A HREF="#tag/15"
><strong>Determining the Type of Each Filesystem</strong></a>
<dt><A HREF="#tag/16"
><img src="../gx/dennis/qbub.gif" height="28" width="50"
alt="(?)" border="0"
></a>4 questions --or--
<dd><A HREF="#tag/16"
><strong>Four Questions</strong></a>
<dt><A HREF="#tag/17"
><img src="../gx/dennis/qbub.gif" height="28" width="50"
alt="(?)" border="0"
></a>Kermit protocol --or--
<dd><A HREF="#tag/17"
><strong>G-Kermit: The GPL Kermit Transfer Package</strong></a>
<dt><A HREF="#tag/18"
><img src="../gx/dennis/qbub.gif" height="28" width="50"
alt="(?)" border="0"
></a>shell cannot see an existing file --or--
<dd><A HREF="#tag/18"
><strong><TT>./script:</TT> No such file or directory</strong></a>
<dt><A HREF="#tag/19"
><img src="../gx/dennis/qbub.gif" height="28" width="50"
alt="(?)" border="0"
><strong>hello</strong></a>
<dt><A HREF="#tag/20"
><img src="../gx/dennis/bbub.gif" height="28" width="50"
alt="(!)" border="0"
></a>Shutting Down the "ping Daemon" --or--
<dd><A HREF="#tag/20"
><strong>Shutting Down the Ping Daemon: Revised</strong></a>
<dt><A HREF="#tag/21"
><img src="../gx/dennis/qbub.gif" height="28" width="50"
alt="(?)" border="0"
></a>run any remote X server at host box --or--
<dd><A HREF="#tag/21"
><strong>Remotely Executing Graphic Apps</strong></a>
<!-- index_text ends -->
</DL>
<!-- .~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~. -->
<!-- A NAME="tag/greeting"><HR WIDTH="75%" ALIGN="center"></A>
<H3 align="left"><img src="../gx/dennis/bbubble.gif"
height="50" width="60" alt="(!) " border="0"
>Greetings from Jim Dennis</H3 -->
<!-- begin greeting -->
<!-- end greeting -->
<!-- . . . . . . . . . . . . . . . . . . . -->
<!-- A NAME="tag/hgreeting"><HR WIDTH="40%" ALIGN="center"></A>
<H3 align="left"><img src="../gx/dennis/hbubble.gif"
height="50" width="60" alt="(&para;) " border="0"
>Greetings from Heather Stern</H3 -->
<!-- begin hgreeting -->
<!-- end hgreeting -->
<!-- .~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~. -->
<A NAME="tag/1"><HR WIDTH="75%" ALIGN="center"></A>
<!-- begin 1 -->
<H3 align="left"><img src="../gx/dennis/qbubble.gif"
height="50" width="60" alt="(?) " border="0"
>Win4Lin eMERGEs</H3>
<p><strong>From J. David Peet on Thu, 30 Mar 2000
</strong></p>
<!-- ::
Win4Lin eMERGEs
~~~~~~~~~~~~~~~
:: -->
<P><STRONG>
Hi,
</STRONG></P>
<P><STRONG>
I just ran across your article
</STRONG></P>
<P><STRONG>
www.linuxdoc.org/LDP/LG/issue50/tag/26.html
that talks a (tiny) bit about Win4Lin.
</STRONG></P>
<P><STRONG>
FYI, Win4Lin is now available. And if you are interested,
the full documentation is on-line on the TreLOS web site.
www.trelos.com. You can also order it via this web site.
</STRONG></P>
<P><STRONG>
In case you did not know, the Win4Lin technology has a long
history as "Merge" for SCO Unix. SCO has been an OEM of
our Merge technology for years.
Win4Lin is the Linux version of the existing current technology.
</STRONG></P>
<BLOCKQUOTE><IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
>
I didn't know that. I thought DOS/MERGE was from a
company called "Locus" or something like that.
</BLOCKQUOTE>
<P><STRONG><IMG SRC="../gx/dennis/qbub.gif" ALT="(?)"
HEIGHT="28" WIDTH="50" BORDER="0"
>
One minor point <TT>--</TT> Win4Lin is not a "clone" of VMWare as
such. They both provide a virtual machine to run Windows in on
Linux, but there are significant differences.
Refer to the new "white-paper" document:
<A HREF="http://www.trelos.com/trelos/Trelos/Products/Win4Lin_Whitepaper.htm"
>http://www.trelos.com/trelos/Trelos/Products/Win4Lin_Whitepaper.htm</A>
Near then end are two paragraphs that compare and contrast
Win4Lin <A HREF="http://www.winehq.com/">WINE</A> and VMWare.
</STRONG></P>
<P><STRONG>
-Thanks
<TT>-David</TT> Peet
<A HREF="mailto:david.peet@trelos.com"
>david.peet@trelos.com</A>
</STRONG></P>
<BLOCKQUOTE><IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
>
I probably shouldn't have used the word "clone" <TT>---</TT> though
it isn't all that precise. Obviously, in light of Win4Lin's
heritage it might be more appropriate to say that VMWare is a
"clone" of Win4Lin's predecessor. MERGE is the grandaddy of
MS-DOS emulators for UNIX.
</BLOCKQUOTE>
<BLOCKQUOTE>
Anyway, I'll let people make up their own mind based on their
own reading and experience.
</BLOCKQUOTE>
<BLOCKQUOTE>
I haven't actually used any DOS or MS Windows software in years
(only the occasional, blessedly brief trifle to help someone out
here or there). So even if you were to send a copy to me for my
evaluation I can't promise that I'd ever get around to trying
it. (I think I have a VMWare CD around here somewhere <TT>--</TT> an eval
copy or some such). Heather, my editor and wife, still uses
MS-Windows occasionally. I know she's installed <A HREF="http://www.dosemu.org/">DOSEMU</A>, and WINE
and used them a bit (DOSemu extensively). I've installed and
played with DOSemu (helped someone with it at an installfest a
couple weeks ago, too). However, I've never even tried WINE!
</BLOCKQUOTE>
<BLOCKQUOTE>
Anyway, good luck on you're new release.
</BLOCKQUOTE>
<!-- sig -->
<!-- end 1 -->
<!-- . . . . . . . . . . . . . . . . . . . -->
<HR WIDTH="40%" ALIGN="center">
<!-- begin 1 -->
<H3 align="left"><img src="../gx/dennis/bbubble.gif"
height="50" width="60" alt="(!) " border="0"
>Win4Lin eMERGEs</H3>
<p><strong>Answered By J. David Peet on Thu, 30 Mar 2000
</strong></p>
<BLOCKQUOTE>
Jim Dennis wrote:
</BLOCKQUOTE>
<!-- ::<BLOCKQuote>
Win4Lin eMERGEs
~~~~~~~~~~~~~~~
</BLOCKQuote>:: -->
<P><STRONG><FONT COLOR="#000066"><EM>
In case you did not know, the Win4Lin technology has a long
history as "Merge" for SCO Unix. SCO has been an OEM of
our Merge technology for years.
Win4Lin is the Linux version of the existing current technology.
</EM></FONT></STRONG></P>
<P><STRONG>
I didn't know that. I thought DOS/MERGE was from a
company called "Locus" or something like that.
</STRONG></P>
<BLOCKQUOTE><IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
>
Yes, I was there at Locus at the very start of Merge.
It's been a long path since then with some odd twists.
First Locus merged with Platinum, and Merge continued to
be developed, including the current SCO Merge 4 version
with win95 support. Then right before CA digested Platinum,
a company in Santa Cruz, DASCOM, bought (rescued!) the Merge
technology out from Platinum and hired some of us old-time Merge
developers to form a company named "TreLOS" to take the technology
forward including porting it to Linux. (Insert danger music here.)
Then before TreLOS could be spun off as it's own company, IBM bought
DASCOM, for reasons having nothing at all to do with Merge/TreLOS.
Then in February IBM finished spinning TreLOS off as it's own company.
We are currently a (very small) privately held company with NO
affiliation with IBM and NO IBM technology. (IBM for some reasons
wanted that to be clear.) Once we escaped from IBM it took a
bit more than a month to set up the infrastructure to be able to
release the product. It was getting caught up in the IBM acqusition
of DASCOM that prevented us from releasing the product last fall
as we had originally planned.
The Win4Lin 1.0 product has actually been ready for months now.
All that time was not completely wasted because IBM let us have an
extended semi-secret beta program so it's actually been in real use
for quite a while for a "1.0" version product.
</BLOCKQUOTE>
<BLOCKQUOTE>
So that's the history to this point. Perhaps more than you
wanted to know.
</BLOCKQUOTE>
<P><STRONG><IMG SRC="../gx/dennis/qbub.gif" ALT="(?)"
HEIGHT="28" WIDTH="50" BORDER="0"
>
...
Anyway, good luck on your new release.
</STRONG></P>
<BLOCKQUOTE><IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
>
-Thanks
-David
</BLOCKQUOTE>
<BLOCKQUOTE>
P.S. Now that we are launching Win4Lin 1.0, having reviews done is
a Good Thing. So if you or Heather would like to do a review of it
that is extremely easy to arrange.
</BLOCKQUOTE>
<!-- end 1 -->
<!-- .~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~. -->
<A NAME="tag/2"><HR WIDTH="75%" ALIGN="center"></A>
<!-- begin 2 -->
<H3 align="left"><img src="../gx/dennis/qbubble.gif"
height="50" width="60" alt="(?) " border="0"
>Extracting a block of text from a file</H3>
<p><strong>From Tim Moss on Thu, 30 Mar 2000
</strong></p>
<P><STRONG>
I'm trying to extract a block of text from a file using just bash and
standard shell utilities (no perl, awk, sed, etc). I have a definitive
pattern that can denote the start and end or I can easily get the line
numbers that denote the start and end of the block of text I'm
interested in (which, by the way, I don't know ahead of time. I only
know where it is in the file). I can't find a utility or command that
will extract everything that falls between those points. Does such a
thing exist?
</STRONG></P>
<P><STRONG>
Thanks
</STRONG></P>
<BLOCKQUOTE><IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
>
awk and sed are considered to be "standard shell utilities."
(They are part of the POSIX specification).
</BLOCKQUOTE>
<BLOCKQUOTE>
The sed expression is simply:
</BLOCKQUOTE>
<BLOCKQUOTE><BLOCKQUOTE><CODE>
sed -n "$begin,${end}p" ...
</CODE></BLOCKQUOTE></BLOCKQUOTE>
<BLOCKQUOTE>
... if begin and end are line numbers.
</BLOCKQUOTE>
<BLOCKQUOTE>
For patterns it's easier to use awk:
</BLOCKQUOTE>
<BLOCKQUOTE><BLOCKQUOTE><CODE>
awk "/$begin/,/$end/" ...
</CODE></BLOCKQUOTE></BLOCKQUOTE>
<BLOCKQUOTE>
... Note: begin and end are regexes and should be
chosen carefully!
</BLOCKQUOTE>
<BLOCKQUOTE>
However, since you don't want to do it the
easy way, here are some alternatives:
</BLOCKQUOTE>
<BLOCKQUOTE><BLOCKQuote>
<TT>------------------</TT> WARNING: very long <TT>-------------------------</TT>
</BLOCKQuote></BLOCKQUOTE>
<BLOCKQUOTE>
If it is a text file and you just want some lines out of
it try something like:
</BLOCKQUOTE>
<blockquote><pre> #!/bin/sh
# shextract.sh
# extract part of a file between a
# pair of globbing patterns
[ "$#" -eq "2" ] || {
echo "Must supply begin and end patterns" &gt;&amp;2
exit 1
}
begin=$1
end=$2
of="" ## output flag
while read a; do
case "$a" in
"$begin") of="true";;
"$end") of="";;
esac
[ -n "$of" ] &amp;&amp; echo $a
done
exit 0
</pre></blockquote>
<BLOCKQUOTE>
... this uses no external utilities except for the
test command ('[') and possibly the 'echo' command from
VERY old versions of Bourne sh. It should be supported
under any Bourne shell derivative. Under bash these
are builtin commands.
</BLOCKQUOTE>
<BLOCKQUOTE>
It takes two parameters. These are "globbing" patterns
NOT regular expressions. They should be quoted, especially
if they contain shell wildcards (?, *, and [...]
expressions).
</BLOCKQUOTE>
<BLOCKQUOTE>
Read any good shell programming reference (or even the
rather weak 'case...esac' section of the bash man page)
for details on the acceptable pattern syntax. Note
because of the way I'm using this you could invoke
this program (let's call it shextract, for "shell
extraction") like so:
</BLOCKQUOTE>
<BLOCKQUOTE><BLOCKQUOTE><CODE>
shextract "[bB]egin|[Ss]tart" "[Ee]nd|[Ss]top"
</CODE></BLOCKQUOTE></BLOCKQUOTE>
<BLOCKQUOTE>
... to extract the lines between the any occurrence
of the term "begin" or "Begin" or "start" or "Start" and
the any subsequent occurence of "end" or "End" or "stop"
or "Stop."
</BLOCKQUOTE>
<BLOCKQUOTE>
Notice that I can use the (quoted) pipe symbol in this
context to show "alternation" (similar to the egrep use
of the same token).
</BLOCKQUOTE>
<BLOCKQUOTE>
This script could be easily modified to use regex's
instead of glob patterns (though we'd either have to
use 'grep' for that or rely on a much newer shell
such as ksh '93 or bash v. 2.x to do so).
</BLOCKQUOTE>
<BLOCKQUOTE>
This particular version will extract <EM>all</EM> regions
of the file that lie between our begin and end tokens.
</BLOCKQUOTE>
<BLOCKQUOTE>
To stop after the first we have to insert a "break"
statement into our "$end") ...;;; case. To support
an "nth" occurence of the pattern we'd have to use
an additional argument. To cope with degenerate
input (cases where the begin and end tokens might be
out of order, nested or overlapped) we'd have to
do considerably more work.
</BLOCKQUOTE>
<BLOCKQUOTE>
As written this example requires exactly two arguments.
It will only process input from stdin and only write
to stdout. We could easily add code to handle
more arguments (first two are patterns, 'shift'ed out
rest are input file names) and some options switches
(for output file, only one extraction per file,
emit errors if end pattern is found before start
pattern, emit warnings if no begin or subsequent end
pattern is found on any input file, stop processing on
any error/warning, etc).
</BLOCKQUOTE>
<BLOCKQUOTE>
Note: my exit 0 may seem superfluous here. However,
it does prevent the shell from noting that the
program "exited with non-zero return value" or
warnings to that effect. That's due to my use of
test ('[') on my output flag in my loop. In the
normal case that will have left a non-zero return value
since my of flag will be zero length for the part of
the file AFTER the end pattern was found.
</BLOCKQUOTE>
<BLOCKQUOTE>
Note: this program is SLOW. (That's what you get for
asking for it in sh). Running it on my 38,000 line
<TT>/usr/share/games/hangman-words</TT> (this laptop doesn't
have <TT>/usr/dict/words</TT>) it takes about 30 seconds or
roughly only 1000 lines per second on a P166 with 16Mb
of RAM. A binary can do better than that under MS-DOS
on a 4Mhz XT!
</BLOCKQUOTE>
<BLOCKQUOTE>
BUG: If any lines begin with <TT>-</TT> (dashes) then your version
of echo <EM>might</EM> try to treat the beginnings of your lines
as arguments. This <EM>might</EM> cause the echo command to
parse the rest of the line for escape sequences. If you
have printf(1) evailable (as a built-in to your shell or
as an external command) then you might want to use that
instead of echo.
</BLOCKQUOTE>
<BLOCKQUOTE>
To do this based on line numbers rather than patterns
we could use something more like:
</BLOCKQUOTE>
<blockquote><pre>#!/bin/sh
# lnextract.sh
# extract part of a file between a
# line numbers $1 and $2
function isnum () {
case "$1" in
*[^0-9]*)
return 1;;
esac
}
[ "$#" -gt "2" ] || {
echo "Must supply begin and end line numbers" &gt;&amp;2
exit 1
}
isnum "$1" || {
echo "first argument (first line) must be a whole number" &gt;&amp;2
exit 1
}
isnum "$2" || {
echo "second argument (last line) must be a whole number" &gt;&amp;2
exit 1
}
begin=$1
end=$2
[ "$begin" -le "$end" ] || {
echo "begin must be less than or equal to end" &gt;&amp;2
exit 1
}
shift 2
for i; do
[ -r "$i" -a -f "$i" ] || {
echo "$i should be an existing regular file" &gt;&amp;2
continue
}
ln=0
while read a ; do
let ln+=1
[ "$ln" -ge "$begin" ] &amp;&amp; echo $a
[ "$ln" -lt "$end" ] || break
done &lt; "$i"
done
exit 0
</pre></blockquote>
<BLOCKQUOTE>
This rather ugly little example does do quite a
bit more checking than my previous one.
</BLOCKQUOTE>
<BLOCKQUOTE>
It checks that its first two arguments are
numbers (your shell must support negated character
class globs for this, ksh '88 and later, bash 1.x and 2.x,
and zsh all qualify), and that the first is less than or
equal to the latter. Then it shifts those out of
the way so it can iterate over the rest of the
arguments, extracting our interval of line from
each. It checks that each file is "regular"
(not a directory, socket, or device node) and
readable before it tries to extract a portion of
it. It will follow symlinks.
</BLOCKQUOTE>
<BLOCKQUOTE>
It has some of the same limitations we saw before.
</BLOCKQUOTE>
<BLOCKQUOTE>
In addition it won't accept it's input from stdin
(although we could add that by putting the main loop
into a shell function and invoking it one way if
our arg count was exactly two, and differently
(within our for loop) if $# is greater than two.
I don't feel like doing that here <TT>---</TT> as this message
is already way too long and that example is complicated
enough.
</BLOCKQUOTE>
<BLOCKQUOTE>
It's also possible to use a combination of 'head' and
'tail' to do this. (That's a common exercise in
shell programming classes). You just use something
like:
</BLOCKQUOTE>
<BLOCKQUOTE><BLOCKQUOTE><CODE>
head -$end $file | tail -$(( $end - $begin ))
</CODE></BLOCKQUOTE></BLOCKQUOTE>
<BLOCKQUOTE>
... note that the 'tail' command on many versions
of UNIX can't handle arbitrary offsets. It can
only handle the lines that fit into a fixed block size.
GNU tail is somewhat more robust (and correspondingly
larger and more complicated). A classic way to
work around limitations on tail was to use tac (cat
a file backwards, from last line to first) and
head (and tac again). This might use prodigous
amounts of memory or disk space (might use temporary
files).
</BLOCKQUOTE>
<BLOCKQUOTE>
If you don't want line oriented output <TT>---</TT> and your
patterns are regular expressions, and you're willing
to use grep and dd then here's a different approach:
</BLOCKQUOTE>
<blockquote><pre> start=$(grep -b "$begin" ... )
stop=$(( $( grep -b "$end" ... ) - $begin ))
dd if="$file" skip=$begin count=$stop bs=1b
</pre></blockquote>
<BLOCKQUOTE>
This is not a shell script, just an example.
Obviously you'd have to initialize $begin, $end, and $file
or use $1, $2, and $3 for them to make this into a
script. Also you have to modify those grep <TT>-b</TT> commands
a little bit (note my ellipses). This is because grep
will be giving us too much information. It will be
giving a byte offset to the beginning of each pattern
match, and it will be printing the matching line, too.
</BLOCKQUOTE>
<BLOCKQUOTE>
We can fix this with a little work. Let's assume that
we want the first occurrence of "$begin" and the last
occurence of "$end" Here's the commands that will
just give us the raw numbers:
</BLOCKQUOTE>
<blockquote><pre> grep -b "$begin" "$file" | head -1 {
IFS=:
read b x
echo b
}
grep -b "$end" "$file" | tail -1 | {
IFS=:
read e x
echo e
}
</pre></blockquote>
<BLOCKQUOTE>
... notice I just grep through head or
tail to get the first or last matching line,
and I use IFS to change my field separator
to a ":" (which grep uses to separate the offset
value from the rest of the line). I read the
line into two variables (separated by the
IFS character(s)), and throw away the extraneous
data by simply echoing the part I wanted
(the byte offset) back out of my subshell.
</BLOCKQUOTE>
<BLOCKQUOTE>
Note: whenever you use or see a pipe operator
in a shell command or script <TT>---</TT> you should
realize that you've created an implicit subshell
to handle that.
</BLOCKQUOTE>
<BLOCKQUOTE>
Incidentally, if your patterns <EM>might</EM> have a
leading <TT>-</TT> (dash) then you'll have problems
passing them to grep. You can massage the
pattern a little bit by wrapping the first
character with square brackets. Thus "foo"
becomes "[f]oo" and "<TT>-bar</TT>" becomes "[-]bar".
(grep won't consider an argument starting
with [ to be a command line switch, but it
will try to parse <TT>-bar</TT> as one).
</BLOCKQUOTE>
<BLOCKQUOTE>
This is easily done with printf and sed:
</BLOCKQUOTE>
<blockquote><pre> printf "%s" "$pattern" | sed -e 's/./[&amp;]/'
</pre></blockquote>
<BLOCKQUOTE>
... note my previous warning about 'echo' <TT>---</TT>
it's pretty permissive about arguments that
start with dashes that it doesn't recognize, it'll
just echo those without error. But if your pattern
starts with "<TT>-e</TT> " or <TT>-n</TT> it can effect out the rest
of the string is represented.
</BLOCKQUOTE>
<BLOCKQUOTE>
Note that GNU grep and echo DON'T seem to take the
<TT>--</TT> option that is included with some GNU utilities.
This would avoid the whole issue of leading dashes
since this conventionally marks the end of all
switch/option parsing for them.
</BLOCKQUOTE>
<BLOCKQUOTE>
Of course you said you didn't want to use sed,
so you've made the job harder. Not impossible,
but harder. With newer shells like ksh '93 and
bash 2.x we can use something like:
</BLOCKQUOTE>
<blockquote><pre> [${pattern:0:1}]${pattern:1}
</pre></blockquote>
<BLOCKQUOTE>
(read any recent good book on shell programming
to learn about parameter expansion).
</BLOCKQUOTE>
<BLOCKQUOTE>
You can use the old 'cut' utility, or 'dd' to
get these substrings. Of course those are just
as external to the shell as perl, awk, sed,
test, expr and printf.
</BLOCKQUOTE>
<BLOCKQUOTE>
If you really wanted to do this last sort of
thing (getting a specific size substring from
a variable's value, starting from an offset
in the string, using only the bash 1.x parameter
expansion primitives) it could be done with a whole
lot of fussing. I'd use ${#varname} to get the
size, a loop to build temporary strings of
? (question mark) characters to of the right
length and the ${foo#} and ${foo%} operators
(stripping patterns from the left and right of
variable's value respectively)
to isolate my substring.
</BLOCKQUOTE>
<BLOCKQUOTE>
Yuck! That really is as ugly as it sounds.
</BLOCKQUOTE>
<BLOCKQUOTE>
Anyway. I think I've said enough on the subject
for now.
</BLOCKQUOTE>
<BLOCKQUOTE>
I'm sure you can do what you need to. Alot of
it depends on which shell you're using (not just
csh vs. Bourne, but ksh '88 vs. '93 and bash v1.14
vs. 2.x, etc) and just how rigit you are about that
constraint about "standard utilities"
</BLOCKQUOTE>
<BLOCKQUOTE>
All of the examples here (except for the ${foo:}
parameter expansion) are compatible with bash 1.14.
</BLOCKQUOTE>
<BLOCKQUOTE>
(BTW: now that I'm really learning C <TT>---</TT> y'all can
either rest easy that I'll be laying off the sh
syntax for awhile, or lay awake in fear of what I'll
be writing about next month).
</BLOCKQUOTE>
<BLOCKQUOTE>
Here's a short GNU C program to print a set of
lines between one number and another:
</BLOCKQUOTE>
<blockquote><pre>/* extract a portion of a file from some beginning line, to
* some ending line
* this functions as a filter --- it doesn't take a list
* of file name arguments.
*/
#include &lt;stdio.h&gt;
#include &lt;stdlib.h&gt;
#include &lt;errno.h&gt;
int
main (int argc, char * argv[] )
{
char * linestr;
long begin, end, current=0;
ssize_t * linelen;
linelen = 0;
linestr=NULL;
if ( argc &lt; 3 ) {
fprintf(stderr, "Usage: %s begin end\n", argv[0]);
exit(1);
}
begin=atol(argv[1]);
if ( begin &lt; 1 ) {
fprintf(stderr, "Argument error: %s should be a number "
"greater than zero\n", argv[1]);
exit(1);
}
end=atol(argv[2]);
if ( end &lt; begin ) {
fprintf(stderr, "Argument error: %s should be a number "
"greater than arg[1]\n", argv[1]);
exit(1);
}
while ( getline(&amp;linestr, &amp;linelen, stdin ) &gt; -1
&amp;&amp; (++current &lt; end ) ) {
if (current &gt;= begin) {
printf("%s", linestr);
}
}
exit(0);
return 0;
}
</pre></blockquote>
<BLOCKQUOTE>
This is about the same length as my shell version.
It uses<TT> atol()</TT> rather than<TT> strtol()</TT> for the
argument to number conversion.<TT> atol()</TT> (ASCII to long)
is simpler, but can't convey errors back to us.
However, I require values greater than zero, and GNU
glibc<TT> atol()</TT> returns 0 for strings that can't be
converted to longs. I also use the GNU<TT> getline()</TT>
function <TT>---</TT> which is non-standard, but much more
convenient and robust than fussing with<TT> scanf()</TT>,
<TT>fgets()</TT> and<TT> sscanf()</TT>, and<TT> getc()</TT> stuff.
</BLOCKQUOTE>
<BLOCKQUOTE>
Tim, I've copied this my Linux Gazette editor, since
it's a pretty general question and a way detailed
answer. Unless you have any objection it will
go into my column in the next issue. The sender's
e-mail address and organizational affiliation are
always removed from answer guy articles unless
they request otherwise.
</BLOCKQUOTE>
<!-- end 2 -->
<!-- .~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~. -->
<A NAME="tag/3"><HR WIDTH="75%" ALIGN="center"></A>
<!-- begin 3 -->
<H3 align="left"><img src="../gx/dennis/qbubble.gif"
height="50" width="60" alt="(?) " border="0"
>Zipping Across the LAN</H3>
<p><strong>From jashby on Sun, 02 Apr 2000
</strong></p>
<!-- ::
Zipping Across the LAN
~~~~~~~~~~~~~~~~~~~~~~
:: -->
<P><STRONG>
Hello ,
</STRONG></P>
<P><STRONG>
My name is Jason Ashby i work for a computer company and am really new
to Linux i have been given the task to make a zip drive visible accross
a network, it is loaded on a linux machine and i can get the AIX machine
to mount it but we can not copy files to or from the zip drive on AIX
could you see it within your power to tell me why .
</STRONG></P>
<P><STRONG>
Thanks
Jason Ashby
</STRONG></P>
<BLOCKQUOTE><IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
>
Unfortunately your question is unclear.
You don't tell me which system is supposed to be the server, what
sorts systems are intended to be the clients, nor what type of
filesystems will be contained on the Zip media.
</BLOCKQUOTE>
<BLOCKQUOTE>
"make a zip drive visible accross [sic] a network"
</BLOCKQUOTE>
<BLOCKQUOTE>
... presumably you mean via NFS or Samba. If the client systems
are UNIX or Linux you'd use NFS, if they are MS-Windows or OS/2
you'd use Samba. (If they were Apple Macs running MacOS you'd
look at the netatalk or CAP packages, and if they were old MS-DOS
machines you might try installing Netware client drivers on those
and mars_nwe or a commercial copy of Netware on the Linux box).
</BLOCKQUOTE>
<BLOCKQUOTE>
Let's assume you mean to mount the Zip disks on your Linux box,
and "export" them (NFS terminology) to your AIX systems. Then
you'd modify your <TT>/etc/fstab</TT> to contain an entry appropriate to
mount the Zip media into your file hierarchy. Maybe you'd mount
it under <TT>/mnt/zip</TT> or under <TT>/zip.</TT> (You might have multiple fstab
entries to support different filesystems that you might have
stored on your Zip media. In most cases you'd use msdos, or one
of the other variants of Linux' MS-DOS filesystem: umsdos, vfat,
or uvfat).
</BLOCKQUOTE>
<BLOCKQUOTE>
Then you'd edit your <TT>/etc/exports</TT> file to export that to your
LAN (or to specific hosts or IP address/network patterns).
</BLOCKQUOTE>
<BLOCKQUOTE>
Try reading the man pages for <TT>/etc/fstab</TT> and <TT>/etc/exports</TT> and
perusing the following HOWTOs:
</BLOCKQUOTE>
<BLOCKQUOTE><DL><DT>
Zip Drive Mini-HOWTO
<DD><A HREF="http://www.linuxdoc.org/HOWTO/mini/ZIP-Drive.html"
>http://www.linuxdoc.org/HOWTO/mini/ZIP-Drive.html</A>
</DL></BLOCKQUOTE>
<BLOCKQUOTE><DL><DT>
NFS HOWTO
<DD><A HREF="http://www.linuxdoc.org/HOWTO/NFS-HOWTO.html"
>http://www.linuxdoc.org/HOWTO/NFS-HOWTO.html</A>
</DL></BLOCKQUOTE>
<BLOCKQUOTE>
And the excellent new:
</BLOCKQUOTE>
<BLOCKQUOTE><DL><DT>
Filesystems HOWTO
<DD><A HREF="http://www.linuxdoc.org/HOWTO/Filesystems-HOWTO.html"
>http://www.linuxdoc.org/HOWTO/Filesystems-HOWTO.html</A>
</DL></BLOCKQUOTE>
<BLOCKQUOTE>
by Martin Hinner.
</BLOCKQUOTE>
<BLOCKQUOTE>
If that doesn't do the trick, try clarifying your question. It
often helps to draw a little map (ASCII art is good!).
</BLOCKQUOTE>
<!-- end 3 -->
<!-- .~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~. -->
<A NAME="tag/4"><HR WIDTH="75%" ALIGN="center"></A>
<!-- begin 4 -->
<H3 align="left"><img src="../gx/dennis/qbubble.gif"
height="50" width="60" alt="(?) " border="0"
>Accessing Local MS-DOS/Windows '9x Drives/Disks from Linux</H3>
<p><strong>From David Buckley on Wed, 05 Apr 2000
</strong></p>
<!-- ::
Accessing Local MS-DOS/Windows '9x Drives/Disks from Linux
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
:: -->
<P><STRONG>
I am new to linux and am wondering if there is an easy way to access my
Win98 disk from within linux. i have lots of files (mp3s, etc.) that i
would like to use in linux. what is the easiest way to get them?
</STRONG></P>
<P><STRONG>
Thanks,
David Buckley
</STRONG></P>
<BLOCKQUOTE><IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
>
I'm guessing you're talking about accessing files that are on
you local system (that you have a dual-boot installation).
</BLOCKQUOTE>
<BLOCKQUOTE>
In that case use the 'mount' command. For example the first
partition on your first IDE drive is <TT>/dev/hda1</TT> (under Linux). If
that's your C: drive under MS-DOS/Windows then you can use a
command like:
</BLOCKQUOTE>
<blockquote><pre> mkdir /mnt/c &amp;&amp; mount -t vfat /dev/hda1 /mnt/c
</pre></blockquote>
<BLOCKQUOTE>
... (as the 'root' user) to make the C: directory tree appear
under <TT>/mnt/c.</TT>
</BLOCKQUOTE>
<BLOCKQUOTE>
Once you've done that you can use normal Linux commands and
programs to access those files.
</BLOCKQUOTE>
<BLOCKQUOTE>
That will only mount the filesystem for that duration of that
session (until your reboot or unmount it with the 'umount'
command). However, you can make this process automatic by adding
an entry to your <TT>/etc/fstab</TT> (filesystem table).
</BLOCKQUOTE>
<BLOCKQUOTE>
For more info on this read the appropriate sections of the Linux
Installation &amp; Getting Started Guide (*), the System
Administrator's Guide (*) (both part of the <A HREF="http://www.linuxdoc.org/">LDP</A> at
<A HREF="http://www.linuxdoc.org"
>http://www.linuxdoc.org</A>) and the mount(8), and fstab(5) man pages
with the following command:
</BLOCKQUOTE>
<blockquote><pre> man 8 mount; man 5 fstab
</pre></blockquote>
<BLOCKQUOTE>
(Note, in the first case you do need to specify the
manual chapter/section number, 8, since there is a<TT> mount()</TT>
system call which is used by programmers, particularly for
writing programs like the 'mount' command itself). When you
see references to keywords in this form foo(1), it's a hint
that foo is documented in that chapter of the man pages: 1
is user commands, 2 is system calls, 3 is library functions,
4 is for devices, 5 is for file formats, etc).
</BLOCKQUOTE>
<BLOCKQUOTE><DL><DT>
*( LIGS: Chapter 4 System Administration
<DD><A HREF="http://www.linuxdoc.org/LDP/gs/node6.html#SECTION00640000000000000000"
>http://www.linuxdoc.org/LDP/gs/node6.html#SECTION00640000000000000000</A>
</DL></BLOCKQUOTE>
<BLOCKQUOTE>
LSAG: Filesystems
<A HREF="http://www.linuxdoc.org/LDP/sag/x1038.html"
>http://www.linuxdoc.org/LDP/sag/x1038.html</A> )
</BLOCKQUOTE>
<BLOCKQUOTE>
To access your MS-DOS formatted floppies it's often easier to use
the mtools commands. Look at the mtools(1) man pages for details
on that.
</BLOCKQUOTE>
<BLOCKQUOTE>
Here are a couple of other HOWTOs to read through:
</BLOCKQUOTE>
<BLOCKQUOTE><DL><DT>
From DOS/Windows to Linux HOWTO
<DD><A HREF="http://www.linuxdoc.org/HOWTO/DOS-Win-to-Linux-HOWTO.html"
>http://www.linuxdoc.org/HOWTO/DOS-Win-to-Linux-HOWTO.html</A>
</DL></BLOCKQUOTE>
<BLOCKQUOTE><DL><DT>
Filesystems HOWTO
<DD><A HREF="http://www.linuxdoc.org/HOWTO/Filesystems-HOWTO.html"
>http://www.linuxdoc.org/HOWTO/Filesystems-HOWTO.html</A>
</DL></BLOCKQUOTE>
<BLOCKQUOTE>
In general you want to look through these to find answer to
most common Linux questions. As you might imagine, you've asked
a very common one here). In fact it's number 4.2 in the FAQ
<A HREF="http://www.linuxdoc.org/FAQ/Linux-FAQ-4.html#ss4.2"
>http://www.linuxdoc.org/FAQ/Linux-FAQ-4.html#ss4.2</A>
</BLOCKQUOTE>
<BLOCKQUOTE>
You can also search the Linux Gazette at:
</BLOCKQUOTE>
<BLOCKQUOTE><DL><DT>
Full search on archive Linux Gazette Search
<DD><A HREF="http://www.linuxgazette.com/search.html"
>http://www.linuxgazette.com/search.html</A>
</DL></BLOCKQUOTE>
<BLOCKQUOTE>
Although I can see how you might not know what terms to search on
until you've covered some of the basics in the LDP guides, or any
good book on Linux.
</BLOCKQUOTE>
<BLOCKQUOTE>
There are also ways to access your Win '9x "shares" (network
accessible files, or "exported" directories) from Linux using
smbfs.
</BLOCKQUOTE>
<!-- end 4 -->
<!-- .~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~. -->
<A NAME="tag/5"><HR WIDTH="75%" ALIGN="center"></A>
<!-- begin 5 -->
<H3 align="left"><img src="../gx/dennis/qbubble.gif"
height="50" width="60" alt="(?) " border="0"
>More on &gt;&gt; zsh Co-processes</H3>
<p><strong>From Paul Ackersviller on Wed, 05 Apr 2000
</strong></p>
<!-- ::
More on &gt;&gt; zsh Co-processes
~~~~~~~~~~~~~~~~
:: -->
<P><STRONG>
Jim,
</STRONG></P>
<P><STRONG>
I believe I forgot to say thanks for having written the original answer as
it was. I've programmed shells for ages, but have never had occasion to use
co-processes. Seeing examples of how it's done are alway a good thing.
</STRONG></P>
<P><STRONG>
--
Paul Ackersviller
</STRONG></P>
<BLOCKQUOTE><IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
>
You're welcome. I've never actually used them myself.
However, I was jazzed to learn how they actually work when
someone I was working with showed me an example.
</BLOCKQUOTE>
<BLOCKQUOTE>
Sometimes I take advantage of being "The Answer Guy" and
grab any pretense to show of some need trick that I've
discovered or been shown (I usually try to give credit
where credit is due <TT>---</TT> but sometimes that's pretty ambiguous and
doesn't fit into the flow of what I'm typing).
</BLOCKQUOTE>
<BLOCKQUOTE>
Anyway, I'm a firm believer in having a full toolbox. You
often won't know what tool <EM>would</EM> do the trick unless you've
seen a wide enough variety of tools to recognize a nail vs.
a screw and can associate one with a hammer and the other with
a screwdriver.
</BLOCKQUOTE>
<!-- sig -->
<!-- end 5 -->
<!-- .~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~. -->
<A NAME="tag/6"><HR WIDTH="75%" ALIGN="center"></A>
<!-- begin 6 -->
<H3 align="left"><img src="../gx/dennis/qbubble.gif"
height="50" width="60" alt="(?) " border="0"
>Linux for AMD, Cyrix, etc</H3>
<p><strong>From Ranone7 on Wed, 05 Apr 2000
</strong></p>
<!-- ::
Linux for AMD, Cyrix, etc
~~~~~~~~~~~~~~~~~~~~~~~~~
:: -->
<P><STRONG>
At this web site <A HREF="http://www.linuxmall.com/product/01462.html"
>http://www.linuxmall.com/product/01462.html</A> I see
the title "<A HREF="http://www.redhat.com/">Red Hat</A> Linux Deluxe for Intel" Is there a Linux for
AMD out there? or can I use the above linux version with an
AMD-Athlon.
</STRONG></P>
<P><STRONG>
Thank you
</STRONG></P>
<BLOCKQUOTE><IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
>
The packaging is suffering from a compromise. It's trying
not to sound too technical. Red Hat Linux <EM>for Intel</EM>
should work on any x86 and compatible CPUs. Note that
Mandrake requires at least a Pentium (it won't work on
old 486 and 386 systems).
</BLOCKQUOTE>
<BLOCKQUOTE>
What Red Hat Inc was trying to do which this verbiage
is distiguish that box from the versions that they have
available for SPARC and Alpha based systems. Eventually they'll
also probably have a PowerPC package available as well.
</BLOCKQUOTE>
<BLOCKQUOTE>
Many other distributions are similarly available on several
platforms.
</BLOCKQUOTE>
<!-- sig -->
<!-- end 6 -->
<!-- . . . . . . . . . . . . . . . . . . . -->
<HR WIDTH="40%" ALIGN="center">
<!-- begin 6 -->
<H3 align="left"><img src="../gx/dennis/bbubble.gif"
height="50" width="60" alt="(!) " border="0"
>Linux - AMD?</H3>
<p><strong>Answered By Martin Pool on Thu, 06 Apr 2000
</strong></p>
<P><STRONG>
On Wed, 5 Apr 2000, Jim Dennis wrote:
</STRONG></P>
<P><STRONG><FONT COLOR="#000099"><EM><BLOCKQuote>
<BR>&gt;At this web site <A HREF="http://www.linuxmall.com/product/01462.html"
<BR>&gt; >http://www.linuxmall.com/product/01462.html</A> I see
<BR>&gt;the title "<A HREF="http://www.redhat.com/">Red Hat</A> Linux Deluxe for Intel" Is there a Linux for
<BR>&gt;AMD out there? or can I use the above linux version with an
<BR>&gt;AMD-Athlon.
</BLOCKQuote></EM></FONT></STRONG></P>
<P><STRONG><FONT COLOR="#000099"><EM>
<BR>&gt;Thank you
</EM></FONT></STRONG></P>
<P><STRONG><FONT COLOR="#000066"><EM>
The packaging is suffering from a compromise. It's trying
not to sound too technical. Red Hat Linux <EM>for Intel</EM>
should work on any x86 and compatible CPUs. Note that
Mandrake requires at least a Pentium (it won't work on
old 486 and 386 systems).
</EM></FONT></STRONG></P>
<P><STRONG>
Good explanation. IIRC Athlons are only supported in 2.2.something, so
they'll also need a recent distribution. I guess any RedHat version on
sale these days will be OK, but notably <A HREF="http://www.debian.org/">Debian</A> slink/stable will <EM>not</EM>
boot.
</STRONG></P>
<BLOCKQUOTE><IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
>
Thanks for that note [from one of the guys on the
<A HREF="http://www.linuxcare.com/">Linuxcare</A> list that now receives answerguy responses].
</BLOCKQUOTE>
<BLOCKQUOTE>
I remember hearing about Athlon problems, but I didn't ever get the
full story. I was spoiled by the fact that most x86 compatible
chips really are <EM>x86 COMPATIBLE</EM>. I still don't know what the
whole deal with that Athlon chip is. I'll BCC someone on this
to see if he can clue me in.
</BLOCKQUOTE>
<!-- end 6 -->
<!-- . . . . . . . . . . . . . . . . . . . -->
<HR WIDTH="40%" ALIGN="center">
<!-- begin 6 -->
<H3 align="left"><img src="../gx/dennis/bbubble.gif"
height="50" width="60" alt="(!) " border="0"
>Linux - AMD?</H3>
<p><strong>Answered By David Benfell on Thu, 6 Apr 2000
</strong></p>
<BLOCKQUOTE>
The story, as I was able to piece it together, is that the problem was
found and fixed in the 2.3.19 kernel. The correction had to do with
Memory Type Range Register (MTRR) code. This patch was backported to,
possibly the 2.2.12 kernel, and, almost certainly, the 2.2.13 kernel.
</BLOCKQUOTE>
<BLOCKQUOTE>
However, it still seems to have been an issue with the Mandrake 6.5
distribution, which had a 2.2.12 kernel. On the other hand, my
neighbor just installed <A HREF="http://www.redhat.com/">Red Hat</A> 6.2, with, I think, a 2.2.12 kernel
(but the site won't tell), on an Athlon. So I'm confused.
</BLOCKQUOTE>
<BLOCKQUOTE>
David Benfell
</BLOCKQUOTE>
<EM>[ <BLOCKQUOTE>
So, if you know more about the Athlon MTRR mystery, enlighten us please!
</BLOCKQUOTE><P>-- Heather. ]</P></EM>
<!-- end 6 -->
<!-- .~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~. -->
<A NAME="tag/7"><HR WIDTH="75%" ALIGN="center"></A>
<!-- begin 7 -->
<H3 align="left"><img src="../gx/dennis/qbubble.gif"
height="50" width="60" alt="(?) " border="0"
>UNIX User Tries Linux 'rsh'</H3>
<p><strong>From Le, Dong, ALNTK on Fri, 07 Apr 2000
</strong></p>
<!-- ::
UNIX User Tries Linux 'rsh'
~~~~~~~~~~~~~~~~~~~~~~~~~~~
:: -->
<P><STRONG>
Hello "The Answer Guy",
</STRONG></P>
<P><STRONG>
My name is Dong Le. I'm quite new to Linux. Since I come from Unix world, I
try to use Unix concepts to apply on Linux. Some times it works, most of the
time does not.
</STRONG></P>
<P><STRONG>
Anyway, I have Redhat 6.1 installed on my 2 PC intel-based. I tried to use
rcp to remote copy files from one PC to another. I got the error:
"permission denied" from other PC. I have a file ".rhosts" setup to give
permission to other PC. I use "octet format" in all of files/commands so
DNS/NIS are not involved at all.
</STRONG></P>
<P><STRONG>
My questions are:
</STRONG></P>
<P><STRONG><BLOCKQuote>
<TT>-</TT> Why do I have this error?
</BLOCKQuote></STRONG></P>
<P><STRONG>
<TT>-</TT> Later on I found out that Linux is using PAM to do authentication. For
rcp, it is using <TT>/etc/pam.d/rsh.conf</TT> to authenticate. However, I can not
find any information about PAM modules (pam_rhosts_auth.so, for example)
regarding how it works. Do you know where I can obtain information about
particular PAM module?
</STRONG></P>
<P><STRONG>
Thanks a lot,
Dong Le,
</STRONG></P>
<BLOCKQUOTE><IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
>
Short answer: Use ssh!
</BLOCKQUOTE>
<BLOCKQUOTE>
There are a few problems here. First, I've seen versions of rshd
(the rsh daemon) that would not seem to accept octet addresses.
More importantly many Linux distributions are configured not to
respect your ~/.rhosts files.
</BLOCKQUOTE>
<BLOCKQUOTE>
You are correct that you have to co-ordinate your policy using the
PAM if your system has the "Pluggable Authentication Modules"
suite of programs installed. The configuration file would be
<TT>/etc/pam.d/rsh.</TT> Here's the default that would be installed by
<A HREF="http://www.debian.org/">Debian</A>:
</BLOCKQUOTE>
<blockquote><pre>#%PAM-1.0
auth required pam_rhosts_auth.so
auth required pam_nologin.so
auth required pam_env.so
account required pam_unix_acct.so
session required pam_unix_session.so
</pre></blockquote>
<BLOCKQUOTE>
Yours would be pretty similar.
</BLOCKQUOTE>
<BLOCKQUOTE>
In addition you might find that you need to also modify the
arguments on the in.rshd line in your <TT>/etc/inetd.conf</TT> file. For
example if there's a <TT>-l</TT> option it may be causing your copy of
in.rshd to ignore user ~/.rhosts files. A <TT>-h</TT> option will force it
to ignore the contents of any <TT>/etc/hosts.equiv</TT> file.
</BLOCKQUOTE>
<BLOCKQUOTE>
(The new Debian rshd package ignores these additional options and
requires that you configure your policy through the <TT>/etc/pam.d/</TT>
files. I don't know if <A HREF="http://www.redhat.com/">Red Hat</A> has modified it's packages in this
way for versions 6.1 or 6.2. In 6.0 I'm pretty sure that I was
still able to use the command line arguments on the in.rshd entry
in the <TT>/etc/inet.conf</TT> file for this.)
</BLOCKQUOTE>
<BLOCKQUOTE>
Of course you can use ssh as a resplacement to rsh, and have
much better security as well.
</BLOCKQUOTE>
<!-- end 7 -->
<!-- .~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~. -->
<A NAME="tag/8"><HR WIDTH="75%" ALIGN="center"></A>
<!-- begin 8 -->
<H3 align="left"><img src="../gx/dennis/qbubble.gif"
height="50" width="60" alt="(?) " border="0"
>Telnet</H3>
<p><strong>From Cleary, James R. on Fri, 07 Apr 2000
</strong></p>
<P><STRONG>
Jim,
</STRONG></P>
<P><STRONG>
I just clean installed Redhat 6.0 on my box. I can ping the
</STRONG></P>
<P><STRONG>
box from another machine, but I can't telnet to it, the default
configuration should provide for that, shouldn't it? Any help
you'd have would be great.
</STRONG></P>
<P><STRONG>
Sincerely,
"J.C."
</STRONG></P>
<BLOCKQUOTE><IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
>
When you say "you can't telnet to it" what do you mean?
Does the telnet client seem to just sit there for a long time? Do
you get an error message that says something like "connection
refused?" Does that come back immediately, or does it take a
minute or two? Are you trying to telnet to it by name, or by IP
address? (That basically doesn't matter as long as you're using
the same form for your ping command).
</BLOCKQUOTE>
<BLOCKQUOTE>
I disagree with your assertion that the "default configuration
should provide for that?" Linux appeals to a much broader range
of users than traditional, professionally managed UNIX systems.
It is not appropriate to assume that all of your users what to be
"telnet hosts" (servers or multi-user workstations). In addtional
telnet is an old and basically depracated means of remote access.
</BLOCKQUOTE>
<BLOCKQUOTE>
(Well, it should be deprecated).
</BLOCKQUOTE>
<BLOCKQUOTE>
You should probably use ssh, STEL, ssltelnet, or install a
Kerberos or the <A HREF="http://www.xs4all.nl/~freeswan/">FreeS/WAN</A> IPSec infrastructure to provide you with
an encrypted, unspoofable, unsniffable connection between your
client and your server.
</BLOCKQUOTE>
<BLOCKQUOTE>
Please don't respond with "but I'm behind a firewall" or "this is
just my home system." Those are "head in the sand" attitudes that
make for a brittle infrastructure (one little crack and the whole
wall collapses).
</BLOCKQUOTE>
<BLOCKQUOTE>
Anyway, if you've termined that telnet is really what you need,
that it matches your requirements and enforces your policies to
your satisfaction, then here's some pointer to troubleshooting
common failures. These also apply to ssh, STEL, etc.
</BLOCKQUOTE>
<BLOCKQUOTE>
You said that 'ping' is working. Assuming that you are using the
commands from the same host and using the same form of
addressing/naming for your 'ping' and your 'telnet' commands here
are the most likely problems:
</BLOCKQUOTE>
<BLOCKQUOTE><BLOCKQuote>
* You're session might not actually be failing. It might
just be taking a very long time. Search the answer guy
back issues for the phrase "double;reverse;dns" and you'll
find a number of my previous explanations about a common
cause of this delay (and some pointer on what to do about it)
Here are a couple of them:
</BLOCKQuote></BLOCKQUOTE>
<BLOCKQUOTE><DL><DT>
Issue 45: More "Can't Telnet Around My LAN" Problems
<DD><A HREF="http://www.linuxgazette.com/issue45/tag/11.html"
>http://www.linuxgazette.com/issue45/tag/11.html</A>
</DL></BLOCKQUOTE>
<BLOCKQUOTE><DL><DT>
Issue 38: Telnetd and pausing
<DD><A HREF="http://www.linuxgazette.com/issue38/tag/32.html"
>http://www.linuxgazette.com/issue38/tag/32.html</A>
</DL></BLOCKQUOTE>
<BLOCKQUOTE><DL><DT>
Issue 30: tv cards and dual monitor
<DD><A HREF="http://www.linuxgazette.com/issue30/tag_tvcard.html"
>http://www.linuxgazette.com/issue30/tag_tvcard.html</A>
</DL></BLOCKQUOTE>
<BLOCKQUOTE>
* You might not have the telnet daemon package installed
</BLOCKQUOTE>
<BLOCKQUOTE>
on your target host. It might be installed but not
properly configured in <TT>/etc/inetd.conf.</TT> That should
contain a line that looks something like:
</BLOCKQUOTE>
<blockquote><pre>telnet stream tcp nowait telnetd.telnetd /usr/sbin/tcpd /usr/sbin/in.telnetd
</pre></blockquote>
<BLOCKQUOTE>
* You might not have inetd running. (It's the daemon, service
</BLOCKQUOTE>
<BLOCKQUOTE>
program, that reads the <TT>/etc/inetd.conf</TT>, listens for
connections on those ports, and dispatches the various
service programs that handle those services).
</BLOCKQUOTE>
<BLOCKQUOTE>
(An obscure possibility is that you might have something
broken in your name services handling. You system would
normally match service/protocol names to IP port numbers
and transport layer protocols (TCP, UDP, etc) using the
<TT>/etc/services</TT> file. If that's corrupted, or if your
<TT>/etc/nsswitch.conf</TT> is pointing your NSS libraries to
query some really bogus and corrupted backend it would be
possible that inetd would end up listening to the wrong
ports for many services. I've never seen anyone mess
that up <TT>--</TT> but I'm sure it's possible).
</BLOCKQUOTE>
<BLOCKQUOTE>
* There may be a firewall or packet filtering system between
</BLOCKQUOTE>
<BLOCKQUOTE>
your client and your target. That might let ICMP ('ping'
traffic) through while blocking your TCP ('telnet' on port
23) traffic.
</BLOCKQUOTE>
<BLOCKQUOTE>
* It's possible that you're telnet client program, or one
</BLOCKQUOTE>
<BLOCKQUOTE>
of the client libraries is broken, or that you have some
degenerate values in your environment or even in your
own .telnetrc file. The 'telnet' client exchanges a
number of key environment variables with the daemon
to which it connects. This is to configure your terminal
type, set your username and your DISPLAY values, your
timezone, and some other stuff. It's possibly (though
unlikely) that you could be tripping over something that
the 'in.telnetd' on your target really doesn't like).
</BLOCKQUOTE>
<BLOCKQUOTE>
Hopefully that will help.
</BLOCKQUOTE>
<BLOCKQUOTE>
When asking about these sorts of problems it's important to
be quite specific about the failure mode (the symptoms). It is
VERY important to capture and quote any error messages that you
get and to explain exactly what command(s) you issued to elicit
those symptoms.
</BLOCKQUOTE>
<BLOCKQUOTE>
Unfortunately crafting a good question is sometimes harder than
answering them. (In fact I have managed to come across answer
on many occasions while I was writing up the question I intended
to post. The process or rigorously describing the problem has
often led me to my own answers. Sometimes I post the message
with my solution anyway).
</BLOCKQUOTE>
<BLOCKQUOTE>
One tip for troubleshooting this. Staring with 'ping' is a good
idea. It basically eliminates a number of possible problems
from the low-level "is the network card configured and is a
cable plugged into it?" parts of your problem. It's also good
to do a 'traceroute' to your target. This might show that your
packets are being routed through some unexpected device that is
filtering some of your traffic.
</BLOCKQUOTE>
<BLOCKQUOTE>
If you have console access to the target server (including a "carbon
proxy" <TT>---</TT> a person on the phone in front of it) then you can
run (or have your proxy) run the 'tcpdump' command. This can
show you the headers of every packet that comes across a given
network interface. 'tcpdump' has a small language for describing
the exact sorts of traffic that you want to see and filtering out
all the other traffic that you don't want. If you search the
LG AG archives on 'tcpdump' you should find a number of examples
of how to use it. You might go for something like:
</BLOCKQUOTE>
<blockquote><pre> tcpdump -i eth0 -n host $YOURCLIENT and port 23
</pre></blockquote>
<BLOCKQUOTE>
... for example. (TCP port 23 is the standard for telnet traffic).
</BLOCKQUOTE>
<BLOCKQUOTE>
If that doesn't work, you might consider temporarily replacing your
'in.telnetd' with an 'strace' wrapper script. Basically
you just rename the in.telnetd file to in.telnetd.real and
create a shell script (see below) to monitor it:
</BLOCKQUOTE>
<blockquote><pre>#!/bin/sh
exec strace -o /root/testing/telnet.strace /usr/sbin/in.telnetd.real
</pre></blockquote>
<BLOCKQUOTE>
I've described this process before as well. Here's a
link to one of those:
</BLOCKQUOTE>
<BLOCKQUOTE><DL><DT>
Issue 20
<DD><A HREF="http://www.linuxgazette.com/issue20/lg_answer20.html"
>http://www.linuxgazette.com/issue20/lg_answer20.html</A>
</DL></BLOCKQUOTE>
<BLOCKQUOTE><DL><DT>
Issue 17
<DD><A HREF="http://www.linuxgazette.com/issue17/answer.html"
>http://www.linuxgazette.com/issue17/answer.html</A>
</DL></BLOCKQUOTE>
<BLOCKQUOTE>
(use your browswer's "search in page" <TT>--</TT> [Alt][F] in Netscape
and the <TT>/</TT> key in Lynx to search on 'strace' to find the
messages I'm talking about. Those older issues were back before
Heather was doing my HTML for me, and splitting each message/thread
into separately HTML pages like I should have been doing all
along).
</BLOCKQUOTE>
<BLOCKQUOTE>
That 'strace' trick is surprising handy. At <A HREF="http://www.linuxcare.com/">Linuxcare</A> we use
it all the time, and it often helps us find missing config files,
directories where files should be, files where directories should
be, mangled permissions, and all sorts of things. There's another
tools called 'ltrace' which gives similar, though slightly higher
level information.
</BLOCKQUOTE>
<BLOCKQUOTE>
Using 'tcpdump' and 'strace' you can troubleshoot almost any
problem in Linux. They are like the "X-Ray" machines and CAT/PET
scanners for Linux tech support people. However, I don't recommend
them lightly. Go through the list of common ailments that I listed
first, consider using ssh instead, and then see if you need
"surgical diagnostics."
</BLOCKQUOTE>
<!-- end 8 -->
<!-- .~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~. -->
<A NAME="tag/9"><HR WIDTH="75%" ALIGN="center"></A>
<!-- begin 9 -->
<H3 align="left"><img src="../gx/dennis/qbubble.gif"
height="50" width="60" alt="(?) " border="0"
>Getting Familiar with a UNIX System</H3>
<p><strong>From Patricia Lonergan on Fri, 07 Apr 2000
</strong></p>
<!-- ::
Getting Familiar with a UNIX System
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
:: -->
<P><STRONG>
How would I find the following on the version of Unix I am using:,A (B OS
type and release, node name, IP address, CPU type, CPU speed, amount of
RAM, disk storage space, number of users who have ids, number of hosts
known.,A (B Thanks Answer Guy
</STRONG></P>
<BLOCKQUOTE><IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
>
The comamnd:
</BLOCKQUOTE>
<blockquote><pre> uname -a
</pre></blockquote>
<BLOCKQUOTE>
Should give you the UNIX name (Linux, SunOS, HP-UX, etc)
and the kernel version/release, architecture, and some other info.
(Might also include the kernel compilation date and host)
</BLOCKQUOTE>
<BLOCKQUOTE>
The command:
</BLOCKQUOTE>
<blockquote><pre> ifconfig -a
</pre></blockquote>
<BLOCKQUOTE>
... should give the the IP address, netmask and broadcast address of
each interface in the system.
</BLOCKQUOTE>
<BLOCKQUOTE>
The command:
</BLOCKQUOTE>
<blockquote><pre> hostname
</pre></blockquote>
<BLOCKQUOTE>
... should give you the the DNS hostname that this system
"thinks" it has. Looking that up via reverse DNS using a
command like:
</BLOCKQUOTE>
<blockquote><pre> dig -x
</pre></blockquote>
<BLOCKQUOTE>
... might be possible if you have the DNS utils package
installed.
</BLOCKQUOTE>
<BLOCKQUOTE>
From there things start to get pretty complicated depending
on which flavor of UNIX you're on, and how it's configured.
(In fact there are exceptional cases where the preceding
commands won't work):
</BLOCKQUOTE>
<BLOCKQUOTE><BLOCKQuote>
I'll confine the rest of my answers to Linux.
</BLOCKQuote></BLOCKQUOTE>
<BLOCKQUOTE>
You can get the CPU type and speed using the command:
</BLOCKQUOTE>
<blockquote><pre> cat /proc/cpuinfo
</pre></blockquote>
<BLOCKQUOTE>
(assuming that your kernel is compiled with the <TT>/proc</TT> filesystem
enabled and that you have <TT>/proc</TT> mounted. Those are the
common case).
</BLOCKQUOTE>
<BLOCKQUOTE>
Linux provides a 'free' command to report on your RAM and
swap availability and usage. Many UNIX systems will have the
'top' command installed. It can also provide that information
(though it defaults to interactive mode <TT>---</TT> and thus is less
useful in scripts).
</BLOCKQUOTE>
<BLOCKQUOTE>
Any UNIX system should provide the 'mount' and 'df' commands to
generate reports about what storage devices are attached and
in use (mounted) and about the amound of free space available on
each. Note you should track not only your free space (data blocks)
but your free inodes (management data) so use both of the following
commands:
</BLOCKQUOTE>
<blockquote><pre> df
df -i
</pre></blockquote>
<BLOCKQUOTE>
The 'mount' command will also report the filesystem types and any
options (readonly, synchronous, etc) that are in effect on these.
You might have to use the 'fdisk <TT>-l</TT>' command to find any
unmounted filesystems (that might not be listed in your <TT>/etc/fstab</TT>
file) under Linux. Solaris has a similar command called prvtoc
(print volume table of contents).
</BLOCKQUOTE>
<BLOCKQUOTE>
Asking about number of user accounts is straightforward on a
system that is just using local <TT>/etc/passwd</TT> and <TT>/etc/group</TT> files
(the default). You can simply using the following:
</BLOCKQUOTE>
<blockquote><pre> wc -l /etc/passwd
</pre></blockquote>
<BLOCKQUOTE>
... to get a number of local users. Note that many of these
accounts are purely system accounts, used to managed the
ownership and permissions on files and system directories.
If you read though that file a little bit it should be obvious
which ones are which. In general Linux distributions start
numbering "real" users (the ones added after the system was
installed) at 500 or 1000 so all of the names with a UID
above that number are "real" (or were added by the system
administrator).
</BLOCKQUOTE>
<BLOCKQUOTE>
However, it's possible (particularly in UNIX system that are
installed on corporate networks) that your system(s) are using
a networked account system such as NIS or NIS+. You might be
able to get some idea of the number of users on such a network
using the 'ypcat' command like so:
</BLOCKQUOTE>
<blockquote><pre> ypcat passwd | wc -l
</pre></blockquote>
<BLOCKQUOTE>
The questions of "number of hosts known" is actually a bit
silly. "Known" in what sense? Most system use DNS for
mapping host names to IP addresses. Thus any Internet connected
system "knows" about millions of hosts. It is possible for
a sysadmin to provide the system with a special list of hosts and
IP addresses using the <TT>/etc/hosts</TT> files, but this is pretty rare
these days. (It's just too likely that you'll get those files
out of sync with your DNS).
</BLOCKQUOTE>
<BLOCKQUOTE>
I suppose you should also look for commands with the letters
"stat" in their name. Read the man pages for 'vmstat', 'netstat'
'lpstat' etc. Many versions of UNIX also include a 'sar' command
though that isn't common on Linux. 'rpcinfo' and 'route'
are other useful commands.
</BLOCKQUOTE>
<BLOCKQUOTE>
This whole set of questions has a "do my homework" tone to it.
(particularly since it's common from a .edu domain). Keep
in mind that I've just barely scratched the surface of the
information that's available to a skilled sysadmin who needs to
become familiar with a new machine. There are hundreds of
other things to know about such a system.
</BLOCKQUOTE>
<BLOCKQUOTE>
Most of the information you care about it under <TT>/etc.</TT> On a
Linux system there is also quite a bit under <TT>/proc</TT> (most of
forms of UNIX that support <TT>/proc</TT> only but process information
thereunder, while the Linux kernel uses it as an abstraction to
provide for all sorts of dynamic kernel status information out to
user space).
</BLOCKQUOTE>
<!-- sig -->
<!-- end 9 -->
<!-- .~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~. -->
<A NAME="tag/10"><HR WIDTH="75%" ALIGN="center"></A>
<!-- begin 10 -->
<H3 align="left"><img src="../gx/dennis/qbubble.gif"
height="50" width="60" alt="(?) " border="0"
>Connecting NT and OS/2</H3>
<p><strong>From Carlos Ferrer on Thu, 13 Apr 2000
</strong></p>
<!-- ::
Connecting NT and OS/2
~~~~~~~~~~~~~~~~~~~~~~
:: -->
<P><STRONG>
Do you know how to connect an NT box with an OS/2 box using null modem?
</STRONG></P>
<P><STRONG>
Thanks,
Carlos Ferrer
</STRONG></P>
<BLOCKQUOTE><IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
>
Yes. You plug one end of the null modem cable into a serial
port on one of the boxes, and the other into a serial port on the
other box. Then you install some software on each, configure and
run it.
</BLOCKQUOTE>
<BLOCKQUOTE>
Before you ask:
</BLOCKQUOTE>
<BLOCKQUOTE><BLOCKQuote>
NO! I don't know what NT or OS/2 native software you should use.
That's your problem. I answer Linux questions. I'm the Linux Gazette
Answer Guy.
</BLOCKQuote></BLOCKQUOTE>
<BLOCKQUOTE>
So, why don't you ask the technical support from IBM and/or Microsoft.
They sold you the software. They should provide the support. The
Linux community gives us software, so I give away alot of support.
</BLOCKQUOTE>
<BLOCKQUOTE>
Meanwhile, you might have some luck with plain old MS-DOS Kermit.
NT and OS/2 are supposed to support running DOS programs, and they
should allow you to configure their DOS "boxes" (virtual machines,
whatever) to have access to their respective serial ports. You can
also get Kermit '95 which should work on Win '9x, NT, and OS/2.
This is a commercial package. It is not free.
</BLOCKQUOTE>
<BLOCKQUOTE>
The C-Kermit for UNIX and Linux is also not free; though it can be
freely downloaded and compiled. You should read its license to
determine if you can use it freely or whether you are required to
buy the C-Kermit book. (Of course you could support their project
by buying the books regardless). There is also a G-Kermit which is
GPL'd.
</BLOCKQUOTE>
<BLOCKQUOTE>
You can learn about Kermit at:
</BLOCKQUOTE>
<BLOCKQUOTE><DL><DT>
Columbia University Kermit Project Home page
<DD><A HREF="http://www.columbia.edu/kermit"
>http://www.columbia.edu/kermit</A>
</DL></BLOCKQUOTE>
<!-- sig -->
<!-- end 10 -->
<!-- .~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~. -->
<A NAME="tag/11"><HR WIDTH="75%" ALIGN="center"></A>
<!-- begin 11 -->
<H3 align="left"><img src="../gx/dennis/qbubble.gif"
height="50" width="60" alt="(?) " border="0"
>"Temporarily Controlling a VT"</H3>
<p><strong>From James Knight on Thu, 13 Apr 2000
</strong></p>
<!-- ::
"Temporarily Controlling a VT"
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
:: -->
<P><STRONG>
If I have an interactive program running on a VT, say tty1, can i
temporarily "control" that VT from another, say tty2, or better yet,
through a telnet connection (pts/n)?
</STRONG></P>
<P><STRONG>
For instance, i have naim running on tty1, I've been logging in via
telnet, and killing that process, and start it again so they don't
interfere with each other. Can I just pretend I'm at the console somehow,
then when I logout, i'll still be connected to naim?
</STRONG></P>
<P><STRONG>
Thanks,
Jay Knight
</STRONG></P>
<BLOCKQUOTE><IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
>
The easiest way to do this is to run 'screen'
</BLOCKQUOTE>
<BLOCKQUOTE>
Instead of starting interactive programs directly from your VT
login shell, run 'screen' and start the program thereunder. Now
you can "detach" the whole screen session (with up to 10 interactive
programs running under it) and re-attach from any other sort of
terminal login.
</BLOCKQUOTE>
<BLOCKQUOTE>
I do this routinely. I'm doing it now. Currently I'm working in
an xterm which is 99 characters wide and 35 lines tall. Earlier
I had connected to my system via ssh, and I "yanked" my 'screen'
session over to that xterm (80 characters by 50 lines) using the
following command:
</BLOCKQUOTE>
<blockquote><pre> 'screen -r -d -e^]]'
</pre></blockquote>
<BLOCKQUOTE>
... the <TT>-d</TT> option tells my new 'screen' command to look for another
'screen' session and detach it from wherever it is, the <TT>-r</TT> is to
re-attach it to my current terminal or psuedo-terminal, and the
<TT>-e</TT> option let's me set alternative "escape" and "quote" characters
(more on that in a moment).
</BLOCKQUOTE>
<BLOCKQUOTE>
I've described 'screen' in previous LG issues. However, it is
hard to find. For one thing the desired features are difficult to
describe and the keywords that do cover it are far too general.
For example, so far the keywords we've used are:
</BLOCKQUOTE>
<BLOCKQUOTE><BLOCKQuote>
You: temporarily control VT
Me: attach re-attach detach screen session yank
</BLOCKQuote></BLOCKQUOTE>
<BLOCKQUOTE>
... see?
</BLOCKQUOTE>
<BLOCKQUOTE>
Anyway, here's the VERY short intro to 'screen':
</BLOCKQUOTE>
<BLOCKQUOTE><BLOCKQuote>
First 'screen' just starts an extra shell. So, if you just type 'screen'
(most distributions include 'screen') that's pretty much all you'll get.
(You might get some sort of copyright or other notice). Now you can
run programs as usual. The only big difference is that there is one key
([Ctrl]-[A] by default) which is not captured by 'screen'. That one
"meta" key is your trigger to fire off all of 'screen&quot;s other features.
Here are a few of them (listed below as [Meta]+(key)):
</BLOCKQuote></BLOCKQUOTE>
<blockquote><pre> [Meta] [a] -- send a literal [Meta] to the current session
[Meta] [c] -- create an a additional shell session under
this 'screen'
[Meta] [w] -- display/list current sessions (windows)
[Meta] [A] -- (upper case 'A') set this session's (window's)
title
[Meta] [Esc] -- go into "scrollback" and "copy" mode (keyboard
cut &amp; paste)
[Meta] [Space] -- cycle to the next session
[Meta] [Meta] -- switch to most recent session
[Meta] []] -- (right square bracket) paste copy of "cut" buffer
[Meta] [?] -- Quick help page of other keystrokes
[Meta] [d] -- Detach
[Meta] [S] -- (upper case 'S') split the screen/display
(like 'splitvt')
[Meta] [Q] -- (upper case 'Q') unsplit the screen/display
[Meta] (digit) -- switch directly to session number (digit)
</pre></blockquote>
<BLOCKQUOTE>
There are many others. There are many features to 'screen.' It is
the UNIX/Linux terminal power tool. You also get the ability to
share your session(s) with another user (like the old 'kibitz'
package). That's very handy for doing online tutorial and tech
support. You get a scrollback buffer and keyboard driven cut and
paste (with 'vi' inspired keybindings, you can even search back
through the current text and backscroll buffer).
</BLOCKQUOTE>
<BLOCKQUOTE>
Most of the URLs you see in the "Answer Guy" are pasted in from
a 'lynx' session using 'screen.'
</BLOCKQUOTE>
<BLOCKQUOTE>
If you forget to detach, you can use the <TT>-d</TT> option (shown above)
to remotely detach a session. You can use other options to select
from multiple 'screen' sessions that you have detached. You can
also run 'screen' commands to start up programs in their own
screen windows.
</BLOCKQUOTE>
<BLOCKQUOTE>
Oddly enough I've even found that I occasionally start or
re-attach to one 'screen' session on a remote system from within a
local 'screen' session. When I do this I use the <TT>-e</TT> option to
give that other (remote) screen session a different meta key.
(That's what I did in the sample command up there, with the
'<TT>-e^]]</TT>' setting it up so that the [Ctrl][Right Square Bracket]
was the meta key for that session. I did that while I was at
work. Before I left there I detached it. When I got home I
re-attached it to this 'xterm' (where I'm typing right now).
At first I just re-attached it with '<TT>-r</TT>' <TT>---</TT> but then I realized
that it was using my other meta key. So a detached again and
use '<TT>-r^aa</TT>' to reset those to the defaults (to which I'm more
accustomed).
</BLOCKQUOTE>
<BLOCKQUOTE>
Since I've introduced people at <A HREF="http://www.linuxcare.com/">Linuxcare</A> to this meme, I've
found that many of them have come to view their "sessions"
in a way that's similar to me. We maintain our state for
weeks or months by detaching, logging out, going elsewhere
(into X, out of X, from work, from home, etc), and always
re-attaching to our ongoing sessions. It's a whole different
way of using your computer.
</BLOCKQUOTE>
<BLOCKQUOTE>
So, try it. See if it does the trick for you.
</BLOCKQUOTE>
<!-- sig -->
<!-- end 11 -->
<!-- .~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~. -->
<A NAME="tag/12"><HR WIDTH="75%" ALIGN="center"></A>
<!-- begin 12 -->
<H3 align="left"><img src="../gx/dennis/qbubble.gif"
height="50" width="60" alt="(?) " border="0"
>Running out of Pseudo-tty's</H3>
<p><strong>From FRM on Fri, 14 Apr 2000
</strong></p>
<!-- ::
Running out of Pseudo-tty's
~~~~~~~~~~~~~~~~~~~~~~~~~~~
:: -->
<P><STRONG>
hi,
</STRONG></P>
<P><STRONG>
my sunos 4.1.4 kernel is already configed for the max 256 pty's
(pseudo devices), but my users complain about running out of them
often. do i need to add files to the <TT>/dev</TT> directory or recompile the
kernel again...or????
</STRONG></P>
<P><STRONG>
any help much appreciated,
</STRONG></P>
<P><STRONG>
Randy A
Compaq Computer Corp.
</STRONG></P>
<BLOCKQUOTE><IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
>
SunOS 4.1.4??? Hmm. Maybe you need an upgrade.
</BLOCKQUOTE>
<BLOCKQUOTE>
If 256 is the max for SunOS then I don't know what
you'd do to get around that. Under Linux the max is about 2048.
I suppose you could try making a bunch of additonal device nodes and
re-writing/compiling a bunch of your apps to open the new group of
nodes rather than the old ones.
</BLOCKQUOTE>
<BLOCKQUOTE>
I'd say that SunOS 4.1.4 is showing its age. You might want to
consider switching to <A HREF="http://www.openbsd.org/">OpenBSD</A>, <A HREF="http://www.netbsd.org/">NetBSD</A>, or Linux. (Note:
SunOS was a BSDish UNIX, so you might be more comfortable with
it than you would be with Linux. I don't know about binary
compatability for your existing applications).
</BLOCKQUOTE>
<BLOCKQUOTE>
(Obviously I don't know much about SunOS. I'm the <EM>LINUX</EM>
Gazette Answer Guy and my experience with other forms of UNIX
is too limited and crufty to help you more than that).
</BLOCKQUOTE>
<!-- sig -->
<!-- end 12 -->
<!-- .~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~. -->
<A NAME="tag/13"><HR WIDTH="75%" ALIGN="center"></A>
<!-- begin 13 -->
<H3 align="left"><img src="../gx/dennis/qbubble.gif"
height="50" width="60" alt="(?) " border="0"
>XFree 4.0 and &quot;:0.0 refused by server&quot; Errors</H3>
<p><strong>From Alain Toussaint on Sun, 16 Apr 2000
</strong></p>
<!-- ::
XFree 4.0 and &quot;:0.0 refused by server&quot; Errors
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
:: -->
<P><STRONG>
Hello Answerguy,
</STRONG></P>
<P><STRONG><CODE>
last week,i installed debian (a really base installation) on a factory
</CODE></STRONG></P>
<P><STRONG>
fresh disk and then set out to compile Xfree86 4.0 (i did not have X
previously),it did compile and work fine and i've been using it daily
with the startx command but wenesday this week,the hard disk on my
mother's computer died so i set out to build a linux boot disk
containing an X server so she could log in my system and continue to do
her work,i then tried xdm tonight (locally on my box first),xdm
loaded,took my credential but it did not open a session both as a user
(alain) and as root,i looked over in the .xession-errors file but i've
came to no conclusion,here's the content of the file:
</STRONG></P>
<pre><strong>&gt; /home/alain/.xinitrc: exec: xfwm: not found
&gt; /home/alain/.xinitrc: xscreensaver: command not found
&gt; Xlib: connection to ":0.0" refused by server
&gt; Xlib: Client is not authorized to connect to Server
&gt; xrdb: Can't open display ':0'
&gt; Xlib: connection to ":0.0" refused by server
&gt; Xlib: Client is not authorized to connect to Server
&gt; xrdb: Can't open display ':0'
&gt; Xlib: connection to ":0.0" refused by server
&gt; Xlib: Client is not authorized to connect to Server
&gt; xrdb: Can't open display ':0'
</strong></pre>
<P><STRONG>
the first 2 errors don't worry me much (i have xfce installed and for
xscreensaver,i don't want it,since i'll install kde soon,i'm not pressed
to fix the xfce script that much),but the Xlib errors worry me quite a
bit,i then downloaded debian's xdm package and uncompressed it in a
temporary directory to compare the content of both our <TT>/etc/X11/xdm</TT>
directory (mine as well as the debian one) but i didn't find the root of
the problem,could you please help me ??
</STRONG></P>
<P><STRONG>
Thanks a lot
Alain Toussaint
</STRONG></P>
<BLOCKQUOTE><IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
>
Hmmm. It sounds like a problem with your .Xauthority file.
You said you were using 'startx' before, and you're now trying to
use 'xdm'. What happens if you go back and try 'startx' again?
</BLOCKQUOTE>
<BLOCKQUOTE>
'xdm' has a different way of handling the 'xauth' files (using
the 'GiveConsole' and 'TakeConsole' scripts). Do a 'ps' listing
and see if you have a X server with arguments like:
</BLOCKQUOTE>
<blockquote><pre> X :0 -auth /var/xdm/Xauthority
</pre></blockquote>
<BLOCKQUOTE>
There's supposed to be a "GiveConsole" script that does
something like:
</BLOCKQUOTE>
<blockquote><pre> xauth -f /var/xdm/Xauthority extract - :0 | xauth -f ~$USER/.Xauthority merge -
</pre></blockquote>
<BLOCKQUOTE>
(Which extracts an MIT Magic Cookie or other access token from xdm's
Xauthority file and merges it into the "cookie jar" of your user.
This can, in principle, allow multiple accounts on a host or across a
network to access the same display server).
</BLOCKQUOTE>
<BLOCKQUOTE>
Anyway, there are many other tricks that you can use to troubleshoot
similar problems.
</BLOCKQUOTE>
<BLOCKQUOTE>
I sometimes will start the X server directly
(bypassing 'xinit', 'startx', and 'xdm'); then switch back to one
of my text mode consoles (usually when I'm doing this I slap the old
&amp; on the end of the X server's command line, if I forget then I do the
old [Ctrl]+[Z], 'bg' key and command). Next I 'export DISPLAY=:0'
(or :1, or whatever), and start an 'xterm &amp;'
</BLOCKQUOTE>
<BLOCKQUOTE>
At that point I switch back to the X virtual console, and use the
resulting 'xterm' to work more magic. I may need to run my own
'xrdb' commands to merge in my own entries into the "X resources
database" (think of that as being your X server's "environment" <TT>---</TT>
a set of name/pattern and value pairs which are used by X client
programs to determine their default appearance, behaviour, etc).
</BLOCKQUOTE>
<BLOCKQUOTE>
I might also run a number of 'xset' commands to add to my
font path and play with other settings.
</BLOCKQUOTE>
<BLOCKQUOTE>
Doing this sort of "worm's eye" inching through the labyrinthine
X initialization process will usually isolate any problems that
you're having. It's playing with X enough to realize that it's
going through all of these steps that's so difficult.
</BLOCKQUOTE>
<BLOCKQUOTE>
I presume that you already know some of that (since you've already
fetched your own XFree 4.0 sources and built them). It's clear
that you're not a novice. Anyway, trying looking for .Xauthority
files. Allegedly if you simply delete them it opens the X server
wide open. I don't know if that's still true in XFree 4.0 but
it seemed to work on XFree 3.x the one time I tried it.
</BLOCKQUOTE>
<BLOCKQUOTE>
Good luck on that new X server. I haven't grabbed it to play with
it yet. I may wait until someone has a first cut of a <A HREF="http://www.debian.org/">Debian</A>
binary posted to "woody" (the current development/experimental
branch of the Debian project).
</BLOCKQUOTE>
<!-- sig -->
<!-- end 13 -->
<!-- .~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~. -->
<A NAME="tag/14"><HR WIDTH="75%" ALIGN="center"></A>
<!-- begin 14 -->
<H3 align="left"><img src="../gx/dennis/bbubble.gif"
height="50" width="60" alt="(!) " border="0"
>FW: Linux</H3>
<p><strong>Answered By Carl Davis on Mon, 17 Apr 2000
</strong></p>
<BLOCKQUOTE>
Thanks Jim, but I have solved the mystery................
</BLOCKQUOTE>
<BLOCKQUOTE>
The problem was that lilo does not like multiple "append" statements in
/etc/lilo.conf.
I fixed this by putting all the statements on the one append line,
separated by commas
and of cotatement2, statement3"
You may wish to add this snippet to the list of 2cent tips.
</BLOCKQUOTE>
<BLOCKQUOTE>
Regards
</BLOCKQUOTE>
<BLOCKQUOTE>
Carl Davis
</BLOCKQUOTE>
<P><STRONG><IMG SRC="../gx/dennis/qbub.gif" ALT="(?)"
HEIGHT="28" WIDTH="50" BORDER="0"
>
<TT>-----Original</TT> Message-----
From: Carl Davis
Sent: Thursday, April 13, 2000 9:12 AM
To: '<A HREF="mailto:linux-questions-only@ssc.com"
>linux-questions-only@ssc.com</A>'
Subject: Linux
</STRONG></P>
<P><STRONG>
Hi Jim,
</STRONG></P>
<P><STRONG>
My compliments on a great column. I am running Linux (Mandrake 7) on a
Celeron 466
with 128 Mb RAM. My problem is I cannot persuade Linux to recognise more
than 64 Mb.
I have tried adding the following to lilo.conf: append="mem=128M", to
no avail. It still
comes up with only 64 Mb. Various flavours of Windoze can see the full
128 Mb. Any ideas
on what's going on here ?
</STRONG></P>
<P><STRONG>
Carl Davis
</STRONG></P>
<!-- end 14 -->
<!-- .~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~. -->
<A NAME="tag/15"><HR WIDTH="75%" ALIGN="center"></A>
<!-- begin 15 -->
<H3 align="left"><img src="../gx/dennis/qbubble.gif"
height="50" width="60" alt="(?) " border="0"
>Determining the Type of Each Filesystem</H3>
<p><strong>From Scott on Mon, 17 Apr 2000
</strong></p>
<!-- ::
Determining the Type of Each Filesystem
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
:: -->
<P><STRONG>
Hello Answer guy,
</STRONG></P>
<P><STRONG>
The company I work for is going to start developing products for Linux soon.
Part of my preparation for this is to find out about Linux file systems.
One thing I haven't been able to find is how to find out what file system
each filesystem is using. Is there a command line utility that shows this?
How do I accomplish this programatically?
</STRONG></P>
<BLOCKQUOTE><IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
>
Here's a simple shell script that will parse the output from the
'mount' command and isolate the device name and type for each mounted
filesystem:
</BLOCKQUOTE>
<blockquote><pre> mount | {
IFS=" (,)";
while read dev x mpoint x type opts; do
echo $dev $type;
done
}
</pre></blockquote>
<BLOCKQUOTE>
Notice at this is one of my common "data mill loops" <TT>---</TT> you
pipe the output of some command into a 'while read ...; do' loop
and do all your work in the subprocess. (When I'm teaching shell
scripting one of the first points I emphasize about pipes is
that a subprocess is implicitly made on one side of your pipe
operator, or the other).
</BLOCKQUOTE>
<BLOCKQUOTE>
We also see that I'm using the variable "$x" to eat extra
fields (the words "on" and "type" from 'mount&quot;s output). Finally,
I'm using the shell-special IFS (inter-field separator) shell variable
to add the characters "(,)" to the list of field separators. This
means that each of the mount options <TT>---</TT> read-only vs read/write, nodev,
nosuid, etc <TT>---</TT> will be treated as a separate value. I could then,
within my 'while' loop, nest a 'for' loop to process each option on
each filesystem.
</BLOCKQUOTE>
<BLOCKQUOTE>
Creative use of IFS and these 'while read ...; do' loops can allow
us to do quite a bit directly in shell without resorting to 'awk'
and/or 'sed' to do simple parsing. Creative use of the 'case'
command (which uses glob patterns to match shell variable values)
is also useful and can replace many calls to 'grep'.
</BLOCKQUOTE>
<BLOCKQUOTE>
To get filesystem information from within a C program you'd
use the <TT>'statfs()</TT>' or <TT>'fstatfs()</TT>' system calls. Read the
'statfs(2)' or 'fstatfs(2)' man pages for details. Fetch
the util-linux sources and read the source code to the
'mount' and 'umount' commands for canonical examples of
the use of these and related sytem calls.
</BLOCKQUOTE>
<P><STRONG><IMG SRC="../gx/dennis/qbub.gif" ALT="(?)"
HEIGHT="28" WIDTH="50" BORDER="0"
>
Any help is appreciated!
</STRONG></P>
<P><STRONG>
Scott C
</STRONG></P>
<!-- end 15 -->
<!-- . . . . . . . . . . . . . . . . . . . -->
<HR WIDTH="40%" ALIGN="center">
<!-- begin 15 -->
<H3 align="left"><img src="../gx/dennis/qbubble.gif"
height="50" width="60" alt="(?) " border="0"
>Which filesystem?</H3>
<p><strong>From Andrew T. Scott on Mon, 17 Apr 2000
</strong></p>
<BLOCKQUOTE>
Jim Dennis wrote:
.....
</BLOCKQUOTE>
<P><STRONG><IMG SRC="../gx/dennis/qbub.gif" ALT="(?)"
HEIGHT="28" WIDTH="50" BORDER="0"
>
and do all your work in the subprocess. (When I'm teaching shell
scripting ...
</STRONG></P>
<BLOCKQUOTE><IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
>
Where can I sit in on this class?
</BLOCKQUOTE>
<BLOCKQUOTE>
-Andrew
</BLOCKQUOTE>
<EM>[ <BLOCKQUOTE>
Luckily for <A HREF="http://www.linuxcare.com/">Linuxcare</A>, its training department has a whole bunch of people
in it (wave hi, everybody!) because they've got Jim assigned to Do Cool Stuff
so he's not teaching right now. To be fair, they are only one among many
training providers for Linux; you can see a decent listing at
<A HREF="http://www.lintraining.com"
>http://www.lintraining.com</A> which redirects to Linsight's directory by
location and news on the subject.
</BLOCKQUOTE><P>-- Heather. ]</P></EM>
<!-- end 15 -->
<!-- .~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~. -->
<A NAME="tag/16"><HR WIDTH="75%" ALIGN="center"></A>
<!-- begin 16 -->
<H3 align="left"><img src="../gx/dennis/qbubble.gif"
height="50" width="60" alt="(?) " border="0"
>Four Questions</H3>
<p><strong>From vg24 on Tue, 18 Apr 2000
</strong></p>
<!-- ::
Four Questions
~~~~~~~~~~~~~~
:: -->
<P><STRONG>
Hi Answer Guy,
</STRONG></P>
<P><STRONG>
I had a few small questions about my <A HREF="http://www.slackware.org/">Slackware</A> Linux Box...
</STRONG></P>
<pre><strong>&gt; (1) How do I get applications (like xmms) to startup automatically when I
&gt; start FVWM95 with a 'startx' command? I'm hoping to achieve something
&gt; similar to the "StartUp" menu in Win98.
</strong></pre>
<BLOCKQUOTE><IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
>
Normally the 'startx' command is a shell script which looks for a
~/.Xclients file. That file is normally just another shell script.
It consists of a series of command that are started in the background
(using the trailing '&amp;' shell operator), and one command that is
'exec&quot;d (started in the foreground, and used to replace the shell
script's interpreter itself.
</BLOCKQUOTE>
<BLOCKQUOTE>
That foreground command is usually a window manager. In any event it
becomes the "session manager" for the X server. When the program exits,
the X server takes that as an indication that it should shutdown.
</BLOCKQUOTE>
<BLOCKQUOTE>
So, the answer to your question is to add the appropriate commands to
the .Xclients script in your home directory.
</BLOCKQUOTE>
<BLOCKQUOTE>
If you are logging in via 'xdm' (a graphical login program) then it
may be that your system is looking for an ~/.Xsession script instead.
I usually just link to two names to one file. However, you certainly
could have completely different configurations based on whether you
logged in via 'xdm' or used the 'startx' command.
</BLOCKQUOTE>
<BLOCKQUOTE>
Of course this is just a matter of convention and local policy. As I
said, 'startx' itself is often a shell script. At some sites you use
'xinit' instead of 'startx' <TT>---</TT> and others there are different ways
to launch the X server and completely different ways to start the various
clients that run under it and control it.
</BLOCKQUOTE>
<BLOCKQUOTE>
You mentioned fvwm95. This is one of several variants of the fvwm
window manager. That's a traditional window manager. It just gives
you a set of menus (click on the "root window" which other windowing
systems call a "wallpaper" with each of your mouse buttons to see those),
and a set of window decorations (resizing bars, corners, and title bars
and buttons).
</BLOCKQUOTE>
<BLOCKQUOTE>
In recent years the open source community has created somewhat more
elaborate and "modern" graphical user environments like: <A HREF="http://www.kde.org/">KDE</A>, <A HREF="http://www.gnome.org/">GNOME</A>,
and GNUStep. These are whole suites of programs which can be combined
to provide the sort of look, feel and facilities that people have
come to expect from MacOS, MSWindows, etc.
</BLOCKQUOTE>
<BLOCKQUOTE>
If you really want something "Like the StartMenu" in Win'9x
then you may want to look at KDE or GNOME. These have "panels" which
provide a much closer analogue to the environment that you are
used to.
</BLOCKQUOTE>
<BLOCKQUOTE>
(Note: It is also possible to make either of these environments
look completely different than MS Windows. They both support
"themes" which are collections of settings, graphics, textures,
icons, even sounds, that customize the appearance and operation of
a Linux GUI. For more information and some nice screen shots of
the possibilities, take a look at <A HREF="http://www.themes.org"
>http://www.themes.org</A>).
</BLOCKQUOTE>
<blockquote><pre>&gt; (2) I recently upgraded my kernel and filesystem binaries from a 2.034 kernel
&gt; to a 2.2.13 kernel. I have XFree86 3.3.5 installed. I also upgraded
&gt; my motherboard from an Intel P75 to an AMD K6-450. I kept the 32 Megs
&gt; of RAM the same (a SIMM). However, now I notice that Netscape (and
&gt; others?) grind my hard drive more when I attempt to open new
&gt; browsers. I'm pretty sure I'm low on memory, but since I'm low in
&gt; cash, I'd rather not invest in a DIMM. I didn't have any swap space
&gt; set up, and don't now. I actually upgraded from netscape 4.1 to 4.6.
&gt; Could this be the problem?
</pre></blockquote>
<BLOCKQUOTE>
Hmmm. Certainly it is likely that Netscape 4.6 is taking up more
memory than 4.1. However I note an inconsistency here. You say you
didn't have any swap space. If that was true then your shortage of
memory should have caused failures when trying to launch programs
<TT>---</TT> rather than the increased disk thrashing. I think it's likely
that you actually do have some swap space. You can use the following
command to find out what swap partitions and files are active on your
system:
</BLOCKQUOTE>
<blockquote><pre> cat /proc/swaps
</pre></blockquote>
<BLOCKQUOTE>
... which should provide a list of any swap space that is in use.
Of course the 'free' command will also summarize the available and
used swap space. However, the <TT>/proc/swaps</TT> "psuedo-file" (node) will
actually tell you "where" the swap is located.
</BLOCKQUOTE>
<BLOCKQUOTE>
Get the extra memory. It's not that expensive and it is the
best performance upgrade that you can make for your system.
</BLOCKQUOTE>
<blockquote><pre>&gt; (3) I was running GNOME/enlightenment, but the
&gt; GNOME panel would never come up automatically. How can I get the
&gt; GNOME panel to initialize, along with the GNOME file manager, (so
&gt; I can have the cool desktop icons)?
</pre></blockquote>
<BLOCKQUOTE>
Hmmm. I'm not much of a GNOME or KDE person. Do you have the rest
of GNOME installed? enlightenment is a window manager. It was the
default window manager for GNOME <TT>---</TT> but they are separate projects.
So, do you have GNOME installed? Are you starting 'gnome-session'
(running it from your .Xclients/.Xsession script as described above)?
</BLOCKQUOTE>
<BLOCKQUOTE>
Try that. I think there are now a couple of window managers that
implement the GNOME hints and APIs <TT>---</TT> so you don't have to use
enlightenment.
</BLOCKQUOTE>
<blockquote><pre>&gt; (4) Lastly, I wanted to trim my syslog and wtmp files. Is there any
&gt; way I can do this? Can I just tail -30 the last 30 lines into a
&gt; new file? I think the wtmp is binary, so any ideas?
</pre></blockquote>
<BLOCKQUOTE>
You are correct. the wtmp and utmp files are binary. They cannot be
trimmed with simple shell scripts and text utilities. The utmp file
shouldn't grow (by much), however the wtmp will grow without bound.
However, the usual way of dealing with wmtp is to simply rename the
current one, 'touch' a new one and forget about it.
</BLOCKQUOTE>
<BLOCKQUOTE>
That's fine for wtmp.
</BLOCKQUOTE>
<BLOCKQUOTE>
However, DON'T try that with the <TT>/var/log/messages</TT> or other
syslog files. Those are held up. If you rename them or
delete them, they continue to grow.
</BLOCKQUOTE>
<BLOCKQUOTE>
Yes! You read that correctly, if you remove a file while some
process has it open, then you haven't freed up any disk space!
That's because the 'rm' command just does an <TT>'unlink()</TT>' system call.
When the last link to a file is removed, AND THE FILE IS NOT OPEN,
then the filesystem drivers perform some housekeeping to mark the
associated inode(s) as available, and to add all the associated data
blocks to the filesystem's "free list." If the file is still open
then that housekeeping is deferred until it is closed.
</BLOCKQUOTE>
<BLOCKQUOTE>
So the usual way to trim syslog files (since syslog stays
running all the time, and keeps it's files open under normal
circumstances) is to to 'cp <TT>/dev/null</TT>' or 'echo "" &gt; ' to
truncate them. Another common practice is to remove the
files and use the 'kill <TT>-HUP</TT> $(cat <TT>/var/run/syslog.pid</TT>)' command
to force the syslogd to re-read its configuration file,
close all its files, and re-open them.
</BLOCKQUOTE>
<BLOCKQUOTE>
However, none of that should be necessary. Every other
general purpose distribution has some sort of log rotation
scripts that are run out of 'cron.' I'm pretty sure that
Patrick (Volkerding, principle architect of Slackware) didn't
neglect that.
</BLOCKQUOTE>
<BLOCKQUOTE>
(I should point out that I haven't used Slackware in several
years. Nothing against it. I just have too few machines and
too little time).
</BLOCKQUOTE>
<P><STRONG><IMG SRC="../gx/dennis/qbub.gif" ALT="(?)"
HEIGHT="28" WIDTH="50" BORDER="0"
>
Thanks for any help you can provide!
Vikas Gupta
</STRONG></P>
<BLOCKQUOTE><IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
>
Well, I think this should nudge you in the right directions.
</BLOCKQUOTE>
<!-- sig -->
<!-- end 16 -->
<!-- .~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~. -->
<A NAME="tag/17"><HR WIDTH="75%" ALIGN="center"></A>
<!-- begin 17 -->
<H3 align="left"><img src="../gx/dennis/qbubble.gif"
height="50" width="60" alt="(?) " border="0"
>G-Kermit: The GPL Kermit Transfer Package</H3>
<p><strong>From Deepu Chandy Thomas on Tue, 18 Apr 2000
</strong></p>
<!-- ::
G-Kermit: The GPL Kermit Transfer Package
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
:: -->
<P><STRONG>
Sir,
</STRONG></P>
<P><STRONG>
I wanted to use the kermit protocol with minicom. I use rz sz for
zmodem. Where do I get the files for kermit?
</STRONG></P>
<P><STRONG>
Regards,
Deepu
</STRONG></P>
<BLOCKQUOTE><IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
>
Look at <A HREF="http://www.columbia.edu/kermit"
>http://www.columbia.edu/kermit</A> for canonical information
about all the official Kermit packages, and at:
<A HREF="http://www.columbia.edu/kermit/gkermit.html"
>http://www.columbia.edu/kermit/gkermit.html</A> for information
specifically about the GPL kermit package (which implements
the file transfer protocol without the scripting, dialing and
other features of C-Kermit).
</BLOCKQUOTE>
<BLOCKQUOTE>
(Note: C-Kermit can also be used as a 'telnet' or 'rsh' client
with a scripting language, and many other useful features. It
is a full featured communications package. Recent versions have
even added Kerberos support!)
</BLOCKQUOTE>
<!-- sig -->
<!-- end 17 -->
<!-- .~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~. -->
<A NAME="tag/18"><HR WIDTH="75%" ALIGN="center"></A>
<!-- begin 18 -->
<H3 align="left"><img src="../gx/dennis/qbubble.gif"
height="50" width="60" alt="(?) " border="0"
><TT>./script:</TT> No such file or directory</H3>
<p><strong>From Alex Brak on Fri, 14 Apr 2000
</strong></p>
<!-- ::
<TT>./script:</TT> No such file or directory
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
:: -->
<P><STRONG>
I'm having a problem with my linux box, and can't for the life of me
figure out what's wrong. Here are the symptoms:
</STRONG></P>
<pre><strong>&gt; server:~/scripts$ whoami
&gt; alex
&gt; server:~/scripts$ ls -al ./script
&gt; - -rwxr----- 1 alex home 43747 Apr 10 22:31 ./script*
&gt; server:~/scripts$ ./script
&gt; bash: ./script: No such file or directory
</strong></pre>
<P><STRONG>
(note: the '*' at the tail end of the file listing is merely a symbol
specifying that its an executable file. this is not part of the
filename)
</STRONG></P>
<BLOCKQUOTE><IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
>
Technically that "file type marker" is the result of using the
<TT>-F</TT> option to 'ls'
</BLOCKQUOTE>
<BLOCKQUOTE>
The most likely cause of this problem is the #! (shebang) line
that should be at the beginning of your script. If that is
incorrect then it is common to get this error, your shell is
telling you that it can't find the script's interpreter.
</BLOCKQUOTE>
<BLOCKQUOTE>
If '<TT>./script</TT>' was a binary executable thenI'd also suggest looking
for missing shared libraries. In fact, it's possible that your
shebang line is pointing to some interpreter (<TT>/usr/local/ksh</TT> or
something) which is present, and executable, but is missing some
shared library. It is even possible that a shared library depends
on another, and that this is what is missing.
</BLOCKQUOTE>
<P><STRONG><IMG SRC="../gx/dennis/qbub.gif" ALT="(?)"
HEIGHT="28" WIDTH="50" BORDER="0"
>
As you can see from the above, I'm the owner of the file in question,
and have execute permission on it. The file exists. Yet bash claims
the file is not there. I've tried with shells other than bash (every
other shell available on my system, including csh, tcsh, ash, and
zsh). I've even tried executing the command
as root, to no avail.
</STRONG></P>
<P><STRONG>
This exact same problem has arisen before with another script I
wrote. I couldn't fix it then, either.
</STRONG></P>
<BLOCKQUOTE><BLOCKQUOTE><CODE>
Check your shebang line. It should read something like:
</CODE></BLOCKQUOTE></BLOCKQUOTE>
<blockquote><pre>#!/bin/sh
</pre></blockquote>
<BLOCKQUOTE>
Note: there are NO SPACES in this line. Do NOT put a space
between the #! and the interpreter's name.
</BLOCKQUOTE>
<P><STRONG><IMG SRC="../gx/dennis/qbub.gif" ALT="(?)"
HEIGHT="28" WIDTH="50" BORDER="0"
>
I'd like to also note that this problem arises intermittently: just
after finishing ~/scripts/script I created another script named
"test", did chmod u+x on it and it executed just fine.
~scripts/script still refuses to execute, though :( Please note that I've
tried renaming the file. I've also tried moving it to another location on
the directory tree. None of these have helped.
</STRONG></P>
<BLOCKQUOTE><IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
>
A text file without any shebang line, which is marked as executable
will be executed through some magic that is dependent on the shell
wfrom which it is being invoked.
</BLOCKQUOTE>
<BLOCKQUOTE>
I'll probaby get this wrong in the details but the process works
something like this:
</BLOCKQUOTE>
<BLOCKQUOTE><BLOCKQuote>
You issue a command. The shell tries to simply<TT> exec()</TT> it (after
performing the command line parsing necessary to expand any file
"globs" and replace any shell variables, command substitution
operators, parameter expansion, etc). If that execution fails the
shell may attempt to call it with $SHELL <TT>-c</TT> (or it might do something
a bit different: that seems to be shell dependent).
</BLOCKQuote></BLOCKQUOTE>
<BLOCKQUOTE>
Notice that the behaviour in the first case is well-defined. Linux
has a binfmt_script module (usually compiled/linked statically into
your kernel) which handles a properly formatted shebang line.
</BLOCKQUOTE>
<P><STRONG><IMG SRC="../gx/dennis/qbub.gif" ALT="(?)"
HEIGHT="28" WIDTH="50" BORDER="0"
>
I have not experienced any other problems with my system that I'm
aware of. Does anyone know what could be causing this, or how to fix
the problem?
</STRONG></P>
<P><STRONG>
I'm running linux 2.2.14 on my Pentium 120, with a <A HREF="http://www.slackware.org/">Slackware</A>
distribution. The file in question exists on the root partition, in
an ext2 file system, which the kernel supports. If there's any other
relevant information I have provided, please don't hesitate to ask.
</STRONG></P>
<BLOCKQUOTE><IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
>
If you were getting "operation not permitted" I'd suggest checking your
mount options to see if the filesystem was mounted 'noexec' (which
would be a very badd idea for your root fs). If you were getting
a message like "cannot execute binary" then I'd think that maybe
you had an old a.out binary and a kernel without the a.out binfmt
support.
</BLOCKQUOTE>
<BLOCKQUOTE>
But I'm pretty sure that you're having a problem with your shebang
line.
</BLOCKQUOTE>
<P><STRONG><IMG SRC="../gx/dennis/qbub.gif" ALT="(?)"
HEIGHT="28" WIDTH="50" BORDER="0"
>
Thanks,
Alex
</STRONG></P>
<!-- sig -->
<!-- end 18 -->
<!-- . . . . . . . . . . . . . . . . . . . -->
<HR WIDTH="40%" ALIGN="center">
<!-- begin 18 -->
<H3 align="left"><img src="../gx/dennis/qbubble.gif"
height="50" width="60" alt="(?) " border="0"
><TT>./script:</TT> No such file or directory</H3>
<p><strong>From Alex Brak on Sun, 16 Apr 2000
</strong></p>
<BLOCKQUOTE>
Sport on. Many thanks.
</BLOCKQUOTE>
<BLOCKQUOTE>
Alex
</BLOCKQUOTE>
<BLOCKQUOTE>
<TT>-----Original</TT> Message-----
From: Jim Dennis [mailto:<A HREF="mailto:jimd@starshine.org"
>jimd@starshine.org</A>]
Sent: Saturday, 15 April 2000 9:07 AM
To: Alex Brak
Cc: <A HREF="mailto:star@starshine.org"
>star@starshine.org</A>; <A HREF="mailto:jdennis@<A HREF="http://www.linuxcare.com/">Linuxcare</A>.com"
>jdennis@<A HREF="http://www.linuxcare.com/">Linuxcare</A>.com</A>; <A HREF="mailto:tdavey@<A HREF="http://www.linuxcare.com/">Linuxcare</A>.com"
>tdavey@<A HREF="http://www.linuxcare.com/">Linuxcare</A>.com</A>;
<A HREF="mailto:bneely@linuxcare.com"
>bneely@linuxcare.com</A>; <A HREF="mailto:sg@linuxcare.com"
>sg@linuxcare.com</A>
Subject: Re: shell cannot see an existing file
</BLOCKQUOTE>
<!-- ::
<TT>./script:</TT> No such file or directory
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
:: -->
<P><STRONG>
I'm having a problem with my linux box, and can't for the life of me
figure out what's wrong. Here are the symptoms:
</STRONG></P>
<pre><strong>&gt; server:~/scripts$ whoami
&gt; alex
&gt; server:~/scripts$ ls -al ./script
&gt; - -rwxr----- 1 alex home 43747 Apr 10 22:31 ./script*
&gt; server:~/scripts$ ./script
&gt; bash: ./script: No such file or directory
</strong></pre>
<P><STRONG>
(note: the '*' at the tail end of the file listing is merely a symbol
specifying that its an executable file. this is not part of the
filename)
</STRONG></P>
<BLOCKQUOTE><IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
>
Technically that "file type marker" is the result of using the
<TT>-F</TT> option to 'ls'
</BLOCKQUOTE>
<BLOCKQUOTE>
The most likely cause of this problem is the #! (shebang) line
that should be at the beginning of your script. If that is
incorrect then it is common to get this error, your shell is
telling you that it can't find the script's interpreter.
</BLOCKQUOTE>
<BLOCKQUOTE>
If '<TT>./script</TT>' was a binary executable thenI'd also suggest looking
for missing shared libraries. In fact, it's possible that your
shebang line is pointing to some interpreter (<TT>/usr/local/ksh</TT> or
something) which is present, and executable, but is missing some
shared library. It is even possible that a shared library depends
on another, and that this is what is missing.
</BLOCKQUOTE>
<P><STRONG><IMG SRC="../gx/dennis/qbub.gif" ALT="(?)"
HEIGHT="28" WIDTH="50" BORDER="0"
>
As you can see from the above, I'm the owner of the file in question,
and have execute permission on it. The file exists. Yet bash claims
the file is not there. I've tried with shells other than bash (every
other shell available on my system, including csh, tcsh, ash, and
zsh). I've even tried executing the command
as root, to no avail.
</STRONG></P>
<P><STRONG>
This exact same problem has arisen before with another script I
wrote. I couldn't fix it then, either.
</STRONG></P>
<BLOCKQUOTE><BLOCKQUOTE><CODE>
Check your shebang line. It should read something like:
</CODE></BLOCKQUOTE></BLOCKQUOTE>
<blockquote><pre>#!/bin/sh
</pre></blockquote>
<BLOCKQUOTE>
Note: there are NO SPACES in this line. Do NOT put a space
between the #! and the interpreter's name.
</BLOCKQUOTE>
<P><STRONG><IMG SRC="../gx/dennis/qbub.gif" ALT="(?)"
HEIGHT="28" WIDTH="50" BORDER="0"
>
I'd like to also note that this problem arises intermittently: just
after finishing ~/scripts/script I created another script named
"test", did chmod u+x on it and it executed just fine.
~scripts/script still refuses to execute, though :( Please note that I've
tried renaming the file. I've also tried moving it to another location on
the directory tree. None of these have helped.
</STRONG></P>
<BLOCKQUOTE><IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
>
A text file without any shebang line, which is marked as executable
will be executed through some magic that is dependent on the shell
wfrom which it is being invoked.
</BLOCKQUOTE>
<BLOCKQUOTE>
I'll probaby get this wrong in the details but the process works
something like this:
</BLOCKQUOTE>
<BLOCKQUOTE><BLOCKQuote>
You issue a command. The shell tries to simply<TT> exec()</TT> it (after
performing the command line parsing necessary to expand any file
"globs" and replace any shell variables, command substitution
operators, parameter expansion, etc). If that execution fails the
shell may attempt to call it with $SHELL <TT>-c</TT> (or it might do something
a bit different: that seems to be shell dependent).
</BLOCKQuote></BLOCKQUOTE>
<BLOCKQUOTE>
Notice that the behaviour in the first case is well-defined. Linux
has a binfmt_script module (usually compiled/linked statically into
your kernel) which handles a properly formatted shebang line.
</BLOCKQUOTE>
<P><STRONG><IMG SRC="../gx/dennis/qbub.gif" ALT="(?)"
HEIGHT="28" WIDTH="50" BORDER="0"
>
I have not experienced any other problems with my system that I'm
aware of. Does anyone know what could be causing this, or how to fix
the problem?
</STRONG></P>
<P><STRONG>
I'm running linux 2.2.14 on my Pentium 120, with a <A HREF="http://www.slackware.org/">Slackware</A>
distribution. The file in question exists on the root partition, in
an ext2 file system, which the kernel supports. If there's any other
relevant information I have provided, please don't hesitate to ask.
</STRONG></P>
<BLOCKQUOTE><IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
>
If you were getting "operation not permitted" I'd suggest checking your
mount options to see if the filesystem was mounted 'noexec' (which
would be a very badd idea for your root fs). If you were getting
a message like "cannot execute binary" then I'd think that maybe
you had an old a.out binary and a kernel without the a.out binfmt
support.
</BLOCKQUOTE>
<BLOCKQUOTE>
But I'm pretty sure that you're having a problem with your shebang
line.
</BLOCKQUOTE>
<P><STRONG><IMG SRC="../gx/dennis/qbub.gif" ALT="(?)"
HEIGHT="28" WIDTH="50" BORDER="0"
>
Thanks,
Alex
</STRONG></P>
<!-- sig -->
<!-- end 18 -->
<!-- .~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~. -->
<A NAME="tag/19"><HR WIDTH="75%" ALIGN="center"></A>
<!-- begin 19 -->
<H3 align="left"><img src="../gx/dennis/qbubble.gif"
height="50" width="60" alt="(?) " border="0"
>hello</H3>
<p><strong>From Credit Future Commercial MACAU Company on Wed, 5 Apr 2000
</strong></p>
<BLOCKQUOTE>
Hello sir
</BLOCKQUOTE>
<BLOCKQUOTE>
I installed red hat 6.1 on my system but it does not display more =
</BLOCKQUOTE>
<BLOCKQUOTE>
then 256 colours although my vga card is a 16 MB vodoo why is that can =
you help me out here ???I have tried startx <TT>-bpp16</TT> but still my pics =
"jpegs , bmp " qualities isnt fine !!! &amp; are displayed in dots same pic =
in windows look good .
</BLOCKQUOTE>
<BLOCKQUOTE>
thanksfaisal
</BLOCKQUOTE>
<!-- end 19 -->
<!-- . . . . . . . . . . . . . . . . . . . -->
<HR WIDTH="40%" ALIGN="center">
<!-- begin 19 -->
<H3 align="left"><img src="../gx/dennis/qbubble.gif"
height="50" width="60" alt="(?) " border="0"
>hello</H3>
<p><strong>From Heather on Wed, 5 Apr 2000
</strong></p>
<P><STRONG>
Hello sir
</STRONG></P>
<BLOCKQUOTE><IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
>
Heather isn't a masculine name in the U.S. I'll assume this is intended
for the Answer Guy column, and give a first shot at answering it.
</BLOCKQUOTE>
<P><STRONG><IMG SRC="../gx/dennis/qbub.gif" ALT="(?)"
HEIGHT="28" WIDTH="50" BORDER="0"
>
I installed red hat 6.1 on my system but it does not display more then
</STRONG></P>
<P><STRONG>
256 colours although my vga card is a 16 MB vodoo why is that can you help
me out here ???I have tried startx <TT>-bpp16</TT> but still my pics "jpegs , bmp "
qualities isnt fine !!! &amp; are displayed in dots same pic in windows look
good .
thanksfaisal
</STRONG></P>
<BLOCKQUOTE><IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
>
You have not specified what resolution under MSwin had the qualities you seek.
Under X, you must run the correct video server to match your card if you want
best performance, but you can nearly always get the screen <EM>working</EM> with a
lesser server.
</BLOCKQUOTE>
<BLOCKQUOTE>
The VGA16 server only provides 256 color service. If this is what you are
stuck at, you might be using this. Or, your <TT>/etc/X11/XF86Config</TT> file may
be telling it to default to this level <TT>-</TT> the command to change the default
is
startx <TT>--</TT> <TT>-bpp</TT> 16
</BLOCKQUOTE>
<BLOCKQUOTE>
with the space. Also, startx is a shell script, and launches a particular
server... usually <TT>/usr/X11R6/bin/X</TT> which itself is a link to the real one...
and so, you may be running a server you didn't intend.
</BLOCKQUOTE>
<BLOCKQUOTE>
Good luck with your JPEGs.
</BLOCKQUOTE>
<!-- end 19 -->
<!-- . . . . . . . . . . . . . . . . . . . -->
<HR WIDTH="40%" ALIGN="center">
<!-- begin 19 -->
<H3 align="left"><img src="../gx/dennis/bbubble.gif"
height="50" width="60" alt="(!) " border="0"
>hello again</H3>
<p><strong>From fai, Answered By Heather Stern on Fri, 7 Apr 2000
</strong></p>
<P><STRONG>
Thanks for the help it worked Finally !!!!
</STRONG></P>
<BLOCKQUOTE><IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
>
Glad to hear it worked for you. Sorry I wasn't able to reply in
email in a timely fashion <TT>-</TT> publishing deadlines, you know.
</BLOCKQUOTE>
<P><STRONG><IMG SRC="../gx/dennis/qbub.gif" ALT="(?)"
HEIGHT="28" WIDTH="50" BORDER="0"
>
Can you help me a bit more while telling me that i want to start this
command by default startx <TT>--</TT> <TT>-bpp</TT> 32 how can i do this ????
</STRONG></P>
<P><STRONG>
thanks
Faisal
</STRONG></P>
<BLOCKQUOTE><IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
>
One way would be to creat .xserverrc in your own home directory;
you'd have to specify your X server, but then you could pass it
parameters too:
</BLOCKQUOTE>
<BLOCKQUOTE><BLOCKQuote>
<TT>/usr/X11R6/bin/XF86_SVGA</TT> <TT>-bpp</TT> 32
</BLOCKQuote></BLOCKQUOTE>
<BLOCKQUOTE>
Assuming that's the right server for you, of course. If startx
is just plain "getting it right" except for that itty bitty detail
of colordepth, you could instead create a bash alias or put a one-liner
shell script in your path. I like to keep such personal scripts
in ~/bin (that's bin under my home directory). name it something
much shorter like myX and save some typing too.
</BLOCKQUOTE>
<EM>[ <BLOCKQUOTE>
So where was Jim on this one? Well, he liked my answer, and was
busy with other questions and stuff to do.
</BLOCKQUOTE><P>-- Heather. ]</P></EM>
<!-- end 19 -->
<!-- .~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~. -->
<A NAME="tag/20"><HR WIDTH="75%" ALIGN="center"></A>
<!-- begin 20 -->
<H3 align="left"><img src="../gx/dennis/bbubble.gif"
height="50" width="60" alt="(!) " border="0"
>Shutting Down the Ping Daemon: Revised</H3>
<p><strong>Answered By Nadeem Hasan on Mon, 03 Apr 2000
</strong></p>
<!-- ::
Shutting Down the Ping Daemon: Revised
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
:: -->
<P><STRONG>
Hi,
</STRONG></P>
<P><STRONG>
This is in reference to above question in "The answer Guy"
and its answer. The use of ipchains/ipfwadm is a bit of an
overkill to achieve this. The better way is to simply use
the following as root:
</STRONG></P>
<P><STRONG><CODE>
echo 1 &gt; /proc/sys/net/ipv4/icmp_echo_ignore_all
</CODE></STRONG></P>
<P><STRONG>
This should cause the kernel to ignore all the ping ICMP
requests.
</STRONG></P>
<P><STRONG>
Cheers,
--
Nadeem
</STRONG></P>
<BLOCKQUOTE><IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
>
Just when you think you know everything.
</BLOCKQUOTE>
<!-- end 20 -->
<!-- . . . . . . . . . . . . . . . . . . . -->
<HR WIDTH="40%" ALIGN="center">
<!-- begin 20 -->
<H3 align="left"><img src="../gx/dennis/qbubble.gif"
height="50" width="60" alt="(?) " border="0"
>Revisionist Requests</H3>
<p><strong>From Nadeem Hasan on Tue, 11 Apr 2000
</strong></p>
<!-- ::
Revisionist Requests
~~~~~~~~~~~~~~~~~~~~
:: -->
<P><STRONG>
Hi,
</STRONG></P>
<P><STRONG>
The Gazette still has the old description about disabling
ping echo responses. Does that mean its better than what
I suggested?
</STRONG></P>
<P><STRONG>
Nadeem
<IMG SRC="../gx/dennis/smily.gif" ALT=":)"
height="24" width="20" align="middle">
</STRONG></P>
<BLOCKQUOTE><IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
>
I don't have the power to change what I've published in previous
months. Your (better) suggestion on how to disable the Linux
kernel's ICMP echo responses (to 'ping' requests) should appear in
next month's issue.
</BLOCKQUOTE>
<BLOCKQUOTE>
Now, what was that magic <TT>/proc</TT> node again?
</BLOCKQUOTE>
<BLOCKQUOTE>
Ahh, here it is:
</BLOCKQUOTE>
<blockquote><pre> echo 1 &gt; /proc/sys/net/ipv4/icmp_echo_ignore_all
</pre></blockquote>
<BLOCKQUOTE>
... I'd never remember that, but the node is there and I'd
recognize the meaining from the name. (So it's in my passive
rather than active vocabulary).
</BLOCKQUOTE>
<BLOCKQUOTE>
There are some other interesting nodes there <TT>---</TT> and I think
the one about "icmp_echo_ignore_broadcasts" looks useful.
</BLOCKQUOTE>
<BLOCKQUOTE>
It would be neat if someone wanted to write up a HOWTO on
"Useful <TT>/proc</TT> Tips and Tricks" (hint, hint). I've done some
performance tuning by tweaking and playing with some of the
entries under <TT>/proc/sys/vm</TT> (the virtual memory sysctl's), and
I know others have even done better than I could (back at
<A HREF="http://www.linuxcare.com/">Linuxcare</A>, I had to call on our <EM>real</EM> experts to help me out
awhile back for one gig).
</BLOCKQUOTE>
<BLOCKQUOTE>
I guess the tips would fall into two or three general categories:
robustness, security, and performance. For example the
<TT>/proc/sys/kernel/cap-bound</TT> (bounding capabilities set) can be
modified to secure some facilities even from a subverted 'root'
process (like the BSD securelevel features), and I guess that
<TT>/proc/sys/vm/overcommit_memory</TT> might allow one to prevent the
system from overcommit (providing for more robust operation
at the expense of reducing our capacity to run multiple
concurrent "memory hogs" that ask for more core than they actually
need).
</BLOCKQUOTE>
<BLOCKQUOTE>
A good HOWTO would be organized by objective/situation
(Increasing File Server Performance, Limiting Damage by
Subverted and Rogue Processes (Crackers), etc) and would include
notes on the tradeoffs that each setting entails. For example
one might disable ICMP response (for security?) but one should
be aware that anyone who has a legimate reason to access ANY
other service on your system might want to 'ping' it first to
ensure that it is reachable before they (or their programs) will
attempt to access any other service on it. (In other words it
makes no sense to disable ICMP responses on a web, mail, DNS,
FTP or other public server).
</BLOCKQUOTE>
<BLOCKQUOTE>
Unfortunately I don't have the time, nor nearly enough expertise
to write this. There are already some notes in the Linux kernel
source trees under <TT>/usr/src/linux/Documentation/sysctl/</TT> and I
remember that someone is working on a tool to automate some of
this PowerTweak/Linux (<A HREF="http://linux.powertweak.com/news.html"
>http://linux.powertweak.com/news.html</A>)
comes to mind.
</BLOCKQUOTE>
<BLOCKQUOTE>
Anyway, enough on that.
</BLOCKQUOTE>
<!-- end 20 -->
<!-- .~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~. -->
<A NAME="tag/21"><HR WIDTH="75%" ALIGN="center"></A>
<!-- begin 21 -->
<H3 align="left"><img src="../gx/dennis/qbubble.gif"
height="50" width="60" alt="(?) " border="0"
>Remotely Executing Graphic Apps</H3>
<p><strong>From Apichai T. on Mon, 03 Apr 2000
</strong></p>
<!-- ::
Remotely Executing Graphic Apps
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
:: -->
<P><STRONG>
Dear sir,
</STRONG></P>
<P><STRONG>
May I ask for your advice , the steps to set up linux box to be
possible to remotely execute graphical applications.
</STRONG></P>
<P><STRONG>
Thanks and Best regards,
Jing
</STRONG></P>
<BLOCKQUOTE><IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
>
Here's a couple of HOWTO and mini-HOWTO links:
</BLOCKQUOTE>
<BLOCKQUOTE><DL><DT>
Remote X Apps mini-HOWTO
<DD><A HREF="http://www.linuxdoc.org/HOWTO/mini/Remote-X-Apps.html"
>http://www.linuxdoc.org/HOWTO/mini/Remote-X-Apps.html</A>
</DL></BLOCKQUOTE>
<BLOCKQUOTE>
(I've copied it's author, Vincent Zweije, on this reply).
</BLOCKQUOTE>
<BLOCKQUOTE>
I don't recommend using his example shell script from section 6.2:
</BLOCKQUOTE>
<blockquote><pre>!/bin/sh
cookie=`mcookie`
xauth add :0 . $cookie
xauth add "$HOST:0" . $cookie
exec /usr/X11R6/bin/X "$@" -auth "$HOME/.Xauthority"
</pre></blockquote>
<BLOCKQUOTE>
The problem here is that the cookie variable is exposed on these
command lines (which is world readable via <TT>/proc</TT> and the 'ps'
command). It may also be exposed if it is exported to the
environment. Safe handling must be done through pipes or files
(or file descriptors). Note that the window of exposure is small
<TT>---</TT> but unnecessary. Read the 'xauth' man page for more details.
</BLOCKQUOTE>
<BLOCKQUOTE>
Better yet: Use ssh! (Read Vincent's HOWTO for more on that).
</BLOCKQUOTE>
<BLOCKQUOTE>
I also notice that Vincent doesn't distinguish between the session
manager and the window manager. In practice they are almost
always the same program. However here's the difference:
</BLOCKQUOTE>
<BLOCKQUOTE><BLOCKQuote>
The session manager is the one program that is started in the
foreground during the startx or xinit process. The X server
tracks this one process ID. When it dies, the X server takes
that as a signal to shutdown. Any program (an 'xterm', a copy
of 'xclock' or whatever) can be the session manager.
</BLOCKQuote></BLOCKQUOTE>
<BLOCKQUOTE>
The window manager is the program that receives events for the
"root window" (the X Windows System term for what other
windowing systems call the "wall paper" or "desktop" or
"backdrop"). There's also quite a bit more to what the window
manager does. You can only run one window manager on any X
server at any time. Window managers (can?) implement a number
of APIs that are unique to them <TT>---</TT> so you can just use "any"
X program as your window manager.
</BLOCKQUOTE>
<BLOCKQUOTE>
It's a subtle distinction since almost everybody uses their window
manager as their session manager.
</BLOCKQUOTE>
<BLOCKQUOTE>
Note: If you're troubleshooting X connections keep in mind that
the client must be able to connect to the server via the
appropriate socket. For example, to connect to the server on :0
(localhost/unix:0) the program must be able to access the UNIX
domain socket (usually in sockets that are located in <TT>/tmp/.X11-unix/</TT>)
Obviously<TT> chroot()</TT> jails could interfere with that (though
localhost:0, which is the same as localhost/tcp:0 should still
work).
</BLOCKQUOTE>
<BLOCKQUOTE>
A subtle and rare problem might be if someone were to try running
X after building a kernel without support for UNIX domain sockets.
It's possible to build a Linux kernel with full support for TCP/IP
and yet leave out the support for UNIX domain sockets.
</BLOCKQUOTE>
<BLOCKQUOTE>
Obviously when looking at Internet domain sockets (TCP/IP) any of
the usual routing, addressing, and packet filtering issues can
interfere with your clients attempts to connect to port 6000
(or 6001, 6002, etc) on the X server host.
</BLOCKQUOTE>
<BLOCKQUOTE>
For a little more on remote access to X server look at VNC
(Virtual Network Computing from AT&amp;T Laboratories Cambridge:
<A HREF="http://www.uk.research.att.com/vnc"
>http://www.uk.research.att.com/vnc</A>) (VNC was originally
developed at the Olivetti Research Laboratory, which was later
acquired by AT&amp;T).
</BLOCKQUOTE>
<BLOCKQUOTE>
You don't need this to just run X clients on your X server.
However, it's useful to learn about VNC in case you need some of
the special features that it provides.
</BLOCKQUOTE>
<BLOCKQUOTE>
Another good site for finding links to lots of information about
X is at Kenton Lee's "X Sites" (<A HREF="http://www.rahul.net/kenton/xsites.html"
>http://www.rahul.net/kenton/xsites.html</A>)
There are about 700 links located there!
</BLOCKQUOTE>
<BLOCKQUOTE>
Note that while X is currently the dominant windowing system for
Linux there are other efforts out there including "Berlin"
(<A HREF="http://www.berlin-consortium.org"
>http://www.berlin-consortium.org</A>) and the "Y Window System"
(<A HREF="http://www.hungry.com/products/Ywindows"
>http://www.hungry.com/products/Ywindows</A>). I don't know how
these projects are going. I see that the Berlin home pages have
been updated recently while the Y Window System pages seem to
have been stale since March of 1998.
</BLOCKQUOTE>
<BLOCKQUOTE>
Anyway, good luck.
</BLOCKQUOTE>
<!-- sig -->
<!-- end 21 -->
<H4>"Linux Gazette...<I>making Linux just a little more fun!</I>"
</H4>
<P> <hr> <P>
<!-- QUICK TIPS SECTION ================================================== -->
<center>
<H1><A NAME="tips"><IMG ALIGN=MIDDLE ALT="" SRC="../gx/twocent.gif">
More 2&#162; Tips!</A></H1> <BR>
Send Linux Tips and Tricks to <A HREF="mailto:gazette@ssc.com">
gazette@ssc.com
</A></center>
<!-- BEGIN tips -->
<P> <hr> <P>
<!--================================================================-->
<a name="wheel"></a>
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/lil2cent.gif">
<FONT COLOR="navy">mouse wheel and netscape
</FONT> </H3>
Mon, 03 Apr 2000 14:03:18 -0500
<BR>From: Greg Walker &lt;<A HREF="mailto:greg.walker@vanderbilt.edu">greg.walker@vanderbilt.edu</A>&gt;
<P> This configuration may not be immediately obvious to the unseasoned
Linux user, therefore, I thought it would make a good two cent tip.
Furthermore, the information does not seem readily available (at
least I had trouble finding it).
<P> To enable the mouse wheel, place the following line in XF86Config
under the pointer section
<PRE>
ZAxisMapping 4 5
</PRE>
<P> This will allow emacs, xterm, ... to receive mouse wheel events. For
netscape, also add the following lines to .Xdefaults (be sure there
is only a newline after the "\" that ends a line.
<PRE>
Netscape*globalTranslations: #override \
&lt;Btn5Up&gt;: LineDown() \n\
&lt;Btn4Up&gt;: LineUp() \n
</PRE>
<P> <hr> <P>
<!--================================================================-->
<a name="allfilesys"></a>
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/lil2cent.gif">
<FONT COLOR="navy">2cent tip
</FONT> </H3>
Thu, 13 Apr 2000 01:17:07 +0200
<BR>From: David Pravec &lt;<A HREF="mailto:dave@anapol.cz">dave@anapol.cz</A>&gt;
<P> Hello,
For those who are changing HDDs very often, here is small ugly
but working utility which I wrote.
It detects filesystem types of all accessible partitions and
checks/mounts them in folders named after device (hda7,hdb1,hdb3,sd1,...).
<P> So you will never have to write sequences of fdisk,fsck,mount,df...
<P> <A HREF="misc/tips/allfilesys.sh.txt">allfilesys</A>
<P> <hr> <P>
<!--================================================================-->
<a name="traceroute"></a>
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/lil2cent.gif">
<FONT COLOR="navy">Traceroute Resources
</FONT> </H3>
Thu, 20 Apr 2000 22:00:27 +0300
<BR>From: Rafael Stekolshchik &lt;<A HREF="mailto:klivlend@internet-zahav.net">klivlend@internet-zahav.net</A>&gt;
<P> Hello,
<P> You maybe interested in checking the site
"Tracerote Lists by States. Backbone Maps List"
<A HREF="http://cities.lk.net/trlist.html">http://cities.lk.net/trlist.html</A>
<P> You can find there many links to the traceroute resources
sorted by the next items:
<UL>
<LI> Traceroute List by States
<LI> Traceroute against Spam
<LI> Other Traceroute Lists
<LI> Traceroute and other tools
<LI> Traceroute Analysis
</UL>
<P> Other thing is the List of Backbone Maps, sorted by Geographical
Location, also some other info about backbones.
<!-- END tips -->
<P> <hr> <P>
<!--================================================================-->
<H4><font color="maroon">
Tips in the following section are answers to questions printed in the Mail
Bag column of previous issues.
</font></H4>
<!-- BEGIN tips.answers -->
<P> <hr> <P>
<!--================================================================-->
<a name="linux_from_nt"></a>
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/lil2cent.gif">
ANSWER: <FONT COLOR="navy">About Linux
</FONT> </H3>
Tue, 4 Apr 2000 10:42:08 +0300 (EET DST)
<BR>From: Marius ANDREIANA &lt;<A HREF="mailto:rocky@ss.pub.ro">rocky@ss.pub.ro</A>&gt;
<P> Hi
<BLOCKQUOTE>
<P> I would really like to see case studies on switching to Linux form other platforms.
</BLOCKQUOTE>
Recently there was an article in LG, about a big polish hotel which
did that and pretty happy about it. Check it out.
<BLOCKQUOTE>
<P> We currently use Windows NT Terminal Server Edition. How hard would it be to go to Linux?
</BLOCKQUOTE>
You'll have to learn a little. On NT you click several times, use some
wizards, reboot from time to time and everyhitng it's fine. If
it isn't, reinstall and it will be.
Using Linux means you also know what you are doing. You'll click
more times, even use the keyboard :), ask on irc/mail list/news about
something which you can't figure out etc. But you'll have a
strong, performant, secure platform.
<BLOCKQUOTE>
<P> - We have two TSE servers with approximately 30 users each logged in on average. In total, we have about 130 users but
it is a manufacturing plant and many people share terminals.
</BLOCKQUOTE>
sounds to me like a perfect case for Linux :)
<BLOCKQUOTE>
<P> - We use Citrix Metaframe, for Load Balancing and failover. Is there a product for Linux that offers this option?
</BLOCKQUOTE>
Ah ! The Windows world, with lots of _great_ products, which improve
performance of your system, maintain it etc etc.
<P> You don't need these on Linux, because it does it by itself.
With under 200 users, I don't think you'll need more than one server.
Sure, that server won't be a Pentium PC. I'm not into hardware,
can't say too much here, but there are many options.
<BLOCKQUOTE>
<P> - Dependability. I have to reboot my TSE servers once a week. Last week a new HP printer driver caused about 40 blue
screens of death before we figured out what was going on.
</BLOCKQUOTE>
I've heard that on Windows 2000 presentation by Bill Gates, he outlined
that there were machines running for even 90 days without a reset.
WOW ! ( not to mention the _new_ micro$oft _invention_, the
symbolic link )
<BLOCKQUOTE>
<P> Will Linux be better?
</BLOCKQUOTE>
You bet. See more articles about introduction to Linux etc.
Once you start using it, you'll love it. Try and see ;)
<P> Recently we installed ( at <A HREF="http://www.lug.ro">www.lug.ro</A> ) php, postgresql, configured
the web server (apache) without rebooting and remotely.
And no wizards, just the shell, from an old university
text terminal. It took about 15 minutes untill I had it running.
I'd say that's cool, isn't it ?
<P> About the uptime, here's the output of the uptime command on a
sever here in ROmania :
<PRE>
avva:~$ uptime
10:22am up 435 days, 17:27, 7 users, load average: 1.16, 1.10, 1.02
avva:~$
</PRE>
<P> That ain't much, check
<A HREF="http://www.uptimes.net">www.uptimes.net</A> for better results
<BLOCKQUOTE>
<P> - Office productivity software. If we are used to MS Office, what will it be like going to something like star-office?
</BLOCKQUOTE>
Better :) I use it from time to time to make some charts, short
paper works etc. If you're really into publishing, LaTeX is the
answer. And don't forget about the free great database engine,
PostgreSQL. (you don't keep data in an Excel sheet, don't you ?)
How about a web/desktop interface for it ? No problem !
<BLOCKQUOTE>
<P> - Anti-virus programs? Is there an antivirus program to scan mail stores (sendmail POP server)?
</BLOCKQUOTE>
If you use Linux and no windows at all, you won't need that.
Besides being harder to infect a Linux system because of file perimisions
and ownership, there's a problem with anti-viruses. The viruses must
appear first, and _later_ the anti-viruses. I can't afford to wait
that delta t, both at home and at work, so I use Tripwire, an 'utility'
which scans your filesystem and based on the rules you define, makes
a database of their CRCs or something like that. If a file get's modified
you are notified acording to the rules. There's a free version of it and
a better commercial one. (see their website for more info). I use it as
an antivirus, but it's for network security.
<BLOCKQUOTE>
<P> -Security. How good is Linux at keeping users honest? With TSE you can delete or overwrite files in the system
directories as a user. Can't delete a system file?
</BLOCKQUOTE>
Linux is Unix-like, which was designed from ground up for network, multi-user,
multitasking etc. So it's extremly good at it. On my PC at home, I made
more accounts for my relatives (they didn't know how to use a computer
initially), and I can happily leave them alone. Besides the graphical
interface being in my native language (and I'm proud I contribute to that)
in the worst case they can delete their personal files. They don't have the
rights for the rest :), not even each other's.
You can also make groups for different departments. Each user will have
his/her own account, which could be part of one/more departments.
<P> As I said, once you get to know Linux better, you'll delete even your
windows backups :)
You can always find help in the Linux community (but make sure you
Read Those Fine Manuals first), or even pay for commercial support.
<P> See ya around !
<P> Marius
<P> --<BR>
Your mouse has moved. In order for the change to take effect, <BR>
Windows must be restarted. Reboot now ? [OK]<BR>
<A HREF="http://www.linuxstart.com/~marius">http://www.linuxstart.com/~marius</A><BR>
<P> <hr> <P>
<!--================================================================-->
<a name="calc_speed"></a>
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/lil2cent.gif">
ANSWER: <FONT COLOR="navy">Re: Pentium-II Xeon and calculation speed
</FONT> </H3>
Sat, 8 Apr 2000 19:00:52 -0600 (MDT)
<BR>From: Gordon Haverland &lt;<A HREF="mailto:ghaverla@freenet.edmonton.ab.ca">ghaverla@freenet.edmonton.ab.ca</A>&gt;
<P> Another place to look for speed improvements is
custom math libraries. A lot of FORTRAN is concerned
with linear algebra, and for speeding up things like
LAPACK the place to start is probably getting some kind
of BLAS. There does exist a couple of had tuned
BLAS for some Intel-386 family processors running
Linux, but what looks like the best place to get
going is something called ATLAS. This is a package
which tries to calculate an optimal BLAS Level 1, 2
and 3 library for your machine. It comes pretty
close to hand tuned BLAS in assembler, and can work
from C or FORTRAN calling.
<P> Gord
<P> <hr> <P>
<!--================================================================-->
<a name="mem"></a>
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/lil2cent.gif">
ANSWER: <FONT COLOR="navy">Memory greater than 64MB
</FONT> </H3>
Mon, 10 Apr 2000 17:43:53 -0500
<BR>From: bjones &lt;<A HREF="mailto:wljones@hex.net">wljones@hex.net</A>&gt;
<P> I used the "free" command on both of my computers, and found that they
were using only 64 MB of memory in Linux. I had to use the "append"
addition in LILO to get Linux to see all of it. It appears to be a bios
problem, and I like this simple solution. As an aside, I never noticed
a shortage of available memory problem before the fix. Linux worked
quite well with 64 MB and a 64 MB swap partition. The swap partition
was never used, to my knowledge, but the manuals threatened death, doom,
and destruction if I omitted it.
<P> A quick note: The memory used by the on-board video with the AMD K6-2
processor cannot be used by Linux. I have 160 MB of memory on that
computer. Attempting to use all of it caused a kernel panic at boot
time. I use 8 MB for graphics. Changing the append statement to use
152 MB worked. I am sure happy about saving that boot floppy.
<H2>Your Editor wrote:</H2>
<P> I used to have to use the 'append "mem=8M"' statement, but now I don't
have to. Which kernel are you using? It may have been something that
changed in the 2.2 kernels.
<H2>William replied:</H2>
<P> Two computers in use:
(1) 300 MHz K6-2, 160MB memory, S.u.S.E. 6.1, upgraded to 6.3 with a
giveaway CD-ROM, 1999 Bios that switches to an Adaptec 1520 Bios during
boot.
(2) 100MHZ Pentium, 96 MB memory, Sam's version of Red Hat 6.0, 1996
Bios that switches to an Adaptec 2940 bios during boot.
<P> I like my computers, and am not concerned about needing an extra tweak
to reach all the memory. Both machines are Lilo dual boot to Linux and
M$. They are (ab)used frequently, inside and out. Additional operating
systems that are now on a bookshelf include OS/2, MS-DOS since 1.0, and
Coherent 2 through 4. I will probably upgrade Someday Soon, and look
forward to having "free" see all of my memory without an "append" line
in Lilo.
<H2>Your patient Editor asked:</H2>
<P> Which kernel is it though? "uname -a" will tell you.
<H2>William responded:</H2>
<P> 1. K62, 2.2.13 #1 kernel ( remember, this updates S.u.S.E. 6.1, with a
lower 2.2 kernel)
<P> 2. 586, 2.2.5-13 kernel
<H2>Rick Smith &lt;<A HREF="mailto:rsmith13@tampabay.rr.com">rsmith13@tampabay.rr.com</A>&gt; confessed:</H2>
<P> Sir,
<P> After chastising Linux Gazette about not needing to put an: append "mem=xxM" statement in lilo.conf, it had to happen! I have been using
socket seven motherboards for several years and all currently have
128meg. They all run various versions of Linux: Redhat 5.2, Mandrake 6.1
and Suse 6.3. I have not had to put an append statement in lilo.conf or
use a mem= at the Lilo prompt to get all 128meg recognized.
<P> That is until now! I just bought a FIC SD-11 motherboard, Athlon 700 and
a new case. I took all the components: memory, drives, nic, video card,
from one of my socket seven systems and installed them in my new Athlon
system. (Please note: same drive with Suse 6.3 already installed.)
Everything seem fine until I ran: free and discovered I only had 64meg
of memory! So now, I had to put an append statement in lilo.conf to get
all 128meg recognized. It's definitely a "bios thing".
<P> BTW: When I upgrade a motherboard, I NEVER need to reinstall Linux but
almost always need to reinstall Win 9x.
<P> <hr> <P>
<!--================================================================-->
<a name="free_isp"></a>
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/lil2cent.gif">
ANSWER: <FONT COLOR="navy">Re: Free ISPs for Linux
</FONT> </H3>
Thu, 13 Apr 2000 11:53:31 -0400
<BR>From: John Ruschmeyer &lt;<A HREF="mailto:jruschmeyer@unixpros.com">jruschmeyer@unixpros.com</A>&gt;
<BLOCKQUOTE>
<P> This isn't exactly a burning question but I'd be interested in
knowing if anyone in the Gazette readership knows of a free ISP
that supports Linux. All of the ones I've checked out so far
require Windows and/or Internet Explorer.
</BLOCKQUOTE>
<P> Check out FreeWWWeb
(<A HREF="http://www.freewwweb.com">http://www.freewwweb.com</A>). They are the only free
ISP I'm aware of which uses a stock PPP dialup and has no specific
browser requirement.
<P> Although they have a link for downloading software, you want the link
for signing up if you already have a browser.
<H2>Paul Garvey &lt;<A HREF="mailto:paul@csn.ul.ie">paul@csn.ul.ie</A>&gt; writes:</H2>
<P> Try the following link:
<A HREF="http://www.linux.ie/misc/oceanfree.html">
http://www.linux.ie/misc/oceanfree.html</A>
<P> <hr> <P>
<!--================================================================-->
<a name="palm"></a>
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/lil2cent.gif">
ANSWER: <FONT COLOR="navy">Re: Palm databases and TSVs
</FONT> </H3>
Tue, 25 Apr 2000 12:14:38 -0600 (MDT)
<BR>From: Michael J. Hammel &lt;<A HREF="mailto:mjhammel@graphics-muse.org">mjhammel@graphics-muse.org</A>&gt;
<P> Thus spoke Nick Bailey &lt;<A HREF="mailto:N.J.Bailey@leeds.ac.uk">N.J.Bailey@leeds.ac.uk</A>&gt;:
<BLOCKQUOTE>
I have a question about connectivity with/via Linux. I need to pull a
load of stuff of the Psion, and this is done by getting the files
converted to tab-separated values by some utilities I've got. I have
read and (I think) understood how to access a palm database from a
program running on it, but there's not a lot of stuff on how to get a
file full of TSVs onto the Palm. I've read the connectivity howto, and
I also understand how to upload a palm database, but its the format
conversion between plain text and palm database which looks hard to me.
There's no obvious tool to do it, and I can't see how in the docs or
this book I bought. Maybe it will become obvious when I unpack the dev
tools?
</BLOCKQUOTE>
<P> Nah, this is a traditional DB/Spreadsheet conversion issue. You need to go
from TSV's to CSV's (comma seperated values). The pilot-link software can
upload some items as long as they are in CSV's. Getting from TSV's to
CSV's is the hard part. If you're moderately good at regular expression
handling, you could probably whip up a perl script to do it. The CSV's
have commas between fields and any fields that have embedded commas are
enclosed in double quotes. I think you can actually get away with using
double quotes around all fields, but I'm not sure about that. I only did
enough work with them to get xnotes working properly (and I use the term
"properly" very loosely here).
<BLOCKQUOTE>
<P> I'm intending to use gcc to make port over a psion app, Vorg
http://www.polonius.demon.co.uk/Nick/Psion/software.html (this page
disappears soon when I change ISP). I'm also wanting to put a CD
database on the Palm Pilot which has a strange and complex structure, so
I'll be writing a application to support that. I've already bagged the
gcc port and XCoPilot; I was wondering what else you would recommend?
</BLOCKQUOTE>
<P> To be honest, I don't write apps for the Pilot. It was something I wanted
to do, but there just wasn't enough time in the day to get seriously
involved in it. One has to pick certain specialties in todays world - mine
turned out to be graphics. Ah well. Maybe someday.
<BLOCKQUOTE>
<P> Thanks a lot for your help, however short. Even "look at the xnotesplus
source here" would be a help.
</BLOCKQUOTE>
<P> Ick - the xnotes source probably wouldn't help much. It's just an ugly
wrapper around pilot-link tools (yep, a bunch of execv's and the like).
But I think if you can write your parser to go from TSV's to CSV's you'll
be on your way.
<P> <hr> <P>
<!--================================================================-->
<a name="pilot"></a>
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/lil2cent.gif">
ANSWER: <FONT COLOR="navy">Re: help setting up pilot-link
</FONT> </H3>
Tue, 25 Apr 2000 12:24:00 -0600 (MDT)
<BR>From: Michael J. Hammel &lt;<A HREF="mailto:mjhammel@graphics-muse.org">mjhammel@graphics-muse.org</A>&gt;
<P> Thus spoke Jon D. Slater &lt;<A HREF="mailto:JSlater@qualcomm.com">JSlater@qualcomm.com</A>&gt;
<BLOCKQUOTE>
I've successfully downloaded and install pilot-link-0.9.0-8.
I didn't find much documentation. I'm having trouble communicating w/
my palm.
I have both a serial cradle and a USB cradle, and I can't get either one
to work.
I'm using RedHat 6.1 on a P-II/333 machine.
Do you know of a good resource for connecting to my PC?
</BLOCKQUOTE>
<P> There is a fair amount online. I know I wrote an article for Linux Journal
a year or two back about how to connect use the pilot-link software with
your Pilot's serial cradle. Search the Linux Journal site
(www.linuxjournal.com) - I know it's online there somewhere. I think they
had another article on the same subject earlier this year or maybe late
last year.
<P> I can't speak for the USB cradle, since I've never tried one of those, but
the serial cable is pretty straight forward. First make sure you know
which serial port you're connecting to. Then set a couple of environment
variables from the command line:
<PRE>
% export PILOTPORT=/dev/ttyS0
% export PILOTRATEW600
</PRE>
<P> The first one tells the pilot-link software what serial port to use. The
second tells it what speed to transfer data at. I think you can set this
to a higher baud rate. I just happen to use this one because I know it
works for me.
<P> Now you can just run the pilot link commands:
<PRE>
% pilot-xfer -b /tmp/pilot-backup
</PRE>
<P> That would backup your pilot to a directory called "/tmp/pilot-backup". I
can't remember if it will create the directory for you, so you're better off
making the directory yourself before hand.
<P> <hr> <P>
<!--================================================================-->
<a name="pilot"></a>
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/lil2cent.gif">
ANSWER: <FONT COLOR="navy">Other markup languages (troff)
</FONT> </H3>
Wed, 26 Apr 2000 22:57:31 +1000 (EST)
<BR>From: Murray Adelman &lt;<A HREF="mailto:murray@ics.mq.edu.au">murray@ics.mq.edu.au</A>&gt;
Thanks Matej.
Here are two troff sites. The first is where to get the original Bell
documents. The second is a new one and I haven't looked into it much.
<UL>
<LI> <A HREF="http://plan9.bell-labs.com/7thEdMan/vol2/tbl">
http://plan9.bell-labs.com/7thEdMan/vol2/tbl</A>
<LI> <A HREF="http://groff.ffii.org/">http://groff.ffii.org/</A>
</UL>
You might also want to look in on the newsgroups comp.text and
gnu.groff.bug .
in which troff problems are discussed. The second is devoted to
problems with groff; but a lot of the discussion applies to any *roff.
<P> <hr> <P>
<!--================================================================-->
<a name="pilot"></a>
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/lil2cent.gif">
ANSWER: <FONT COLOR="navy">KPPP: Users required to enter root-password?
</FONT> </H3>
Fri, 28 Apr 2000 21:44:20 +1000
<BR>From: "Steve &amp; Dee McInerney" &lt;<A HREF="mailto:stedee@bigpond.com">stedee@bigpond.com</A>&gt;
<BLOCKQUOTE>
I have just installed version 6.1 and set up my modem to dial out to my ISP.
However, when I log on as a user and press KDE&gt;Internet&gt;kppp a pop-up box
opens up and wants me to enter the root-password! This does not seem right.
is there a way to avoid having to enter the root pass word when logged on as
a non-root user?
</BLOCKQUOTE>
The way I've solved this one was to modify the /etc/pam.d/kppp file to
include the line at the beginning of the file:
<PRE>
auth sufficient /lib/security/pam_console.so
</PRE>
<!-- END tips.answers -->
<!-- *** BEGIN copyright *** -->
<P> <hr> <P>
<H5 ALIGN=center>
This page written and maintained by the Editor of the <I>Linux Gazette</I>.
Copyright &copy; 2000, <A HREF="mailto:gazette@ssc.com">gazette@ssc.com</A><BR>
Published in Issue 53 of <i>Linux Gazette</i>, May 2000</H5>
<!-- *** END copyright *** -->
<H4>
"Linux Gazette...<I>making Linux just a little more fun!</I>"
</H4>
<P> <HR> <P>
<!--===================================================================-->
<center>
<H1><font color="maroon">Graphical Programs</font></H1>
<H4>By <a href="mailto:baptista@linuxsolutions.com.br">Paulo Henrique Baptista de Oliveira</a></H4>
</center>
<P> <HR> <P>
<!-- END header -->
<BLOCKQUOTE> <EM>
[This survey of 3D graphics programs is taken from a series by Paulo
Baptista of OLinux. You will see that some of the raytraced images are
breathtaking. To preserve the integrity of the article, I have left
it in its original format. Please disregard the "Part II" and the
citations of other articles: we will have more articles by Mr Baptista,
but not necessarily in the same order as the original series.
<P> More articles can be found on the OLinux site,
<A HREF="http://www.olinux.com.br">http://www.olinux.com.br</A>
(Portuguese), which also has many other resources for Linux users.
Work is underway on an English-language site; the Interviews
section
(<A HREF="http://www.olinux.com.br/interviews">http://www.olinux.com.br/interviews</A>)
is already operational. -Ed.]
</EM> </BLOCKQUOTE>
<CENTER><FONT SIZE="+1">
<A HREF="gx/baptista/index.html">Read the article now</A>
</FONT></CENTER>
<!-- *** BEGIN copyright *** -->
<P> <hr> <!-- P -->
<H5 ALIGN=center>
Copyright &copy; 2000, Paulo Henrique Baptista de Oliveira<BR>
Published in Issue 53 of <i>Linux Gazette</i>, May 2000</H5>
<!-- *** END copyright *** -->
<H4>
"Linux Gazette...<I>making Linux just a little more fun!</I>"
</H4>
<P> <HR> <P>
<!--===================================================================-->
<center>
<H1><font color="maroon">Introduction to UNIX Assembly Programming</font></H1>
<H4>By <a href="mailto:konst@linuxassembly.org">Konstantin Boldyshev</a></H4>
</center>
<P> <HR> <P>
<!-- END header -->
<P>
<EM>This document is intended to be a tutorial, showing how to write
a simple assembly program in
several UNIX operating systems on IA32 (i386) platform.
Included material may or may not be applicable
to other hardware and/or software platforms.
Document explains program layout, system call convention,
and build process.
It accompanies Linux Assembly HOWTO, which may be of your interest as well,
though is more Linux specific.</EM>
<P>
v0.3, April 09, 2000
<HR>
<H2><A NAME="s1">1. Introduction</A></H2>
<H2><A NAME="ss1.1">1.1 Legal blurb</A>
</H2>
<P>Copyright &copy; 1999-2000 Konstantin Boldyshev.
Permission is granted to copy, distribute and/or modify
this document under the terms of the GNU
<A HREF="http://www.gnu.org/copyleft/fdl.html">Free Documentation License</A>,
Version 1.1 or any later version published by the Free Software Foundation.
<P>
<H2><A NAME="ss1.2">1.2 Obtatining this document</A>
</H2>
<P>The latest version of this document is available from
<A HREF="http://linuxassembly.org/intro.html">http://linuxassembly.org/intro.html</A>.
If you are reading a few-months-old copy,
please check the url above for a new version.
<P>
<H2><A NAME="ss1.3">1.3 Tools you need</A>
</H2>
<P>You will need several tools to play with programs included in this tutorial.
<P>First of all you need assembler (compiler).
As a rule modern UNIX distribution includes <CODE>gas</CODE> (GNU Assembler),
but all examples specified here use another assembler -- <CODE>nasm</CODE> (Netwide Assembler).
You can download it from the
<A HREF="http://www.cryogen.com/Nasm/">nasm page</A>,
it comes with full source code.
Compile it, or try to find precompiled binary for your OS;
note that several distributions (at least Linux ones)
already have <CODE>nasm</CODE>, check first.
<P>Second, you need linker -- <CODE>ld</CODE>, since <CODE>nasm</CODE> produces only object code.
Any distribution should embrace <CODE>ld</CODE>.
<P>If you're going to dig in, you should also install include files for your OS,
and if possible, kernel source.
<P>Now you should be ready to start, welcome..
<P>
<HR>
<H2><A NAME="s2">2. Hello, world!</A></H2>
<P>
<P>Now we will write our program, classical &quot;Hello, world&quot; (hello.asm).
You can download its sources and binaries
<A HREF="http://linuxassembly.org/intro/hello.tgz">here</A>.
But before let me explain several basics.
<P>
<H2><A NAME="ss2.1">2.1 System call</A>
</H2>
<P>Unless program is just implementing some math algorithms in assembly,
it will deal with such things as getting input, producing output,
and exiting. Here comes a need to call some OS service.
In fact, programming in assembly language is quite the same in different OSes,
unless OS services are touched.
<P>There are two common ways of performing a system call in UNIX OS:
trough the C library (libc) wrapper, or directly.
<P>Using or not using libc in assembly programming is more a question
of taste/belief than something practical.
Libc wrappers are made to protect program from possible system call convention change,
and to provide POSIX compatible interface, if kernel lacks it for some call.
However usually UNIX kernel is more or less POSIX compliant,
this means that syntax of most libc &quot;system calls&quot; exactly
matches syntax of real kernel system calls (and vice versa).
But main drawback of throwing libc away is that are loosing several functions
that are not just syscall wrappers, like printf(), malloc() and similar.
<P>This tutorial will show how to use <B>direct</B> kernel calls,
since this is the fastest way to call kernel service;
our code is not linked to any library,
it communicates with kernel directly.
<P>Things that differ in different UNIX kernels
are set of system calls and system call convention
(however as they strive for POSIX compliance, there's a lot of common between them).
<P><EM>Note for (former) DOS programmers: so, what is that system call?
Better to explain it in such a way:
if you ever wrote a DOS assembly program (and most IA32 assembly programmers did),
you remember DOS services <CODE>int 0x21, int 0x25, int 0x26</CODE> etc..
This is what can be designated as system call.
However the actual implementation is absolutely different,
and this doesn't mean that system calls necessary are done via some interrupt.
Also, quite often DOS programmers mix OS services with BIOS services
like <CODE>int 0x10</CODE> or <CODE>int 0x16</CODE>, and are very surprised when they fail
to perform them in UNIX, since these are not OS services).</EM>
<P>
<H2><A NAME="ss2.2">2.2 Program layout</A>
</H2>
<P>As a rule, modern IA32 UNIXes are 32bit (*grin*), run in protected mode,
have flat memory model, and use ELF format for binaries.
<P>Program can be divided into sections (or segments):
<CODE>.text</CODE> for your code (read-only),
<CODE>.data</CODE> for your data (read-write),
<CODE>.bss</CODE> for uninitialized data (read-write);
actually there can be few other, as well as user-defined sections,
but there's rare need to use them and they are out of our interest here.
Program must have at least <CODE>.text</CODE> section.
<P>Ok, now we'll dive into OS specific details.
<P>
<H2><A NAME="ss2.3">2.3 Linux</A>
</H2>
<P>System calls in Linux are done through int 0x80.
(actually there's a kernel patch allowing system calls to be done
via <EM>syscall (sysenter)</EM> instruction on newer CPUs, but this
thing is still experimental).
<P>Linux differs from usual UNIX calling convention,
and features &quot;fastcall&quot; convention
for system calls (it resembles DOS).
System function number is passed in <CODE>eax</CODE>,
and arguments are passed through registers, not the stack.
There can be up to five arguments in <CODE>ebx, ecx, edx, esi, edi</CODE> consequently.
If there's more than five arguments, they are simply passed though the
structure as first argument.
Result is returned in <CODE>eax</CODE>, stack is not touched at all.
<P>System call function numbers are in sys/syscall.h,
but actually in asm/unistd.h,
some documentation is in the 2nd section of manual
(f.e. to find info on <CODE>write</CODE> system call, issue <CODE>man 2 write</CODE>).
<P>There are several attempts to made up-to-date documentation of Linux system calls,
examine URLs in the
<A HREF="#references">references</A>.
<P>So, our Linux program will look like:
<P>
<BLOCKQUOTE><CODE>
<HR>
<PRE>
section .text
global _start ;must be declared for linker (ld)
msg db 'Hello, world!',0xa ;our dear string
len equ $ - msg ;length of our dear string
_start: ;we tell linker where is entry point
mov edx,len ;message length
mov ecx,msg ;message to write
mov ebx,1 ;file descriptor (stdout)
mov eax,4 ;system call number (sys_write)
int 0x80 ;call kernel
mov eax,1 ;system call number (sys_exit)
int 0x80 ;call kernel
</PRE>
<HR>
</CODE></BLOCKQUOTE>
<P>As you will see futther, Linux syscall convention is the most compact one.
<P>Kernel source references:
<UL>
<LI>arch/i386/kernel/entry.S</LI>
<LI>include/asm-i386/unistd.h</LI>
<LI>include/linux/sys.h</LI>
</UL>
<P>
<P>
<H2><A NAME="ss2.4">2.4 FreeBSD</A>
</H2>
<P>FreeBSD has &quot;usual&quot; calling convention,
when syscall number is in eax, and parameters are on the stack
(the first argument is pushed the last).
System call is to be performed through the <B>function call</B> to a
function containing <CODE>int 0x80</CODE> and <CODE>ret</CODE>, not just <CODE>int 0x80</CODE> itself
(return address MUST be on the stack before <CODE>int 0x80</CODE> is issued!).
Caller must clean up the stack after call.
Result is returned as usual in <CODE>eax</CODE>.
<P>Also there's an alternate way of using <CODE>call 7:0</CODE> gate instead of <CODE>int 0x80</CODE>.
End-result is the same, not counting increase of program size,
since you will also need to <CODE>push eax</CODE> before,
and these two instructions occupy more bytes.
<P>System call function numbers are in sys/syscall.h,
documentation is in the 2nd section of man.
<P>Ok, I think the source will explain this better:
<P><EM>Note: Included code may run on other *BSD as well, I think.</EM>
<P>
<BLOCKQUOTE><CODE>
<HR>
<PRE>
section .text
global _start ;must be declared for linker (ld)
msg db "Hello, world!",0xa ;our dear string
len equ $ - msg ;length of our dear string
_syscall:
int 0x80 ;system call
ret
_start: ;tell linker entry point
push dword len ;message length
push dword msg ;message to write
push dword 1 ;file descriptor (stdout)
mov eax,0x4 ;system call number (sys_write)
call _syscall ;call kernel
;actually there's an alternate
;way to call kernel:
;push eax
;call 7:0
add esp,12 ;clean stack (3 arguments * 4)
push dword 0 ;exit code
mov eax,0x1 ;system call number (sys_exit)
call _syscall ;call kernel
;we do not return from sys_exit,
;there's no need to clean stack
</PRE>
<HR>
</CODE></BLOCKQUOTE>
<P>Kernel source references:
<UL>
<LI>i386/i386/exception.s</LI>
<LI>i386/i386/trap.c</LI>
<LI>sys/syscall.h</LI>
</UL>
<P>
<H2><A NAME="ss2.5">2.5 BeOS</A>
</H2>
<P>BeOS kernel is using &quot;usual&quot; UNIX calling convention too.
The difference from FreeBSD example is that you call <CODE>int 0x25</CODE>.
<P>On information where to find system call function numbers and other
interesting details, examine
<A HREF="#references">asmutils</A>,
especially os_beos.inc file.
<P><EM>Note: to make <CODE>nasm</CODE> compile correctly on BeOS you need
to insert <CODE>#include &quot;nasm.h&quot;</CODE> into <CODE>float.h</CODE>,
and <CODE>#include &lt;stdio.h&gt;</CODE> into <CODE>nasm.h</CODE>.</EM>
<P>
<BLOCKQUOTE><CODE>
<HR>
<PRE>
section .text
global _start ;must be declared for linker (ld)
msg db "Hello, world!",0xa ;our dear string
len equ $ - msg ;length of our dear string
_syscall: ;system call
int 0x25
ret
_start: ;tell linker entry point
push dword len ;message length
push dword msg ;message to write
push dword 1 ;file descriptor (stdout)
mov eax,0x3 ;system call number (sys_write)
call _syscall ;call kernel
add esp,12 ;clean stack (3 * 4)
push dword 0 ;exit code
mov eax,0x3f ;system call number (sys_exit)
call _syscall ;call kernel
;no need to clean stack
</PRE>
<HR>
</CODE></BLOCKQUOTE>
<P>
<H2><A NAME="ss2.6">2.6 Building binary</A>
</H2>
<P>
<P>Building binary is usual two-step process of compiling and linking.
To make binary from our hello.asm we must do the following:
<P>
<HR>
<PRE>
$ nasm -f elf hello.asm # this will produce hello.o object file
$ ld -s -o hello hello.o # this will produce hello executable
</PRE>
<HR>
<P>That's it. Simple.
Now you can launch hello program by entering <CODE>./hello</CODE>, it should work.
Look at the binary size -- surprised?
<P>
<HR>
<H2><A NAME="references"></A> <A NAME="s3">3. References</A></H2>
<P>I hope you enjoyed the journey. If you get interested in assembly
programming for UNIX, I strongly encourage you to visit
<A HREF="http://linuxassembly.org">Linux Assembly</A>
for more information, and download
<A HREF="http://linuxassembly.org/asmutils.html">asmutils</A> package,
it contains a lot of sample code.
For comprehensive overview of Linux/UNIX assembly programming refer to the
<A HREF="http://linuxassembly.org/howto.html">Linux Assembly HOWTO</A>.
<P>Thank you for your interest!
<!-- *** BEGIN copyright *** -->
<P> <hr> <!-- P -->
<H5 ALIGN=center>
Copyright &copy; 2000, Konstantin Boldyshev<BR>
Published in Issue 53 of <i>Linux Gazette</i>, May 2000</H5>
<!-- *** END copyright *** -->
<H4>
"Linux Gazette...<I>making Linux just a little more fun!</I>"
</H4>
<P> <HR> <P>
<!--===================================================================-->
<center>
<H1><font color="maroon">HelpDex</font></H1>
<H4>By <a href="mailto:shane_collinge@yahoo.com">Shane Collinge</a></H4>
</center>
<P> <HR> <P>
<!-- END header -->
Carol's new colleague Violet--Vi for short:
<IMG ALT="names.jpg" SRC="gx/collinge/names.jpg"
WIDTH="750" HEIGHT="302">
<BR CLEAR="all">
<IMG ALT="parallel.jpg" SRC="gx/collinge/parallel.jpg"
WIDTH="750" HEIGHT="305">
<BR CLEAR="all">
<IMG ALT="oreilly.jpg" SRC="gx/collinge/oreilly.jpg"
WIDTH="750" HEIGHT="299">
<BR CLEAR="all">
<IMG ALT="stay.jpg" SRC="gx/collinge/stay.jpg"
WIDTH="750" HEIGHT="299">
<BR CLEAR="all">
<IMG ALT="zero.jpg" SRC="gx/collinge/zero.jpg"
WIDTH="750" HEIGHT="299">
<BR CLEAR="all">
<P> More <EM>HelpDex</EM> cartoons are on Shane's web site,
<A HREF="http://mrbanana.hypermart.net/Linux.htm">
http://mrbanana.hypermart.net/Linux.htm</A>.
<!-- *** BEGIN copyright *** -->
<P> <hr> <!-- P -->
<H5 ALIGN=center>
Copyright &copy; 2000, Shane Collinge<BR>
Published in Issue 53 of <i>Linux Gazette</i>, May 2000</H5>
<!-- *** END copyright *** -->
<H4>
"Linux Gazette...<I>making Linux just a little more fun!</I>"
</H4>
<P> <HR> <P>
<!--===================================================================-->
<center>
<H1><font color="maroon">Miguel de Icaza on Gnome and His New Company HelixCode</font></H1>
<H4>By <a href="mailto:frc@linuxsolutions.com.br">Fernando Ribeiro Corr&ecirc;a</a></H4>
<H4><EM>Originally published at <A HREF="http://www.olinux.com.br/interviews/11/en">
www.olinux.com.br/interviews/11/en</A><BR>
A Portuguese version is at <A HREF="http://www.olinux.com.br/entrevistas/11">
http://www.olinux.com.br/entrevistas/11</A></EM></H4>
</center>
<P> <HR> <P>
<!-- END header -->
<P> <EM>A few years ago, Miguel Icaza has started Gnome inspired by GNU and its
Public License. Now, Gnome has grow to be a Project with hundreds of volunteers
around the world. Recently, he started HelixCode, a company dedicated to
provide the latest "features, improvements, and enhancements" of Helix Gnome
distribuiton.</EM>
<P> <b>OLinux: Where were you born? How old are you? Where did you study and
graduate from college?</b>
<P> <b>Miguel de Icaza</b>: I was born in Mexico City, and I am 27 years old
this year.
<P> I did study at The National and Autonomous University of Mexico (UNAM), I
did enroll for the Math major degree, but I dropped out of college half-way
trough the degree.
<P> <b>OLinux: How did you come with the idea of Gnome Project? Was it a sort of insight?</b>
<P> <b>Miguel de Icaza</b>: There were various things that played a role on this.
<P> A few weeks before the GNOME project had been launched, I had visited
Microsoft, and got a chance to learn about their component architectu
(COM and Active-X) and how it worked.
<P> The idea of a component system fascinated me, and Federico and I
started working on specing out this project, we got the name (GNOME)
and did some work on it, but it was not finished, as I was working on
the Linux/SGI port with Ralf and Federico was back then the GIMP
maintainer.
<P> Then KDE appeared on the scene, and we were all very excited with the
project, and although the license was known to have a few problems, we
did not pay attention initially. Later, when talking to Richard
Stallman and Erik Troan, we realized how bad the license for Qt (the
underlying library for KDE was).
<P> Also, Gtk+ was the GUI toolkit for the GIMP, one of the most
successful Free Software/Open Source projects ever done, and many
contributors were joining the Gtk+ effort.
<P> <b>OLinux: What is the main purpose of Gnome and how far is it to achieve its goals? </b>
<P> <b>Miguel de Icaza</b>: GNOME is trying to bring new and missing technologies to free systems,
in particular GNU/Linux, but GNOME works on pretty much every Unix out
there.
<P> We have gone a long distance. GNOME currently provides:
<P> 1. A user friendly desktop, with the common abstractions that people expect from a desktop.
<P> 2. A number of tools to get work done on a computer by regular users (non hacker, non-sysadmin kind of users).
<P> 3. Productivity applications (The drawing program Gimp, the Diagram program Dia, the Gnumeric spreadsheet, the Vector drawing program SodiPodi, the Gnome Calendar)
<P> 4. Development tools: GNOME ships with various development tools for rapid application development (Glade, a GUI designer), memprof (for profiling, detecting memory leaks and improving memory allocation patterns in applications)
<P> 5. Development libraries: we provide libraries for various tasks: GUI application creation (the Gtk+ library); An application framework (The GNOME libraries); XML parsing; uniform access to resources; asyncronous IO; a unified printing architecture; a CORBA implementation; unified image loading and manipulation and various more
<P> 6. The Bonobo component architecture: a system for creating reusable components. The component architecure is built on top of CORBA, and it enables people to create compound
documents.
<P> This is probably one of the most exciting projects in GNOME right now, as it will help us create more complex applications that are easier to use, easier to maintain, easier to grow and will enable more people to join the project.
<P> Bonobo is what GNOME was originally thought to be.
<P> 7. A team of contributors devoted to making better software.
<P> <b>OLinux: Gnome has grown to be a big Project with hundreds of people involved and programs being develped, how do you manage to control all of that? How many coordenators are directly involed with Gnome daily activities? How many people are involved, adding developeers and volunteers? Give those numbers for the past few years. Are there companies or organizations that sponsor and support Gnome?</b>
<P> <b>Miguel de Icaza</b>: The GNOME project consists of many various "subprojects". Each
subproject is managed by a different person, and the structure is
pretty much the same as the one used in the Linux kernel: people
submit patches to the upstream maintainer, where the changes are
reviewed and installed into the system if they are considered to be
good.
<P> There are about 400 people with access to the CVS repository these
days. Contributors range from documenters, to translators to
programmers, and system administrators.
<P> There are a few companies shipping GNOME with their operating system
distributions (Turbo Linux, Red Hat, SuSE) and they do fund some of
the work that goes into GNOME.
<P> On the other hand there is now a growing GNOME industry. First of all
my company Helix Code has been working in providing support services
for GNOME, as well as developing high-end and high-quality
productivity applications. We are currently developing and improving
the Evolution groupware suite and the Gnumeric spreadsheet.
<P> Evolution is a pretty ambitious project for providing a uniform, and
powerful interface to the information a user has to handle. The idea
is to provide ways for users to find, and keep track of all their
information sources: mail, contacts, chats, instant messaging, paging
services and more. With a pluggable architecture based on Bonobo, the
system can be extended to handle all sorts of information that needs
to be managed.
<P> Evolution is also intended to be a client for Lotus Notes and
Microsoft Exchange servers to enable easy corporate deployment of
free-software desktop systems.
<P> Gnumeric is the other project we are developing: a Spreadsheet that is
intended to be a replacement for the proprietary offerings that
provides all the features people expect from these sort of tool.
<P> Eazel is another company working on GNOME, they are working on the new
file manager for GNOME.
<P> And there are a few other GNOME-based startups that are filling the
various needs of the free software community, but I will let them
announce themselves.
<P> <b>OLinux: How is Gnome integrated with the rest of Linux communities, other development projects, alliances, partnerships? Give us some names and the activities exchanged between thoe groups.</b>
<P> <b>Miguel de Icaza</b>: GNOME is part of the GNU project. We try to work with any other free
software projects, as in the end our objective is for GNU to be a full
solution to the user needs.
<P> <b>OLinux: You have started a HelixCode, right? What is the focus of your business? How many cds of Helixcode have been sold you downloaded from the site? Are you planning an IPO?</b>
<P> <b>Miguel de Icaza</b>: Helix Code is a company focused on making sure free software is viable
in today's world. So we are developing free software productivity
applications under the GPL, and we are also providing consulting
services and support for other companies.
<P> The Helix GNOME distribution is just a service to the GNOME community:
we know that it is sometimes hard to keep up with the latest advances
in the rapidly evolving GNOME project.
<P> Helix GNOME is managed by Jacob Berkman and Joe Shaw. They are the
magicians behind providing a real-time GNOME environment for people to
use. Now users have a chance of running the latest version of GNOME
without having to know any system administration, nor being experts.
<P> The latest GNOME with the latest features, improvements, and
enhancements is only a few clicks away from your desktop.
<P> It is hard to tell how many people have installed Helix GNOME, as
there are many mirrors of the master site.
<P> We are planning on growing to meet the needs of the free software
market in terms of technology and usability.
<P> Best wishes, Miguel.
<P> <b>OLinux: All OLinux user's thank you too.</b>
<!-- *** BEGIN copyright *** -->
<P> <hr> <!-- P -->
<H5 ALIGN=center>
Copyright &copy; 2000, Fernando Ribeiro Corr&ecirc;a<BR>
Published in Issue 53 of <i>Linux Gazette</i>, May 2000</H5>
<!-- *** END copyright *** -->
<H4>
"Linux Gazette...<I>making Linux just a little more fun!</I>"
</H4>
<P> <HR> <P>
<!--===================================================================-->
<center>
<H1><font color="maroon">KDE2 is Just Around the Corner. Are You Curious?</font></H1>
<H4>By <a href="mailto:frc@linuxsolutions.com.br">Fernando Ribeiro Corr&ecirc;a</a></H4>
<H4><EM>Originally published at <A HREF="http://www.olinux.com.br/interviews/11/en">
www.olinux.com.br/interviews/11/en</A></EM></H4>
</center>
<P> <HR> <P>
<!-- END header -->
<P><EM>Mosfet is a key developer in KDE Project and ahead a great reponsability as the world waits for KDE2 and KOffice suite releases. Mosfet told OLinux about the details related to KDE2, its current development stage and how "KDE2 intends to compete with Windows head-on in all features".</EM>
<P> <b>OLinux: Tell us about our career: college, jobs, personal life (age, birth place)</b>
<P> <b>Mosfet</b>: Well, I'm 25 years old and was born in Chicago Il, USA. When I was a child we moved to Austin, Texas and I'm currently living in Indiana. As
far as a personal life, that is mostly just something that exists in
theory for me ;-)
<P> I went to school at Purdue University in Indiana and started doing Unix
admin professionally when I was 19. I started with Unix when I was
around 15 yrs old with a bootlegged copy of Xenix because I wanted to do
32bit graphics programming. Previously I was making DOS calls in
assembler to the extended memory manager, throwing myself in protected
mode to do calculations, then going back to real mode. Unix was pure joy
compared to that :)
<P> Once I got older my career has been pretty much swinging back and forth
between work and education. For most of the time work involving Unix has
focused on both administration of Oracle and either Digital Unix (now
Tru64) or HP/UX database clusters and custom application development for
database interface applications. Recently, with the advent of Linux and
user interfaces such as KDE, I have been involved with that and am now paid by Linux Mandrake to work on KDE2 full time.
<P> <b>Olinux: What are your responsibilities at KDE? Do you have any other jobs?</b>
<P> <b>Mosfet</b>: KDE2 is my sole focus at this point. I am responsible for widget and
window manager style engines (dynamic look and feels written in C++),
widget and window manager theme code, the plugin mechanism for the
window manager, a lot of the new panel's code is mine (although recently
Matthias Elter is working a lot on this), some of the KDE graphical
effects engine, and a new extensive image management system called
"Pixie".
<P> Of course, being free software people can pretty much choose what they
want to work on and when. The best place to see what myself and others
are currently working on is my KDE2 development webpage at
http://www.mosfet.org.
<P> <b>OLinux: How is KDE organized? Try to give us an idea of how KDE works? How the work is coordinated and managed (servers, directories, contribution, staff payment)? ow many people are involved? What are the main problems?</b>
<P> <b>Mosfet</b>: KDE core development is based on contribution from a large group of free
software developers. KDE's core system gets several thousand commits
(developers doing stuff and making improvements) a month - you can get
exact numbers for a given month at http://lists.kde.org. This is
excluding the hundreds of applications not maintained in the KDE CVS and
part the KDE project itself. As far as the exact number of individual
authors I don't know off hand but there are a few hundred developers
registered with our source management system (CVS).
<P> If you write code and it rocks it gets into KDE. Anyone can contribute
to KDE, although each project has it's own maintainer and if you want to
do extensive work it's best to contact that person first. Once that is
done you can work either in our CVS or via patches.
<P> There is a difference between software included in the KDE core packages
(such as kdebase, kdegraphics, etc...), and those maintained by
individual authors. The core packages are largely a collaborative effort
and gets the attention of a large group of developers. Individual
packages are usually the efforts of either individuals or small groups
of people. As an application developer, the approach you take is largely
a matter of style. Do you want a potentially huge group of people fixing
things and adding features to your code or do you want to maintain
strict control over the development of your app? This largely mandates
if your going to be a core developer or maintain a separate app outside
of the core of KDE.
<P> <b>OLinux: Does any private company supports KDE? Everyone is volunteer?</b>
<P> <b>Mosfet</b>: Many companies support KDE development. Most notably Linux Mandrake, Suse, Caldera, Corel, Red Hat, and Troll Tech all have developers
dedicated to KDE - and that's just what comes to mind. There are also
several non-Linux distribution companies I know of that are acquiring
KDE developers for free software development.
<P> The difference between KDE and competing projects is KDE developer
funding seems to be spread over a wider group of Linux companies. You
don't have one or two interests controlling an important group of KDE
developers. You have a couple people working on KDE in many different
companies and collaborating with each other. A vast number of different
interests both by volunteer developers and those working on distributing
free software are represented.
<P> KDE also seems to be the choice being made by commercial application
developers coming from Windows such as Inprise/Corel. Many of these
people can't imagine doing application development in a primarly C API
as a step above what they had in Windows, even if there are bindings,
etc... The KDE/Qt API is the only one which makes sense to these people.
Combining the power of Linux/Unix systems and the powerful C++ API of
KDE is a dream compared to what they had on other platforms and what
they could get with other toolkits and bindings. This is extremely
important considering Linux's growth. If Linux continues growing at it's
current rate most of the developers will be coming from non-Unix
platforms, where C++ application development has been the standard for
compiled GUI applications for almost a decade.
<P> Of course, despite all of the above, KDE core development is maintained
and controlled by volunteers. People do it for fun, make applications
because they want to, submit patches because they like to fix things,
etc... If they are good coders and want a job developing free software,
more likely than not they could get it with KDE.
<P> <b>OLinux: What are the main differences between KDE1 and the next release KDE2?</b>
<P> <b>Mosfet</b>: Pretty much everything ;-) The libraries have been rewritten to be more
extendable, most of the UI is configurable with XML integrated into the
core system, there is a new internet transparent I/O subsystem, a new
browser, new HTML capabilites with support for things like CSS,
bidirectional text, unicode, and soon Netscape plugins, a new window
manager, help system, configuration system, panel, a whole slew of new
widgets and classes, widget styles and themes... The list goes on and
on.
<P> The main difference is now KDE2 is heavily component based, focusing on
the browser. All of the KOffice applications (KWord, KPresenter,
KIllustrator, KSpread, KImageShop, KIllustrator, KChart, and KFormula)
as well as many other KDE applications such as the PS/PDF viewer, mpeg
and image viewers, and DVI viewers are all components now - internet
transparent and embeddable in the browser. You can even embed the
terminal application in the browser and change directories using the
arrow buttons ;-) Pretty cool. KDE easily boasts the most extensive and
complete component model support for Unix desktops.
<P> <b>OLinux: Do you consider Corba technology as a advance for KDE in matters of a
better functionality? Do you see a lot of programmers using it? Give us some advantages.</b>
<P> <b>Mosfet</b>: Well, actually we found it wasn't an advance for us ;-) The problem with
Corba is the API is not ideal and it's very difficult for new
programmers to learn. We rely on components more extensively than any
other free desktop project has attempted thus far, and the requirement
to learn Corba in order to do even trivial KDE development was a huge
restriction. AFAIK Gnome got around this by both using components less
and providing easier function specific bindings where non-Corba experts
are likely to be doing development (such as control panel applets).
<P> This did not seem reasonable or clean to us. Even though we were using
Corba for a long time (well before KDE2 development started), and had
hundreds of thousands of lines of code based on it with both KOffice and
KDE2, people started looking at other standard Unix technologies that
accomplish the same thing. Orbit (the Corba Object Request Broker used
by Gnome) was considered and was faster than the ORB we were using but
still didn't solve the problems mentioned above - which are inherent in
Corba. We then came up with the current KParts technology we are using
for components. It is all based on standard Unix libraries such as
libICE, and allows people to learn how to do fully functional components
in less than a half hour. Using KDE you get the most component features
such as browser embedding and internet transparency that are extremely
fast and require the least amount of effort. No need to purchase 1,000+
page Corba tomes at your local bookstore, you can learn it over lunch :)
Once this transition was made the development of KDE2 increased
significantly over what was occuring before (an increase of over a
thousand commits a month now usually compared to our Corba days). This
shows that we made the right choice for developers. As far as
interoperability, under the hood all the technology we use is in C and
accessible through that, XML bindings are available, and Corba
middleware is in the works. AFAIK a Java interface is also being looked
into. The interoperability argument for Corba is largely misleading
anyways, you need to do custom programming to interface legacy code with
the desktop's API's no matter what mechanism you use - it doesn't just
happen magically. Both Linux desktops introduce new component API's you
need to port to, but using KDE this is extremely easy to do without any
prior experience.
<P> You can learn more about KParts and check out the "Learn KParts in 1/2
hour" tutorial at
<A HREF="http://developer.kde.org">http://developer.kde.org</A>. You can read a small
overview I wrote of why we chose the mechanism we did when the decision
was made a few months ago at
<A HREF="http://www.kde.org/technology.html">
http://www.kde.org/technology.html</A>.
<P> <b>OLinux: About Qt without X, do you think it will run in all Unix's machines and influence some special feature of KDE?</b>
<P> <b>Mosfet</b>: This is an interesting new development. Troll Tech has written a version
of Qt (the base toolkit used by KDE), that can run solely off the Linux
framebuffer and doesn't require X11. Originally intended for embedded
systems, combined with virtual windowed framebuffer windows it can
potentially end up as a very low overhead KDE desktop framework. It
already offers many advanced features directly influenced by direct
framebuffer access such as anti-aliased (smoothed) fonts and alpha
channel support.
<P> As far as what varients of Unix it will run on, I currently know it
supports Linux although any Unix system with a framebuffer (such as
Solaris) shouldn't be that difficult.
<P> Nonetheless, KDE will remain supporting X11. There is no reason not to,
one of the reasons for using high level toolkits like Qt is you don't
have to deal with the lower level stuff like if your running on a
framebuffer or an X server. Also, KDE/Qt is leading the way with this
technology and we are the first people to support it with a toolkit used
by a desktop. Some users will want access to legacy and non-KDE apps and
games, and X11 is essential as a common platform where you can run
applications developed under many different toolkits. As far as people
who only use KDE applications, they may very well get a quite cool low
overhead desktop...
<P> <b>OLinux: KDE1 use to be a heavy application, now that KDE2, adding all this new technology to KDE2, do you think that a new and potent hardware will be required for users to have a good system performance?</b>
<P> <b>Mosfet</b>: Hopefully not ;-) The component model of KDE helps a lot here. When you
start KDE1 a lot of things happen like the file manager and browser are
loaded, etc... Now KDE is designed to start the absolute minimum until
you actually use something - then dynamically load what you need. A lot
still happens, but now it is mostly low level stuff like initalizing the
client server I/O system and not things like loading HTML widgets.
<P> KDE2 is still alpha and there are issues getting in the way of making
this really giving users a gain yet, but it's being worked on. KDE2 will
certainly not require any more resources than KDE1, and hopefully will
require even less.
<P> <b>OLinux: What are the better features KDE will bring to users that Windows doesn't have? Can KDE already compete with Windows2000 in terms of GUI?</b>
<P> <b>Mosfet</b>: Absolutely! KDE2 intends to compete with Windows head-on in all features
- no excuses made. We got the components, the transparent access to the
web, the modern C++ API, developer support, and the applications needed
to seriously contend for user's desktops. As far as the GUI, that is a
matter I specifically deal with and I believe ours is becoming far
superior. Although as a fan of Mac and BeOS interfaces, I feel most UI's
are superior... what will be the default look and feel of KDE2 is
drastically improved from KDE1.
<P> <b>OLinux: When KDE expect to release KOffice1.0?</b>
<P> <b>Mosfet</b>: Alongside the release of KDE2.0, which is now in a library freeze
preparing for the second alpha release. I'm not sure if there will be a
third or if after that we will go straight to betas. KDE does have a
long beta cycle though, we will not release an official version until we
are sure it works well for the majority of people. We feel that is our
responsibility to the users of KDE, who have come to expect a stable
system.
<P> <b>OLinux: How do you see the Digital Society and future of Intenet five years from now? Say something about ecommerce, wireless internet, hand held appliances briefly.</b>
<P> <b>Mosfet</b>: Eeek, a long stream of buzzwords! Hell, I don't know. We will all
probably be out of shape and unable to tolerate sunlight because of too
much time on the internet ;-) That's about all I know...
<P> <b>OLinux: Send a message to programers in Brazil that work in Free Software/Opensource projects and to OLinux user's?</b>
<P> <b>Mosfet</b>: Brazil rocks! I lost my credit rating there last year...
<BLOCKQUOTE> <EM>
[By the way, I really like the animated image of the turning gears in
the bottom left of the <A HREF="http://www.kde.org">KDE web site</A>.
-Ed.]
</EM> </BLOCKQUOTE>
<!-- *** BEGIN copyright *** -->
<P> <hr> <!-- P -->
<H5 ALIGN=center>
Copyright &copy; 2000, Fernando Ribeiro Corr&ecirc;a<BR>
Published in Issue 53 of <i>Linux Gazette</i>, May 2000</H5>
<!-- *** END copyright *** -->
<H4>
"Linux Gazette...<I>making Linux just a little more fun!</I>"
</H4>
<P> <HR> <P>
<!--===================================================================-->
<center>
<H1><font color="maroon">Linux in France: Guess MandrakeSoft's Next Move</font></H1>
<H4>By <a href="mailto:frc@linuxsolutions.com.br">Fernando Ribeiro Corr&ecirc;a</a></H4>
<H4><EM>Originally published at <A HREF="http://www.olinux.com.br/interviews/11/en">
www.olinux.com.br/interviews/10/en</A><BR>
A Portuguese version is at <A HREF="http://www.olinux.com.br/entrevistas/11">
http://www.olinux.com.br/entrevistas/10</A></EM></H4>
</center>
<P> <HR> <P>
<!-- END header -->
<P> <EM>Linux in France: ideas and plans of a MandrakeSoft company and it<69>s
comercial operation. Mandrake<6B>s co-founder and Vice-President Gael Duval
describes talks to OLinux about how he managed to make an international and top
seller company as the world number two Linux distribuiton in boxes sold in 1999
in less than two years and also Mandrake plans for an IPO. Will you
invest?</EM>
<P> <b>OLinux: Say something about your professional and personal background? Where
did you graduated? Brief us about your Linux career?</b>
<P> <b>Gael Duval</b>: I'm 26 years old. So no need to tell you that I didn't do much before!
I just studied computer sciences for 5 years at University in France.
In my last year I specialized in Networking &amp; Electronic Documents.
After having used UNIX a lot (Solaris/SunOS) I discovered Linux in
1995. My first Linux distribution was taking 50 diskettes!
<P> <b>OLinux: As founder of Mandrake, how the idea of a distribution came to your
mind? Were you inspired by other distributions success?</b>
<P> <b>Gael Duval</b>: This is quite easy. In 1997 I had a need of a Linux distribution which
would be easy to install and very easy to use. Red Hat was quite easy
to install, but not easy to use. So I put KDE in Red Hat, added a few
things for simplifying the users life and I released. This wouldn't
have been possible in the proprietary software world! Since that,
Mandrake has evolved on its own way and it's good that we can invent
many new concepts.
<P> <b>OLinux: When Mandrake was created officially as a company?</b>
<P> <b>Gael Duval</b>: MandrakeSoft was founded in the end of 1998.
<P> <b>OLinux: What is Mandrakes mission and strategy?</b>
<P> <b>Gael Duval</b>: We want to provide Linux to the biggest number of users. Personal
users as well as corporates. The strategy is quite clear: we want to
improve as much as possible, release the best quality possible, and
offer the largest possible variety of products on as many plateforms
as possible. That's why we will soon have an offer for the
enterprises, and that we don't limit to x86 architecture. The force of
Linux is that it runs in x86, SPARC, Alpha, PPC, Mips, 68k... That's
not the case for any other proprietary OS!
<P> <b>OLinux: Is Mandrake an internacional company? How many affiliates, distributors
and resellers Mandrake works with? By this moment, international
revenues are already significant?</b>
<P> <b>Gael Duval</b>: MandrakeSoft has been an international company from the beginning
because before it was founded, I already had many contacts all around
the world, in Europe, America, Asia, Russia... We have two main
offices: one in Europe (Paris), one in the USA (Los Angeles). We have
many online resellers (about 50 for south+north America) and two major
distributors: MacMillan Software Publishing (we have a 5 years
agreement with them), and Kasper. Of course our international revenues
are significant, especially from America.
<P> <b>OLinux: What it's your position and responsibilities at Mandrake today?</b>
<P> <b>Gael Duval</b>: Well... My official title is "Vice-President & Co-Founder - Open
Source Development".
<P> <b>OLinux: How much Mandrake has grow since then? How much revenues have grown and
what is the projection for 2000? How many Mandrake's boxes were sold
last year and will be sold in 2000? Where is located Mandrake HeadQuarters?</b>
<P> <b>Gael Duval</b>:We had a fantastic growth! In the end of 1998 we were 3 people in
MandrakeSoft. In the end of 1999 we were 40, and right now we are 70.
The first Mandrake officially shipped by MandrakeSoft was 5.3. It's
been sold at around 3000 items. Then we sold more than 200,000 6.0 +
6.1 packs. The revenues have grown consequently.
<P> <b>Gael Duval</b>: MandrakeSoft headquarters are located in Paris, France.
<P> <b>OLinux: Can you give us an idea, how hard the work is ahead of a Linux company?</b>
<P> <b>Gael Duval</b>: 16 hours a day, from Monday to Sunday. Several hundreds emails fall in
my mailbox everyday!
<P> <b>OLinux: How profitable is Linux business in France, German and Europe?</b>
<P> It's ok but not very reactive. The big Linux hype is just starting
here. Not any Linux company is on a public market in Europe yet.
<P> <b>OLinux: Give us a panorama of Linux effective and potential growth in these locations?</b>
<P> <b>Gael Duval</b>: It's quite hard to say: we do 70% of revenues in the USA. It seems
that it's just beginning in fact.
<P> <b>OLinux:Is Mandrake planning an IPO for his year?</b>
<P> <b>Gael Duval</b>: Yes.
<P> <b>OLinux: Do you have examples of companies that have deployed Linux in a large scale?</b>
<P> <b>Gael Duval</b>: Do you mean in Europe? Do you mean Mandrake Linux? If it's Mandrake
Linux, we have official contacts with 180 companies that are already
using Mandrake.
<P> <b>OLinux: Give us cases of study about Mandrake usage inside important companies.</b>
<P> <b>Gael Duval</b>: There are several listed on our website. There is for example a
manufacturing aerospace company with 400 employees which uses Mandrake
for most its intranet servers. Of this big hotel in Poland with 450
employees which uses Mandrake for its internal servers databases...
<P> But the biggest userbase of Mandrake users are individual users
because we don't have a real offer yet for enterprises (that will come
in two months).
<P> <b>OLinux: How Mandrakes supports OpenSource/Free Software organizations
around the world?</b>
<P> <b>Gael Duval</b>: Firstly we give back all our code to the community: everything is
published under the General Public License. Secondly, we often sponsor
some events (such as a big Gnome meeting recently), we give web server
space on demand, we pay some people for working on free-software (for
example, we pay a KDE developpers and a KOffice developper) etc.
<P> <b>OLinux: Nowadays, companies as Oracle are saying future of business is ecommerce
through the Internet. Do you see it this way? is Linux Mandrake
developing any products or have any plans for ecommerce? What the main
bets and guidelines?</b>
<P> <b>Gael Duval</b>: Ecommerce is effectively a big thing. We already provide many tools
that can be used to build some ecommerce services (Postgres, MySQL,
Apache, PHP...). Furthermore, a complete solution for ecommerce has
been envisaged.
<P> <b>OLinux: What Linux hasn't achieved yet in your opinion?</b>
<P> <b>Gael Duval</b>: Large recognition. This leads to a lack of end-users applications. It
will change.
<P> <b>OLinux: What is the relation between Mandrake and Redhat?</b>
<P> <b>Gael Duval</b>: Do you mean official contacts or the relation between the two products?In the very beginning, Mandrake was based in RedHat work?</b>
<P> <b>Gael Duval</b>: Yes. Mandrake 5.1 was basically RH+updates+KDE+several improvements. Nowdays, RedHat uses Mandrake many new features?</b>
<P> RH has taken several ideas from Mandrake. The biggest one is certainly
the remote update tool (which permits to update packages that have
security holes etc.) but they have rewritten it. However in 6.2, they
directly put one of our package ("rpmlint" which can make some checks
on RPM packages). Maybe one day they'll adopt our installation
procedure which is the best installation procedure recognized in the
Linux world.
<P> <b>OLinux: How do you see this crossing relation?</b>
<P> <b>Gael Duval</b>: Great. It's not competition it's co-petition! Moreover, some of our
developers have personal contacts with RH and they work together on
improving RPM for example. Greets, Gael
<!-- *** BEGIN copyright *** -->
<P> <hr> <!-- P -->
<H5 ALIGN=center>
Copyright &copy; 2000, Fernando Ribeiro Corr&ecirc;a<BR>
Published in Issue 53 of <i>Linux Gazette</i>, May 2000</H5>
<!-- *** END copyright *** -->
<H4>
"Linux Gazette...<I>making Linux just a little more fun!</I>"
</H4>
<P> <HR> <P>
<!--===================================================================-->
<center>
<H1><font color="maroon">Functions and aliases in bash</font></H1>
<H4>By <a href="mailto:pate@gnu.org">Pat Eyler</a></H4>
</center>
<P> <HR> <P>
<!-- END header -->
Many tutorials and introductions to bash talk about using aliases.
Unfortunately most of them don't cover functions. This is a real
loss, because functions offer many values that aliases don't.
<h3>Aliases</h3>
<p>Aliases are simple string substitutions. The shell looks at the first
word of a command and compares it against it's current list of
aliases. Further, if the last character of an alias is a space, it
looks at the next word as well. For example:
<blockquote><code>
<br>$ alias 1='echo '
<br>$ alias 2='this is an alias'
<br>$ 1 2
<br>this is an alias
<br>$
</code></blockquote>
<p>Aliases don't allow for control-flow, command line arguments, or
additional trickery that makes the command line so useful.
Additionally, the rules surrounding alias expansion are a bit tricky,
enough so that the bash(1) manpage recommends "[t]o be safe, always
put alias definitions on a separate line, and do not use alias in
compound commands".
<h3>An Intro to Functions</h3>
<p>Functions are really scripts run in the current context of the shell.
(This bit of techspeak means that a second shell is not forked to run
the function, it is run within the current shell.) Functions really
are full scripts in and of themselves, and allow all the flexibility
and capability that entails.
<p>You can create a functions a couple of different ways. You can just
enter it into a file and source the file with the '.' command (either
from the command line or in your start-up scripts). You can also just
enter the function into at the command line. A function is only
available in a session where it has been made available through one of
these methods (or has inherited it from its parent shell).
<p>To create a function from the command line you would do something
like this:
<blockquote><code><pre>
$ gla() {
&gt; ls -la | grep $1
&gt; }
</blockquote></code></pre>
<p>This is a pretty simple function, and could be implemented as an
alias as well. (There are reasons you might not want to do this,
we'll get to those later.) As written, it does a long listing of the
local directory and greps for any matches for the first argument. You
could make it more interesting by punching it through awk to find any
matching files that are larger than 1024 bytes. This would look like:
<blockquote><code><pre>
$ gla() {
&gt; ls -la | grep $1 | awk ' { if ( $5 &gt; 1024 ) print $0 } '
&gt; }
</blockquote></code></pre>
<p>You can't do this as an alias, you're no longer just replacing gla
with the 'ls -la | grep'. Since its written as a function, there is
no problem using the $1 (referring to the first argument to gla)
anywhere in the body of your commands.
<p>For a larger example (well, okay it's a fair amount larger),
suppose you are working on two projects with two different CVS
repositories. You might want to be able to write a function that
allows you to set appropriate CVSROOT and CVS_ROOT variables, or clear
any values from these variables if the argument unset is given. It
would also be nice if it would run 'cvs update' for you if given the
argument 'update'. With aliases, you could approximate this, but only
by running multiple aliases from the command line. Using functions,
you could create a text file containing the following:
&nbsp;&nbsp;(<A HREF="misc/eyler/setcvs.sh.txt">text version</A>)
<blockquote><code><pre>
setcvs() {
export done="no"
if [ "$1" = "unset" ]
# we want to clear all of the variables
then
echo -n "Clearing cvs related variables: "
export CVSROOT=""
export CVS_RSH=""
export done="yes"
echo "done"
fi
if ( pwd | grep projects/reporting &gt; /dev/null &amp;&amp; \
[ "$done" != "yes" ] )
# if we're in the reporting area, and we're not already done
then
echo -n "Setting up cvs for reporting project: "
export CVSROOT="issdata:/usr/local/cvs/"
export CVS_RSH="ssh"
export done="yes"
echo "done"
fi
if ( pwd | grep projects/nightly &gt; /dev/null &amp;&amp; \
[ "$done" != "yes" ] )
# if we're in the nightly area, and we're not already done
then
echo -n "Setting up cvs for nightly project: "
export CVSROOT="/home/cvs/"
export done="yes"
echo "done"
fi
if [ "$1" = "update" ]
# we want to update the current tree from the cvs server after
# setting up the right variables
then
if [ -z "$CVSROOT" ]
# if there is a zero length $CVSROOT (it has already been
# cleared or was never set) throw an error and do nothing
then
echo "no cvs variables set ... check your cwd and try again"
elif [ -n "$CVSROOT" ]
# if there is a $CVSROOT try and do the update
then
echo "updating local tree"
cvs -q update
echo "done"
fi
fi
}
</pre></code></blockquote>
<p>Then you could enable the function and use it like this:
<blockquote><code>
<br>$ . ~/scripts/setcvs
<br>$ cd
<br>$ pwd
<br>/home/a257455
<br>$ setcvs unset
<br>Clearing cvs related variables: done
<br>$ echo $CVSROOT
<br>
<br>$ echo $CVS_RSH
<br>
<br>$ cd projects/reporting/htdocs/
<br>$ setcvs
<br>Setting up cvs for reporting project: done
<br>$ echo $CVSROOT
<br>issdata:/usr/local/cvs/
<br>$ echo $CVS_RSH
<br>ssh
<br>$ cd ../../nightly/
<br>$ setcvs
<br>Setting up cvs for nightly project: done
<br>$ setcvs update
<br>Setting up cvs for nightly project: done
<br>updating local tree
<br>done
<br>$ cd
<br>$ setcvs unset
<br>Clearing cvs related variables: done
<br>$ setcvs update
<br>no cvs variables set ... check your cwd and try again
<br>$
</code></blockquote>
<p>Functions can do a lot more than aliases, the function above shows a
little bit of flow control, some error handling, and the ability to
use variables. Certainly it could be improved, but it shows the
point. Another big win is that functions can be re-used in scripts,
while aliases can't. For example, because the function above is saved in
a file called '~/scripts/setcvs' you can write a script like:
<blockquote><code><pre>
#!/bin/bash
# a sample script
# first source the functions
. ~/scripts/setcvs
# now go to the project directories and update them from cvs
cd ~/projects/reporting/htdocs
setcvs update
cd -
cd ~/projects/nightly
setcvs update
# now go back to where you were and unset any cvs variables.
cd -
setcvs unset
</pre></code></blockquote>
<h3>A Final Warning</h3>
<p>Aliases are very useful little things, but I hope that after this
introduction, you find functions at least as interesting (and probably
even more useful). A final caveat to both aliases and functions is
that you should never replace a standard command with an alias or a
function. It is too easy to really hurt yourself by trying to execute
your alias when it doesn't exist. Imagine the difference between:
<blockquote><code><pre>
$ alias rm='rm -i'
$ cd ~/scratch
$ rm * # here the rm alias catches you and interactively
# deletes the contents of your current directory
</pre></code></blockquote>
<br>and then later in the same session doing:
<blockquote><code><pre>
$ su -
# cd /tmp
# rm # here the rm alias no longer exists, and you whack
# a bunch of stuff out of /tmp
</pre></code></blockquote>
<p>Happy hacking!<BR>
-pate
<!-- *** BEGIN copyright *** -->
<P> <hr> <!-- P -->
<H5 ALIGN=center>
Copyright &copy; 2000, Pat Eyler<BR>
Published in Issue 53 of <i>Linux Gazette</i>, May 2000</H5>
<!-- *** END copyright *** -->
<H4>
"Linux Gazette...<I>making Linux just a little more fun!</I>"
</H4>
<P> <HR> <P>
<!--===================================================================-->
<center>
<H1><font color="maroon">Linux Site O' The Month: SourceForge</font></H1>
<H4>By <a href="mailto:slambo@linuxstart.com">Sean Lamb</a></H4>
</center>
<P> <HR> <P>
<!-- END header -->
<h2 ALIGN="center">
SourceForge (<a href="http://sourceforge.net">http://sourceforge.net</a>)<BR>
"Breaking down the barriers to Open Source development"</h2>
<H2>What's This?</H2>
<P> This article is the the current installment in an ongoing series of site
reviews for the Linux community. Each month, I will highlight a Linux-related
site and tell you all about it. The intent of these articles is to let you
know about sites that you might not have been to before, but they will all have
to do with some aspect of Linux. Now, on with the story...
<H2>So you wanna be a developer...</h2>
Now that you've got your Linux box up and running the way you like it, it's
time to start building that killer app. But where do you start? You've got
an idea, and you've already written some code but you're not giving back to the
community until you've released your code for the world to see.
<P>
To get your project out, and to get the feedback that is so essential to help
find bugs and get feature suggestions, you need to first create a project
website. It would be nice to build this site with php and mySQL so you can
add news items through a web form rather than rewriting the page everytime
you wanted to post a little tidbit. You'd also like your project site to
have a short and simple URL, rather than stretching to Timbuktu and back,
peppered with tildes. Your project site needs to link to a download location
where users can get a copy of your code, and you'll need a place to put the
app for the users to download. Next, you need to create mailing lists for
your users and, if you're getting some coding help, your co-developers. Some
of those web forums would be nice too. Then you remember the old adage
"release early and often" and you wonder how you can get your code out to the
masses quicker after you've made changes.
<P>
Whew! That's a pretty tall order for some of the smaller projects. How do
all these developers find the time, servers and money to do all this? One
answer that is becoming more popular is SourceForge.
<h2>Project administration for the masses</h2>
SourceForge brings all of these plus more features together into one location,
and then gives away these services for free to Open Source projects. Projects
hosted at SourceForge receive:
<ul>
<li>100Mb of web space on a server that features php, perl and cgi support.
<LI>mySQL database support.
<LI>a short default URL, http://<i>yourproject</i>.sourceforge.net, and hosting
for any properly registered domain name.
<LI>multiple mailing list administration and hosting.
<LI>working CVS repository; not just a branch in a public CVS tree, but your
own CVSROOT.
<LI>anonymous FTP space for package releases.
<LI>web-based project administration.
<LI>public and private bug trackers.
<LI>public and private discussion forums.
<LI>daily backups with offsite rotation.
</ul>
You may be thinking that you don't need everything that's included to host
your project. Perhaps all you need for your little script is a website.
Well, then just use the website portion of the service. Projects are not
required to use all of the services available at all times. They can use only
the services that they need and let the rest sit until they are needed.
<P>
The great unwashed masses need only a web browser and an internet connection
to get to your project site at SourceForge. The portions that you make public
in your project hosting are available to everyone. The people you designate
as developers connect to your project account with ssh1 (note, ssh2 is not yet
supported at the time this was written), so security is less of a problem.
<h2>Who's doing this and why?</h2>
SourceForge is sponsored by VA Linux Systems. VA is paying for the whole
shebang, so project admins don't need to add a ton of ad banners to their
sites to help support the servers (only a small SourceForge logo is required
on project pages. The site's About page answers the why question:
<blockquote>
"As open source developers ourselves, we have run into the kinds of obstacles
that still plague many would-be developers. It was our intent to remove many
of those obstacles and let developers focus on software development. (An odd
concept, but easier to get used to than you'd think.) A suite of tools isn't
enough, though. In the end, you need the hardware power for the whole setup."
</blockquote>
The list of projects already hosted at SourceForge is impressive. The current
categories include:
<ul>
<LI>Communications (126 projects)
<LI>Database (48 projects)
<LI>Desktop Environment (59 projects)
<LI>Education (34 projects)
<LI>Emulators (5 projects)
<LI>Games/Entertainment (160 projects)
<LI>Internet (169 projects)
<LI>Multimedia (163 projects)
<LI>Office/Business (29 projects)
<LI>Other/Nonlisted Topic (34 projects)
<LI>Printing (12 projects)
<LI>Religion (6 projects)
<LI>Scientific (86 projects)
<LI>Security (22 projects)
<LI>Software Development (174 projects)
<LI>System (166 projects)
<LI>Terminals (12 projects)
<LI>Text Editors (30 projects)
</ul>
<h2>So sign up already!</h2>
With all of these features and services in one place, and to get them all for
free for open source projects, it's easy to see why so many projects have
already signed up. In case you're wondering, the first project to be hosted
at SourceForge is <a
href="http://sourceforge.net/project/?group_id=1">SourceForge</a>.
<!-- *** BEGIN copyright *** -->
<P> <hr> <!-- P -->
<H5 ALIGN=center>
Copyright &copy; 2000, Sean Lamb<BR>
Published in Issue 53 of <i>Linux Gazette</i>, May 2000</H5>
<!-- *** END copyright *** -->
<H4>
"Linux Gazette...<I>making Linux just a little more fun!</I>"
</H4>
<P> <HR> <P>
<!--===================================================================-->
<center>
<H1><font color="maroon">Introduction to Shell Scripting</font></H1>
<H4>By <a href="mailto:ben-fuzzybear@yahoo.com">Ben Okopnik</a></H4>
</center>
<P> <HR> <P>
<!-- END header -->
Last month, we took a look at some basics of creating a shell script,
as well as a few of the underlying mechanisms that make it all work. This
time around, we'll see how loops and conditional execution let us direct
program flow in scripts, as well as looking at a few good shell-writing
practices.
<br>&nbsp;
<p>CONVENTIONS
<p>The only thing to note in this article are ellipses (...) - I use them
to indicate that the code shown is only a fragment, and not an entire script
all by itself. If it helps, think of each ellipse as one or more lines
of code that is not actually written out.
<br>&nbsp;
<p>LOOPS AND CONDITIONAL EXECUTION
<p>"FOR;DO;DONE"
<p>Often, scripts are written to automate some repetitive task; as a random
example, if you have to&nbsp; repeatedly edit a series of files in a specific
directory, you might have a script that looks like this:
<p>
<hr WIDTH="100%">
<br><font face="Courier New,Courier">#!/bin/bash</font>
<p><font face="Courier New,Courier">for n in ~/weekly/*.txt</font>
<br><font face="Courier New,Courier">do</font>
<br><font face="Courier New,Courier">&nbsp;&nbsp;&nbsp; ae $n</font>
<br><font face="Courier New,Courier">done</font>
<p><font face="Courier New,Courier">echo "Done."</font>
<br>
<hr WIDTH="100%">
<p>or like this:
<p>
<hr WIDTH="100%">
<br><font face="Courier New,Courier">#!/bin/bash</font>
<p><font face="Courier New,Courier">for n in ~/weekly/*.txt; do ae $n;
done; echo "Done."</font>
<br>
<hr WIDTH="100%">
<p>The code in both does exactly the same thing - but the first version
is much more readable, especially if you're building large scripts with
several levels. As good general practice in writing code, you should indent
each level (the commands inside the loops); it makes troubleshooting and
following your code much easier.
<p>The above control structure is called a 'for' loop - it tests for items
remaining in a list (i.e., 'are there any more files, beyond the ones we
have already read, that fit the "~/weekly/*.txt" template?'). If the test
result is true, it assigns the name of the current item in the list to
the loop variable ("n" in this case) and executes the loop body (the part
between "do" and "done"), then checks again. Whenever the list runs out,
'for' stops looping and passes control to the line following the 'done'
keyword - in our example, the "echo" statement.
<p>A little trick I'd like to mention here. If you want to make the "for"
loop 'spin' a certain number of times, the shell syntax can be somewhat
tiresome:
<p>
<hr WIDTH="100%">
<br><font face="Courier New,Courier">#!/bin/bash</font>
<p><font face="Courier New,Courier">for i in 1 2 3 4 5 6 7 8 9 10 11 12
13 14 15</font>
<br><font face="Courier New,Courier">do</font>
<br><font face="Courier New,Courier">&nbsp;&nbsp;&nbsp; echo $i</font>
<br><font face="Courier New,Courier">done</font>
<br>
<hr WIDTH="100%">
<p>What a pain! If you wanted it to iterate, say, 250 times, you'd have
to type all of that out! Fortunately, there's a 'shortcut' - the "seq"
command, which prints a sequence of numbers from 1 to the given maximum,
e.g.,
<p>
<hr WIDTH="100%">
<br><font face="Courier New,Courier">#!/bin/bash</font>
<p><font face="Courier New,Courier">for i in $(seq 15)</font>
<br><font face="Courier New,Courier">do</font>
<br><font face="Courier New,Courier">&nbsp;&nbsp;&nbsp; echo $i</font>
<br><font face="Courier New,Courier">done</font>
<br>
<hr WIDTH="100%">
<p>This is functionally the same as the previous script. "seq" is part
of the GNU "shellutils" package and is probably already installed on your
system. There's also the option of doing this sort of iteration by using
a "while" loop, but it's a bit more tricky.
<br>&nbsp;
<p>"WHILE;DO;DONE"
<p>Often, we need a control mechanism that acts based on a specified condition
rather than iterating through a list. The 'while' loop fills this requirement:
<p>
<hr WIDTH="100%">
<br><font face="Courier New,Courier">#!/bin/bash</font>
<p><font face="Courier New,Courier">pppd call provider &amp;</font>
<p><font face="Courier New,Courier">while [ -n "$(ping -c 1 192.168.0.1|grep
100%)" ]</font>
<br><font face="Courier New,Courier">do</font>
<br><font face="Courier New,Courier">&nbsp;&nbsp;&nbsp; echo "Connecting..."</font>
<br><font face="Courier New,Courier">done</font>
<p><font face="Courier New,Courier">echo "Connection established."</font>
<br>
<hr WIDTH="100%">
<p>The general flow of this script is: we invoke "pppd", the PPP paenguin...
I mean, daemon :), then keep looping until an actual connection is established
(if you want to use this script, replace 192.168.0.1 with your ISPs IP
address). Here are the details:
<p>1) The "ping -c 1 xxx.xxx.xxx.xxx" command sends a single ping to the
supplied IP address; note that it has to be an IP address and not a URL
- "ping" will fail immediately due to lack of DNS otherwise. If there's
no response within 10 seconds, it will print something like
<br>&nbsp;
<p><font face="Courier New,Courier">PING xxx.xxx.xxx.xxx (xxx.xxx.xxx.xxx):
56 data bytes</font>
<br><font face="Courier New,Courier">ping: sendto: Network is unreachable</font>
<br><font face="Courier New,Courier">ping: wrote xxx.xxx.xxx.xxx 64 chars,
ret=-1</font>
<p><font face="Courier New,Courier">--- xxx.xxx.xxx.xxx ping statistics
---</font>
<br><font face="Courier New,Courier">1 packets transmitted, 0 packets received,
100% packet loss</font>
<br>&nbsp;
<p>2) The only line we're interested in is the one that gives us the packet
loss percentage; with a single&nbsp; packet, it can only be 0% (i.e., a
successful ping) or 100%. By piping the output of "ping" through the "grep
100%" command, we narrow it down to that line, if the loss is indeed 100%;
a 0% loss will not produce any output. Note that the "100%" string isn't
anything special: we could have used "ret=-1", "unreachable", or anything
else that's unique to a failure response.
<p>3) The square brackets that contain the statement are a synonym for
the 'test' command, which returns '0' or '1' (true or false) based on the
evaluation of whatever's inside the brackets. The '-n' operator returns
'true' if the length of a given string is greater than 0. Since the string
is assumed to be contiguous (no spaces), and the line we're checking for
is not, we need to surround the output in double quotes - this is a technique
that you will use again and again in script writing. Do note that the square
brackets require spaces around them - i.e., <font face="Courier New,Courier">[-n
$STRING]</font> won't work; <font face="Courier New,Courier">[ -n $STRING
]</font> is correct. For more info&nbsp; on the operators used with 'test',
type "help test"; a number of very useful ones are available.
<p>4) As long as the above test returns "true" (i.e., as long as the "ping"
fails), the 'while' loop will continue&nbsp; to execute - by printing the
"Connecting..." string every ten seconds. As soon as a single ping is successful
(i.e., the test returns "false"), the 'while' loop will break and pass
control to the statement after "done".
<br>&nbsp;
<p>"UNTIL;DO;DONE"
<p>The 'until' loop is the reverse of the 'while' - it continues to loop
as long as the test is false, and fails when it becomes true. I've never
had the occasion to use it; the 'while' loop and the flexibility of the
available tests have sufficed for everything I've needed so far.
<br>&nbsp;
<p>"IF;THEN;[ELSE];FI"
<p>There are many times when we just need to check for the existence of
a condition and branch the execution based on the result. For those times,
we have the 'if' statement:
<p>
<hr WIDTH="100%">
<br><font face="Courier New,Courier">...</font>
<p><font face="Courier New,Courier">if [ $BOSS="jerk" ]</font>
<br><font face="Courier New,Courier">then</font>
<br><font face="Courier New,Courier">&nbsp;&nbsp;&nbsp; echo 'Take this
job and shove it!'</font>
<br><font face="Courier New,Courier">else</font>
<br><font face="Courier New,Courier">&nbsp;&nbsp;&nbsp; echo 'Stick around;
the money is good.'</font>
<br><font face="Courier New,Courier">fi</font>
<p><font face="Courier New,Courier">...</font>
<br>
<hr WIDTH="100%">
<p>&lt;grin&gt; I guess it's not quite that easy... but the logic makes sense.
Anyway, if a variable called BOSS has been defined as "jerk" (C programmers
take note: '=' and '==' are equivalent in a test statement - no assignment
occurs), then the first 'echo' statement will be executed. In all other
cases, the second 'echo' statement will run (if $BOSS="idiot", you'll still
be working there. Sorry about that. :). Note that the 'else' statement
is optional, as in this script fragment:
<p>
<hr WIDTH="100%">
<br><font face="Courier New,Courier">...</font>
<p><font face="Courier New,Courier">if [ -n $ERROR ]</font>
<br><font face="Courier New,Courier">then</font>
<br><font face="Courier New,Courier">&nbsp;&nbsp;&nbsp; echo 'Detected
an error; exiting.'</font>
<br><font face="Courier New,Courier">&nbsp;&nbsp;&nbsp; exit</font>
<br><font face="Courier New,Courier">fi</font>
<p><font face="Courier New,Courier">...</font>
<br>
<hr WIDTH="100%">
<p>This routine will obviously exit if the ERROR variable is anything other
than empty - but it will not affect the program flow otherwise.
<br>&nbsp;
<p>"CASE;IN;;ESAC"
<p>The remaining tool that we can use for conditional branching is basically
a multiple 'if' statement, based on the evaluation of a test. If, for example,
we know that the only possible outputs from an imaginary program called
'intel_cpu_test' are 4, 8, 16, 32, or 64, then we can write the following:
<p>
<hr WIDTH="100%">
<br><font face="Courier New,Courier">#!/bin/bash</font>
<p><font face="Courier New,Courier">case $(intel_cpu_test) in</font>
<br><font face="Courier New,Courier">&nbsp;&nbsp;&nbsp; 4) echo "You're
running Linux on a calculator??";;</font>
<br><font face="Courier New,Courier">&nbsp;&nbsp;&nbsp; 8) echo "That 8088
is past retirement age...";;</font>
<br><font face="Courier New,Courier">&nbsp;&nbsp;&nbsp; 16) echo "A 286
kinda guy, are you?";;</font>
<br><font face="Courier New,Courier">&nbsp;&nbsp;&nbsp; 32) echo "One of
them new-fangled gadgets!";;</font>
<br><font face="Courier New,Courier">&nbsp;&nbsp;&nbsp; 64) echo "Oooh...
serious CPU envy!";;</font>
<br><font face="Courier New,Courier">&nbsp;&nbsp;&nbsp;&nbsp; *) echo "What
the heck are you running, anyway?";;</font>
<br><font face="Courier New,Courier">esac</font>
<br>
<hr WIDTH="100%">
<p>(Before all you folks flood me with mail about running Linux on a 286
or an 8088... you can't run it on a calculator either. :)
<p>Obviously, the "*"&nbsp;at the end is a catch-all:&nbsp;if someone at
the Intel Secret Lab runs this on their new CPU&nbsp;(code name "UltraSuperHyperWhizBang"),
we want the script to come back with a controlled response rather than
a failure. Note the double semicolons - they 'close' each of the "pattern/command"
sets and are (for some reason) a common error in "case/esac" constructs.
Pay extra attention to yours!
<br>&nbsp;
<p>BREAK and CONTINUE
<p>These statements interrupt the program flow in specific ways. The
"break", once executed, immediately exits the enclosing loop; the
"continue" statement skips the current loop iteration. This is useful in a
number of situations, particularly in long loops where the existence of a
given condition makes all further tests unnecessary. Here's a long (but
hopefully understandable) pseudo-example:
<p>
<hr WIDTH="100%">
<br><font face="Courier New,Courier">...</font>
<p><font face="Courier New,Courier">while [ hosting_party ]</font>
<br><font face="Courier New,Courier">do</font>
<br><font face="Courier New,Courier">&nbsp;&nbsp;&nbsp; case $FOOD_STATUS</font>
<br><font face="Courier New,Courier">&nbsp;&nbsp;&nbsp; in</font>
<br><font face="Courier New,Courier">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
potato_chips_gone) replace_potato_chips;;</font>
<br><font face="Courier New,Courier">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
peanuts_finished) refill_peanut_bowl;;</font>
<br><font face="Courier New,Courier">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
pretzels_gone) open_new_pretzel_bag;;</font>
<br><font face="Courier New,Courier">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
...</font>
<br><font face="Courier New,Courier">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
...</font>
<br><font face="Courier New,Courier">&nbsp;&nbsp;&nbsp; esac</font>
<br>&nbsp;
<p><font face="Courier New,Courier">&nbsp;&nbsp;&nbsp; if [ police_on_scene
]</font>
<br><font face="Courier New,Courier">&nbsp;&nbsp;&nbsp; then</font>
<br><font face="Courier New,Courier">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
talk_to_nice_officers</font>
<br><font face="Courier New,Courier">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
continue</font>
<br><font face="Courier New,Courier">&nbsp;&nbsp;&nbsp; fi</font>
<p><font face="Courier New,Courier">&nbsp;&nbsp;&nbsp; case $LIQUOR_STATUS</font>
<br><font face="Courier New,Courier">&nbsp;&nbsp;&nbsp; in</font>
<br><font face="Courier New,Courier">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
vodka_gone) open_new_vodka_bottle;;</font>
<br><font face="Courier New,Courier">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
rum_gone) open_new_rum_bottle;;</font>
<br><font face="Courier New,Courier">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
...</font>
<br><font face="Courier New,Courier">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
...</font>
<br><font face="Courier New,Courier">&nbsp;&nbsp;&nbsp; esac</font>
<p><font face="Courier New,Courier">&nbsp;&nbsp;&nbsp; case $ANALYZE_GUEST_BEHAVIOR</font>
<br><font face="Courier New,Courier">&nbsp;&nbsp;&nbsp; in</font>
<br><font face="Courier New,Courier">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
lampshade_on_head)&nbsp;&nbsp;&nbsp;&nbsp; echo "He's been drinking";;</font>
<br><font face="Courier New,Courier">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
talking_to_plants)&nbsp;&nbsp;&nbsp;&nbsp; echo "She's been smoking";;</font>
<br><font face="Courier New,Courier">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
talking_to_martians)&nbsp;&nbsp; echo "They're doing LSD";;</font>
<br><font face="Courier New,Courier">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
levitating_objects)&nbsp;&nbsp;&nbsp; echo "Who spiked my lemonade??";;</font>
<p><font face="Courier New,Courier">&nbsp;&nbsp;&nbsp; ...</font>
<p><font face="Courier New,Courier">&nbsp;&nbsp;&nbsp; ...</font>
<p><font face="Courier New,Courier">&nbsp;&nbsp;&nbsp; ...</font>
<p><font face="Courier New,Courier">&nbsp;&nbsp;&nbsp; esac</font><font face="Courier New,Courier"></font>
<p><font face="Courier New,Courier">done</font>
<p><font face="Courier New,Courier">echo "Dude... what day is it?"</font>
<br>
<hr WIDTH="100%">
<p>A couple of key points: note that in checking the status of various
party supplies, you might be better off writing multiple "if" statements
- both potato chips <b>and</b> pretzels may run out at the same time (i.e.,
they are not mutually exclusive).&nbsp; The way it is now, the chips have
top priority; if two items do run out simultaneously, it will take two
loops to replace them.
<p>We can keep checking the food status while trying to convince the cops
that we're actually holding a stamp-collectors' meeting (in fact, maintaining
the doughnut supply is a crucial factor at this point), but we'll skip
right past the liquor status - as it was, we got Joe down off the chandelier
just in time...
<p>The "continue" statement skips the last part of the "while" loop as
long as the "police_on_scene" function returns 'true'; essentially, the
loop body is truncated at that point. Note that even though it is actually
inside the "if" construct, it affects the loop&nbsp; that surrounds it:
both "continue" and "break" apply only to loops, i.e., "for", "while",
and "until" constructs.
<br>&nbsp;
<br>&nbsp;
<p>BACK TO THE FUTURE
<p>Here is the script we created last month:
<p>
<hr WIDTH="100%">
<br><font face="Courier New,Courier">#!/bin/bash</font>
<br><font face="Courier New,Courier"># "bkup" - copies specified files
to the user's ~/Backup</font>
<br><font face="Courier New,Courier"># directory after checking for name
conflicts.</font>
<p><font face="Courier New,Courier">a=$(date +%T-%d_%m_%Y)</font>
<br><font face="Courier New,Courier">cp -i $1 ~/Backup/$1.$a</font>
<br>
<hr WIDTH="100%">
<p>Interestingly enough, shortly after finishing last month's article,
I was cranking out a bit of C code on a machine that didn't have 'rcs'
(the GNU Revision Control System) installed - and this script came in very
handy as a 'micro-rcs'; I used it to take "snapshots" of the project status.
Simple, generalized scripts of this sort become very useful at odd times...
<br>&nbsp;
<p>ERROR CHECKING
<p>The above is a workable script - for you, or anyone who cares to read
and understand it. Let's face it, though: what we want from a program or
a script is to type the name and have it work, right? That, or tell us
exactly why it didn't work. In this case, though, what we get is a somewhat
cryptic message:
<p><font face="Courier New,Courier">cp: missing destination file Try `cp
--help' for more information.</font>
<p>For everyone else, and for ourselves down the road when we forget exactly
how to use this tremendously complex script with innumerable options :),
we need to put in error checking - specifically, syntax/usage&nbsp; information.
Let's see how what we've just learned might apply:
<p>
<hr WIDTH="100%">
<br><font face="Courier New,Courier">#!/bin/bash</font>
<p><font face="Courier New,Courier">if [ -z $1 ]</font>
<br><font face="Courier New,Courier">then</font>
<br><font face="Courier New,Courier">&nbsp;&nbsp;&nbsp; clear</font>
<br><font face="Courier New,Courier">&nbsp;&nbsp;&nbsp; echo "'bkup' -
copies the specified file to the user's"</font>
<br><font face="Courier New,Courier">&nbsp;&nbsp;&nbsp; echo "~/Backup
directory after checking for name conflicts."</font>
<br><font face="Courier New,Courier">&nbsp;&nbsp;&nbsp; echo</font>
<br><font face="Courier New,Courier">&nbsp;&nbsp;&nbsp; echo "Usage: bkup
filename"</font>
<br><font face="Courier New,Courier">&nbsp;&nbsp;&nbsp; echo</font>
<br><font face="Courier New,Courier">&nbsp;&nbsp;&nbsp; exit</font>
<br><font face="Courier New,Courier">fi</font>
<p><font face="Courier New,Courier">a=$(date +%T-%d_%m_%Y)</font>
<br><font face="Courier New,Courier">cp -i $1 ~/Backup/$1.$a</font>
<p>
<hr WIDTH="100%">
<p>The '-z' operator of 'test' returns '0' (true) for a zero-length string;
what we're testing for is 'bkup' being run without a filename. The very
beginning is, in my opinion, the best place to put help/usage information
in a script - if you forget what the options are, just run the script without
any, and you'll get an instant 'refresher course' in using it. You don't
even have to put in the original comments, now - note that we've basically
incorporated our earlier comments into the usage info. It's still a good
idea to put in comments at any non-obvious or tricky places in the script
- that brilliant trick you've managed to pull off may cause you to cuss
and scratch your head next year, if you don't...
<p>Before we wrap up playing with this script, let's give it a few more
capabilities. What if you wanted to be able to send different types of
files into different directories? Let's give that a shot, using what we've
learned:
<p>
<hr WIDTH="100%">
<br><font face="Courier New,Courier">#!/bin/bash</font>
<p><font face="Courier New,Courier">if [ -z $1 ]</font>
<br><font face="Courier New,Courier">then</font>
<br><font face="Courier New,Courier">&nbsp;&nbsp;&nbsp; clear</font>
<br><font face="Courier New,Courier">&nbsp;&nbsp;&nbsp; echo "'bkup' -
copies the specified file to the user's ~/Backup"</font>
<br><font face="Courier New,Courier">&nbsp;&nbsp;&nbsp; echo "directory
tree after checking for name conflicts."</font>
<br><font face="Courier New,Courier">&nbsp;&nbsp;&nbsp; echo</font>
<br><font face="Courier New,Courier">&nbsp;&nbsp;&nbsp; echo "Usage: bkup
filename [bkup_dir]"</font>
<br><font face="Courier New,Courier">&nbsp;&nbsp;&nbsp; echo</font>
<br><font face="Courier New,Courier">&nbsp;&nbsp;&nbsp; echo "bkup_dir
Optional subdirectory in '~/Backup' where the file"</font>
<br><font face="Courier New,Courier">&nbsp;&nbsp;&nbsp; echo " will be
stored."</font>
<br><font face="Courier New,Courier">&nbsp;&nbsp;&nbsp; echo</font>
<br><font face="Courier New,Courier">&nbsp;&nbsp;&nbsp; exit</font>
<br><font face="Courier New,Courier">fi</font>
<p><font face="Courier New,Courier">if [ -n $2 ]</font>
<br><font face="Courier New,Courier">then</font>
<br><font face="Courier New,Courier">&nbsp;&nbsp;&nbsp; if [ -d ~/Backup/$2
]</font>
<br><font face="Courier New,Courier">&nbsp;&nbsp;&nbsp; then</font>
<br><font face="Courier New,Courier">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
subdir=$2/</font>
<br><font face="Courier New,Courier">&nbsp;&nbsp;&nbsp; else</font>
<br><font face="Courier New,Courier">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
mkdir -p ~/Backup/$2</font>
<br><font face="Courier New,Courier">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
subdir=$2/</font>
<br><font face="Courier New,Courier">&nbsp;&nbsp;&nbsp; fi</font>
<br><font face="Courier New,Courier">fi</font>
<p><font face="Courier New,Courier">a=$(date +%T-%d_%m_%Y)</font>
<br><font face="Courier New,Courier">cp -i $1 ~/Backup/$subdir$1.$a</font>
<p>
<hr WIDTH="100%">
<p>Here is the summary of changes:
<p>1) The comment section of the help now reads "...directory tree" rather
than just "directory", indicating the change we've made.
<p>2) The "Usage:" line has been expanded to show the optional (as shown
by the square brackets)&nbsp; argument; we've also added an explanation
of how to use that argument, since it might not be obvious to someone else.
<p>3) An added "if" construct that checks to see if $2 (a second argument
to 'bkup') exists; if so, it checks for a directory with the given name
under "~/Backup", and creates one if it does not exist (the "-d" tests
if the file exists and is a directory).
<p>4) The 'cp' command now has a 'subdir' variable tucked in between "Backup/"
and "$1".
<p>Now, you can type things like
<p><font face="Courier New,Courier">bkup my_new_program.c c</font>
<br><font face="Courier New,Courier">bkup filter.awk awk</font>
<br><font face="Courier New,Courier">bkup filter.awk filters</font>
<br><font face="Courier New,Courier">bkup Letter_to_Mom.txt docs</font>
<p>etc., and sort everything into whatever categories you like. Plus, the
old behavior of "bkup" is still available -
<p><font face="Courier New,Courier">bkup file.xyz</font>
<p>will send a backup of "file.xyz" to the "~/Backup" directory itself;
useful for files that fall outside of your sorting criteria.
<br>&nbsp;
<p>By the way: why are we appending a "/" to $2 in the "if" statement instead
of right in the "cp" line? Well, if $2 <u>doesn't</u> exist, then then
we want 'bkup' to act as it did originally, i.e., send the file to the
"Backup" directory. If we write something like
<p><font face="Courier New,Courier">cp -i $1 ~/Backup/$subdir/$1.$a</font>
<p>(note the extra "/" between $subdir and $1), and $2 isn't specified,
then $subdir becomes blank, and the line above becomes
<p><font face="Courier New,Courier">cp -i $1 ~/Backup//$1.$a</font>
<p>- not a particularly desirable result, since we want to stick with standard
shell syntactic practice wherever possible.
<p>In fact, it's a really good idea to consider all the possibilities whenever
you're building variables into a string; a classic mistake of that sort
can be seen in the following script -
<p>
<hr WIDTH="100%">
<br><font face="Courier New,Courier">DO NOT USE THIS SCRIPT!</font>
<p><font face="Courier New,Courier">#!/bin/bash</font>
<br><font face="Courier New,Courier"># Written by Larry, Moe, and Shemp
- the Deleshun PoWeR TeaM!!!</font>
<br><font face="Courier New,Courier"># Checked by Curly: "Why, soitainly
it woiks! Nyuk-nyuk-nyuk!"</font>
<p><font face="Courier New,Courier"># All you've gotta do is enter the
name of this file followed by</font>
<br><font face="Courier New,Courier"># whatever you want to delete - directories,
dot files, multiple</font>
<br><font face="Courier New,Courier"># files, anything is OK!</font>
<p><font face="Courier New,Courier">rm -rf $1*</font>
<p><font face="Courier New,Courier">DO NOT USE THIS SCRIPT!</font>
<br>
<hr WIDTH="100%">
<p>&lt;Sigh> At least they commented it. :)
<p>What happens if somebody does run "<font face="Courier New,Courier">three_stooges</font>",
and <u>doesn't enter a parameter</u>? The active line in the script becomes
<p><font face="Courier New,Courier">rm -rf *</font>
<p>Assuming that you're Joe User in your home directory, the result is
pretty horrible - it'll wipe out all of your personal files. It becomes
a catastrophe if you're the root user in the root directory - <b>the entire
system goes away</b>!!
<p>Viruses seem like such friendly, harmless things about now... &lt;grin&gt;
<p>Be careful with your script writing. As you have just seen, you have
the power to destroy your entire system in a blink.
<p>
<hr SIZE=4 WIDTH="100%">
<br><font face="Courier New,Courier">Unix was never designed to keep people
from doing stupid things,</font>
<br><font face="Courier New,Courier">because that policy would also keep
them from doing clever things.</font>
<br><font face="Courier New,Courier">-- Doug Gwyn</font>
<p><font face="Courier New,Courier">Unix gives you just enough rope to
hang yourself -- and then a</font>
<br><font face="Courier New,Courier">couple more feet, just to be sure.</font>
<br><font face="Courier New,Courier">-- Eric Allman</font>
<br>
<hr SIZE=4 WIDTH="100%">
<p>The philosophy makes sense: unlimited power in the tools, restriction
by permissions - but it imposes a responsibility: you must take appropriate
care. As a corollary, whenever you're logged in as root, do not run any
shell scripts that are not provably harmless (note the Very Large assumptions
hanging off that phrase - "<u>provably harmless</u>"...)
<br>&nbsp;
<p>WRAPPING IT UP
<p>Loops and conditional execution are a very important part of most scripts.
As we analyze other shell scripts in future articles, you'll see some of
the myriad ways in which they can be used - a script of even average complexity
cannot exist without them.
<p>Next month, we'll take a look at some tools that are commonly used in
shell scripts - tools that may be very familiar to you as command-line
utilities - and explore how they may be connected together to produce desired
results. We'll also dissect a couple of scripts - mine, if no one else
is brave enough to send in the results of their keyboard concoctions. (<font color="#FF0000">Be
Afraid. Be Very Afraid.</font>) :)
<br>&nbsp;
<p>I welcome all comments and corrections in regard to this series of articles,
as well as any interesting scripts that you may send in. All flames will
be sent to <font face="Courier New,Courier">/dev/null</font> (Oh no, it's
full...)
<br>&nbsp;
<p>Until next month -
<p>Happy Linuxing!
<br>&nbsp;
<p>
<hr WIDTH="100%">
<br>"SCRIPT QUOTE" OF THE MONTH:
<p><font face="Courier New,Courier">``What's this script do?</font>
<p><font face="Courier New,Courier">'unzip; touch; finger; mount; gasp;
yes; umount; sleep'</font>
<p><font face="Courier New,Courier">Hint for the answer: not everything
is computer-oriented. Sometimes you're in a sleeping bag, camping out with
your girlfriend.''</font>
<br><font face="Courier New,Courier">&nbsp;-- Frans van der Zande</font>
<br>
<hr WIDTH="100%">
<p>REFERENCES
<p><font face="Courier New,Courier">The "man" pages for 'bash', 'seq',
'ping', 'grep'</font>
<br><font face="Courier New,Courier">The "help" command for 'for', 'while',
'until', 'if', 'case', 'test',</font>
<br><font face="Courier New,Courier">'break', 'continue'</font>
<br><font face="Courier New,Courier">"Introduction to Shell Scripting -
The Basics" by Ben Okopnik, LG #53</font>
<!-- *** BEGIN copyright *** -->
<P> <hr> <!-- P -->
<H5 ALIGN=center>
Copyright &copy; 2000, Ben Okopnik<BR>
Published in Issue 53 of <i>Linux Gazette</i>, May 2000</H5>
<!-- *** END copyright *** -->
<H4>
"Linux Gazette...<I>making Linux just a little more fun!</I>"
</H4>
<P> <HR> <P>
<!--===================================================================-->
<center>
<H1><font color="maroon">Setting Up International Keyboards</font></H1>
<H4>By <a href="mailto:xvudpapc@savba.sk">Juraj Sipos</a></H4>
</center>
<P> <HR> <P>
<!-- END header -->
<p><font face="Courier New,Courier"><font size=-1>This xmodmap and kimap
solutions will work for you in setting up any international keyboard for
(Debian, RedHat, Mandrake, Corel Linux) Linux, FreeBSD, OpenBSD, NetBSD
and possibly every Unix that uses Xfree86 and KDE. The advantage of this
package is that it is not architecture specific and will work on SPARK,
MIPS and all other systems. I don't want to say that other packages are
architecture independent, but I don't like writing garbage in the bash_profile
and XF86Config or possibly somewhere else. This was written by Juraj Sipos
(c) on 4/22/2000, <a href="mailto:xvudpapc@savba.sk">xvudpapc@savba.sk</a></font></font>
<p><font face="Courier New,Courier"><font size=-1>INTRODUCTION</font></font>
<p><font face="Courier New,Courier"><font size=-1>Imagine you use Linux
or a BSD OS and want to write a business letter to a person that has a
foreign name with a slash or idiaresis. Danish language uses signs like
&oslash; and Portuguese like &ntilde;. With this information you can make
your own international keyboard layout without installing any additional
packages. The following information will help you set up German, Spanish,
Italian, Slovak, Czech, Polish, Slovenian, Croatian, Danish, Dutch, French,
Finnish, Norwegian, Estonian, Latvian, Swedish and other keyboards without
additional installing of national packages and without writing garbage
to bash_profile and XF86Config files. You can also alternatively look at
my homage at <a href="http://www.home.sk/www/man/bsd1.htm">http://www.home.sk/www/man/bsd1.htm</a></font></font>
<br><font face="Courier New,Courier"><font size=-1>to see pictures of various
keyboards. In case you want to install Greek, Hebrew or Russian language,
follow my information and apply changes pertinent to these languages (e.g.,
to install Greek fonts, etc.).</font></font>
<p><font face="Courier New,Courier"><font size=-1>The biggest problem with
kikbd or international keyboard under KDE in X Windows is that it doesn't
work in Xfree86 that easily (you have to install some national packages
and write garbage with complicated syntax to the above-mentioned files).
A user expects a simple way for configuring his or her keyboard for international
settings. A simple way is to start KDE, change the international keyboard
settings and immediately write in the language we chose (this will work
for German and other languages, but in Eastern European keyboards some
letters don't function). According to the KDE documentation it should work,
but it doesn't. After exploring many KDE resources on the net, I didn't
find a solution (except for the one that forces you to install some national
package). I know that some locale settings should be included in my bash_profile
or csh logic scripts, but after applying these settings I couldn't change
(and install) keyboards in FreeBSD and it appeared like going through a
darker forest compared to the information I already had regarding localization
of KDE and X Windows under Xfree86.</font></font>
<p><font face="Courier New,Courier"><font size=-1>Here are some solutions
for installing international keyboard layouts.&nbsp; The following information
will help you set up any European keyboard layout. The solution works for
Xfree86 in 3.1 RELEASE in FreeBSD (.Xmodmap solution), Corel Linux, Debian
Linux, RedHat and FreeBSD 3.3 RELEASE and 4.0 RELEASE (KDE *.kimap solution).
I tested it on those systems. Note: .Xmodmap solution works well with other
windows managers. Some Unixes override .Xmodmap setting when used with
KDE. If .Xmodmap doesn't work, change must be made to the KDE kimap files
in .../kikbd directory.</font></font>
<p><font face="Courier New,Courier"><font size=-1>If .Xmodmap solution
doesn't work in KDE, copy skz.kimap (at the end of this article) to /usr/local/share/apps/kikbd,
which is your KDE keyboard directory. The problem with KDE is that after
installing another keyboard, you have no chance to use it as KDE documentation
doesn't clearly state how to define your locale settings in a bash_profile.
After I installed Slovak keyboard in KDE, I couldn't write in Slovak or
Czech, so I made few changes to skz.kimap file, which are explained later
in this file. After applying these changes, no other changes are necessary
- you don't need to write any special commands to your bash_profile or
XF86Config. BUT WHEN YOU INSTALL ANOTHER KEYBOARD in START/SETTINGS/INPUT
DEVICES/INTERNATIONAL KEYBOARDS from your KDE menu, CHECK AUTOSTART. Then
everything will work fine.&nbsp; The difference between skz.kimap and sky.kimap
(and csz.kimap and csy.kimap) is that y,Y and z,Z are swapped, so with
skz.kimap or csz.kimap you will have z,Z instead of y,Y, but with sky.kimap
or csy.kimap, y,Y doesn't change its position on the IBM English keyboard
layout.</font></font>
<p><font face="Courier New,Courier"><font size=-1>How it all works:</font></font>
<p><font face="Courier New,Courier"><font size=-1>a) Copy the "Compose"
file from /usr/X11R6/lib/X11/locale/iso8859-2 to:</font></font>
<br><font face="Courier New,Courier"><font size=-1>&nbsp;&nbsp; /usr/X11R6/lib/X11/locale/iso8859-1&nbsp;
directory (yes, iso8859-1, not iso8859-2). Back up</font></font>
<br><font face="Courier New,Courier"><font size=-1>&nbsp;&nbsp; the original
"Compose" file if you want (alternatively, copy other iso885*** Compose</font></font>
<br><font face="Courier New,Courier"><font size=-1>&nbsp;&nbsp; file to
iso8859-1 directory).</font></font>
<br><font face="Courier New,Courier"><font size=-1>b) Put the included
.Xmodmap file to your root directory (Slovak language, or make your own</font></font>
<br><font face="Courier New,Courier"><font size=-1>&nbsp;&nbsp; .Xmodmap
file) (or possibly put your own *.kimap file to the kikbd directory if
Xmodmap</font></font>
<br><font face="Courier New,Courier"><font size=-1>&nbsp;&nbsp; will not
work)</font></font>
<br><font face="Courier New,Courier"><font size=-1>c) Install ISO8859-2
fonts (or other pertinent fonts).</font></font>
<br><font face="Courier New,Courier"><font size=-1>d) Disable every "Scroll
lock" uncommented line in your XF86Config, because our .Xmodmap</font></font>
<br><font face="Courier New,Courier"><font size=-1>&nbsp;&nbsp; uses scroll
lock to switch between keyboards.</font></font>
<br><font face="Courier New,Courier"><font size=-1>e) Put the appropriate
fontpath for your newly installed fonts in your XF86Config file, if</font></font>
<br><font face="Courier New,Courier"><font size=-1>&nbsp;&nbsp; necessary.</font></font>
<p><font face="Courier New,Courier"><font size=-1>The .Xmodmap solution
may be applied to all&nbsp; X keyboards except Hebrew, I suppose (I'm joking).
The .Xmodmap file overrides all settings of keyboard layouts as defined
in /usr/X11R6/lib/X11/xkb/symbols/, where are symbols for many international
keyboards. The .Xmodmap solution will give you an enhanced Slovak typewriter
keyboard layout.</font></font>
<p><font face="Courier New,Courier"><font size=-1>First, I must say that
in my solution, different mapping is used for .Xmodmap file (and kimap
file) for some ISO definitions. This means that the ISO definitions will
either give you what they say they are (aacute [&aacute;], eacute [&eacute;],
etc.), or they will not give you what they say they are (putting "threequarters"
in your .Xmodmap file will give not give you "3/4" but "z" with a caron
above it). For example, "mu" will give lcaron, "oslash" rcaron, etc. (Obviously,
in other case you need to install some national packages to use "lcaron"
definition instead of "mu"). Normally, you can not put "lcaron" to the
.Xmodmap file, because it will not give you lcaron; you must write "mu"
instead, or "guillemotright" for tcaron. I also tried hexadecimal numbers
and they work. However, other&nbsp; key definitions, for example, adieresis
(a with two dots above it), uacute (u with slash above it), as well as
dead_diaeresis do not require a substitution of other definitions and work
pretty well as they're defined everywhere (dead key is a key&nbsp; you
press, you hold it and nothing happens, but after pressing another key
you will get a special letter). The original "Compose" file in .../iso8859-1
directory can be fully utilized for Slovak or Czech keyboard layouts (Polish,
Hungarian, Slovenian, Croatian), but there is only one problem with the
Slovak or Czech keyboard (and other languages too) layout - dead_caron
doesn't work. That's why you have to copy the "Compose" file from the iso8859-2
directory to iso8859-1 directory, or alternatively, you can edit the "Compose"
file in iso8859-1 directory and put all references about "dead_caron" from
iso8859-2/Compose to iso8859-1/Compose file.</font></font>
<p><font face="Courier New,Courier"><font size=-1>You can leave the Keyboard
section in your XF86Config without much change. Put (if it's not already
there) the following in the "Keyboard" section:</font></font>
<p><font face="Courier New,Courier"><font size=-1>Section "Keyboard"</font></font>
<br><font face="Courier New,Courier"><font size=-1>Protocol "Standard"</font></font>
<br><font face="Courier New,Courier"><font size=-1>XkbRules "xfree86"</font></font>
<br><font face="Courier New,Courier"><font size=-1>XkbModel "pc101"</font></font>
<br><font face="Courier New,Courier"><font size=-1>XkbLayout "us"</font></font>
<p><font face="Courier New,Courier"><font size=-1>Some X Windows managers
and/or environments override .Xmodmap settings, so if you use KDE and .Xmodmap
doesn't work, use kikbd keymap instead of .Xmodmap. (A sample kikbd kimap
for the Slovak language is included at the bottom of this file). The Slovak/Czech/English
keyboard layout&nbsp; is switched to by scroll lock with .Xmodmap. You
may use languages only with the applications that have access to your ISO-8859-2
(or other fonts) fonts (this may not work with StarOffice or with other
applications that have their own built-in fonts). StarOffice has its own
fonts directory - afm fonts in ../xp3/fontmetrics/afm, and ps fonts in
../xp3/pssoftfonts, so you must add the ISO8859-2 fonts directory to these
directories (to tell StarOffice to use these fonts too) and edit fonts.dir
file and add the symlinked fonts there. I can easily use any language in
StarOffice.</font></font>
<p><font face="Courier New,Courier"><font size=-1>Important note: If you
want to exchange documents between StarOffice or WordPerfect and MS Word,
you must include the information about windows 1250 encoding to the file
you write (win1250 is similar to iso8859-2, but it's a little bit different).
There's a solution: use a converter from iso8859-2 to win1250 (you can
find one at my home page at <a href="http://www.home.sk/www/man/bsd1.htm">http://www.home.sk/www/man/bsd1.htm</a>).</font></font>
<p><font face="Courier New,Courier"><font size=-1>If you want to edit and
make your own .Xmodmap keyboard layout definitions, I'll explain one line
of the .Xmodmap file to make clear what you should do. This explanation
can be used for all keycodes.</font></font>
<p><font face="Courier New,Courier"><font size=-1>For example, the line:</font></font>
<p><font face="Courier New,Courier"><font size=-1>keycode 0x11 = 8 asterisk
aacute 8</font></font>
<p><font face="Courier New,Courier"><font size=-1>(note: keycode 0x11 is
derived from xkeycaps utility)</font></font>
<br><font face="Courier New,Courier"><font size=-1>says that the first
pair, the default one, (number "8" and "asterisk") will display number
"8" when you press keycode 0x11 ("8"), will display asterisk when a "shift"
key is pressed. After pressing the scroll lock, there's another definition:
ISO_NEXT_GROUP, which means that when you press the default "8" key, no
"8" will be displayed, but aacute ("&aacute;"), when you press the "shift"
key, number "8" will be displayed. So if you change "aacute" and "8", anything
you put instead of "aacute" and "8" will be displayed, for example:</font></font>
<p><font face="Courier New,Courier"><font size=-1>keycode 0x11 = 8 asterisk
semicolon colon</font></font>
<p><font face="Courier New,Courier"><font size=-1>will give you "semicolon"
and "colon" in your 0x11 keycode after pressing the scroll lock. If you
delete the ISO_NEXT_GROUP (the next pair of definitions on the right),
you will have only one group of keyboard definitions ("8" and "asterisk").
Be careful when editing the .Xmodmap file. You mustn't delete definitions
that enable utilization of the scroll lock unless you know what you are
doing. These are the lines such as:</font></font>
<p><font face="Courier New,Courier"><font size=-1>keycode 0x4e = ISO_Next_Group</font></font>
<br><font face="Courier New,Courier"><font size=-1>add mod5 = ISO_Next_Group</font></font>
<p><font face="Courier New,Courier"><font size=-1>etc. You must also keep
in mind that Unixes are case sensitive.</font></font>
<p><font face="Courier New,Courier"><font size=-1>If you want to find out
more about keycodes, install a package "xkeycaps".</font></font>
<p><font face="Courier New,Courier"><font size=-1>________________cut_here__________________________________________________</font></font><font face="Courier New,Courier"><font size=-1></font></font>
<p><font face="Courier New,Courier"><font size=-1>! This is an `xmodmap'
input file for PC 101 key #2 (FreeBSD/XFree86; US)</font></font>
<br><font face="Courier New,Courier"><font size=-1>! keyboards created
by XKeyCaps, modified by Juraj Sipos on 8/17/1999.</font></font>
<br><font face="Courier New,Courier"><font size=-1>! XKeyCaps 2.38 is Copyright
(c) 1997 Jamie Zawinski &lt;jwz@netscape.com.</font></font>
<br><font face="Courier New,Courier"><font size=-1>! http://people.netscape.com/jwz/xkeycaps/
This is an .Xmodmap solution for</font></font>
<br><font face="Courier New,Courier"><font size=-1>! Slovak keyboard. You
must have ISO-8859-2 fonts installed with a</font></font>
<br><font face="Courier New,Courier"><font size=-1>! pointer in /etc/XF86Config</font></font>
<br><font face="Courier New,Courier"><font size=-1>! <b>NOTE: "!" is a
comment. Some information follows but I deleted</b></font></font>
<br><font face="Courier New,Courier"><font size=-1>!<b> it as it is commented
and not important.</b></font></font>
<br><font face="Courier New,Courier"><font size=-1>! If you want to know
what I deleted, start xkeycaps utility and generate your</font></font>
<br><font face="Courier New,Courier"><font size=-1>! own Xmodmap file.</font></font>
<br><font face="Courier New,Courier"><font size=-1>! The "0 Ins" key generates
KP_Insert and KP_0</font></font>
<br><font face="Courier New,Courier"><font size=-1>! The ". Del" key generates
KP_Delete and KP_Decimal</font></font>
<p><font face="Courier New,Courier"><font size=-1>!#define XK_dead_semivoiced_sound
0xFE5F</font></font>
<p><font face="Courier New,Courier"><font size=-1>!dead_iota, dead_voiced_sound,
dead_belowdot, dead_tilde, dead_macron</font></font>
<p><font face="Courier New,Courier"><font size=-1>keycode 0x09 = Escape</font></font>
<br><font face="Courier New,Courier"><font size=-1>keycode 0x43 = F1 F11
F1 Multi_key</font></font>
<br><font face="Courier New,Courier"><font size=-1>keycode 0x44 = F2 F12
F2 F12</font></font>
<br><font face="Courier New,Courier"><font size=-1>keycode 0x45 = F3 F13
F3 F13 idiaeresis</font></font>
<br><font face="Courier New,Courier"><font size=-1>keycode 0x46 = F4 F14
F4 F14 mu yen</font></font>
<br><font face="Courier New,Courier"><font size=-1>keycode 0x47 = F5 F15
F5 F15 guillemotright guillemotleft</font></font>
<br><font face="Courier New,Courier"><font size=-1>keycode 0x48 = F6 F16
F6 F16 ograve</font></font>
<br><font face="Courier New,Courier"><font size=-1>keycode 0x49 = F7 F17
F7 dead_abovedot oacute</font></font>
<br><font face="Courier New,Courier"><font size=-1>keycode 0x4A = F8 F18
F8 dead_breve acute</font></font>
<br><font face="Courier New,Courier"><font size=-1>keycode 0x4B = F9 F19
F9 dead_cedilla ugrave</font></font>
<br><font face="Courier New,Courier"><font size=-1>keycode 0x4C = F10 F20
F10 dead_ogonek</font></font>
<br><font face="Courier New,Courier"><font size=-1>keycode 0x5F = F11 F21
dead_acute dead_caron</font></font>
<br><font face="Courier New,Courier"><font size=-1>keycode 0x60 = F12 F22
dead_abovering dead_diaeresis</font></font>
<br><font face="Courier New,Courier"><font size=-1>!keycode 0x6F = Print
Execute dead_doubleacute dead_circumflex</font></font>
<br><font face="Courier New,Courier"><font size=-1>keycode 0x6F = Print
Execute dead_iota</font></font>
<br><font face="Courier New,Courier"><font size=-1>keycode 0x4E = ISO_Next_Group</font></font>
<br><font face="Courier New,Courier"><font size=-1>keycode 0x6E = Pause</font></font>
<br><font face="Courier New,Courier"><font size=-1>keycode 0x31 = grave
asciitilde semicolon dead_diaeresis</font></font>
<br><font face="Courier New,Courier"><font size=-1>keycode 0x0A = 1 exclam
plus 1</font></font>
<br><font face="Courier New,Courier"><font size=-1>keycode 0x0B = 2 at
mu 2</font></font>
<br><font face="Courier New,Courier"><font size=-1>keycode 0x0C = 3 numbersign
onesuperior 3</font></font>
<br><font face="Courier New,Courier"><font size=-1>keycode 0x0D = 4 dollar
egrave 4</font></font>
<br><font face="Courier New,Courier"><font size=-1>keycode 0x0E = 5 percent
0x0bb 5</font></font>
<br><font face="Courier New,Courier"><font size=-1>keycode 0x0F = 6 asciicircum
threequarters 6</font></font>
<br><font face="Courier New,Courier"><font size=-1>keycode 0x10 = 7 ampersand
yacute 7</font></font>
<br><font face="Courier New,Courier"><font size=-1>keycode 0x11 = 8 asterisk
aacute 8</font></font>
<br><font face="Courier New,Courier"><font size=-1>keycode 0x12 = 9 parenleft
iacute 9</font></font>
<br><font face="Courier New,Courier"><font size=-1>keycode 0x13 = 0 parenright
eacute 0</font></font>
<br><font face="Courier New,Courier"><font size=-1>keycode 0x14 = minus
underscore equal percent</font></font>
<br><font face="Courier New,Courier"><font size=-1>keycode 0x15 = equal
plus dead_acute dead_caron</font></font>
<br><font face="Courier New,Courier"><font size=-1>keycode 0x33 = backslash
bar ograve parenright</font></font>
<br><font face="Courier New,Courier"><font size=-1>keycode 0x16 = BackSpace</font></font>
<br><font face="Courier New,Courier"><font size=-1>keycode 0x6A = Insert</font></font>
<br><font face="Courier New,Courier"><font size=-1>keycode 0x61 = Home</font></font>
<br><font face="Courier New,Courier"><font size=-1>keycode 0x63 = Prior</font></font>
<br><font face="Courier New,Courier"><font size=-1>keycode 0x4D = Num_Lock
Pointer_EnableKeys</font></font>
<br><font face="Courier New,Courier"><font size=-1>keycode 0x70 = KP_Divide
slash</font></font>
<br><font face="Courier New,Courier"><font size=-1>keycode 0x3F = KP_Multiply
asterisk</font></font>
<br><font face="Courier New,Courier"><font size=-1>keycode 0x52 = KP_Subtract
minus</font></font>
<br><font face="Courier New,Courier"><font size=-1>keycode 0x17 = Tab ISO_Left_Tab</font></font>
<br><font face="Courier New,Courier"><font size=-1>keycode 0x18 = q Q</font></font>
<br><font face="Courier New,Courier"><font size=-1>keycode 0x19 = w W</font></font>
<br><font face="Courier New,Courier"><font size=-1>keycode 0x1A = e E</font></font>
<br><font face="Courier New,Courier"><font size=-1>keycode 0x1B = r R</font></font>
<br><font face="Courier New,Courier"><font size=-1>keycode 0x1C = t T</font></font>
<br><font face="Courier New,Courier"><font size=-1>keycode 0x1D = y Y z
Z</font></font>
<br><font face="Courier New,Courier"><font size=-1>keycode 0x1E = u U</font></font>
<br><font face="Courier New,Courier"><font size=-1>keycode 0x1F = i I</font></font>
<br><font face="Courier New,Courier"><font size=-1>keycode 0x20 = o O</font></font>
<br><font face="Courier New,Courier"><font size=-1>keycode 0x21 = p P</font></font>
<br><font face="Courier New,Courier"><font size=-1>keycode 0x22 = bracketleft
braceleft acute slash</font></font>
<br><font face="Courier New,Courier"><font size=-1>keycode 0x23 = bracketright
braceright diaeresis parenleft</font></font>
<br><font face="Courier New,Courier"><font size=-1>keycode 0x24 = Return</font></font>
<br><font face="Courier New,Courier"><font size=-1>keycode 0x6B = Delete</font></font>
<br><font face="Courier New,Courier"><font size=-1>keycode 0x67 = End</font></font>
<br><font face="Courier New,Courier"><font size=-1>keycode 0x69 = Next</font></font>
<br><font face="Courier New,Courier"><font size=-1>keycode 0x4F = KP_Home
7 KP_Home</font></font>
<br><font face="Courier New,Courier"><font size=-1>keycode 0x50 = KP_Up
8</font></font>
<br><font face="Courier New,Courier"><font size=-1>keycode 0x51 = KP_Prior
9</font></font>
<br><font face="Courier New,Courier"><font size=-1>keycode 0x56 = KP_Add
plus</font></font>
<br><font face="Courier New,Courier"><font size=-1>keycode 0x42 = Caps_Lock</font></font>
<br><font face="Courier New,Courier"><font size=-1>keycode 0x26 = a A</font></font>
<br><font face="Courier New,Courier"><font size=-1>keycode 0x27 = s S</font></font>
<br><font face="Courier New,Courier"><font size=-1>keycode 0x28 = d D</font></font>
<br><font face="Courier New,Courier"><font size=-1>keycode 0x29 = f F</font></font>
<br><font face="Courier New,Courier"><font size=-1>keycode 0x2A = g G</font></font>
<br><font face="Courier New,Courier"><font size=-1>keycode 0x2B = h H</font></font>
<br><font face="Courier New,Courier"><font size=-1>keycode 0x2C = j J</font></font>
<br><font face="Courier New,Courier"><font size=-1>keycode 0x2D = k K</font></font>
<br><font face="Courier New,Courier"><font size=-1>keycode 0x2E = l L</font></font>
<br><font face="Courier New,Courier"><font size=-1>keycode 0x2F = semicolon
colon ocircumflex quotedbl</font></font>
<br><font face="Courier New,Courier"><font size=-1>keycode 0x30 = apostrophe
quotedbl section exclam</font></font>
<br><font face="Courier New,Courier"><font size=-1>keycode 0x53 = KP_Left
4</font></font>
<br><font face="Courier New,Courier"><font size=-1>keycode 0x54 = KP_Begin
5</font></font>
<br><font face="Courier New,Courier"><font size=-1>keycode 0x55 = KP_Right
6</font></font>
<br><font face="Courier New,Courier"><font size=-1>keycode 0x32 = Shift_L
ISO_Next_Group</font></font>
<br><font face="Courier New,Courier"><font size=-1>keycode 0x34 = z Z y
Y</font></font>
<br><font face="Courier New,Courier"><font size=-1>keycode 0x35 = x X</font></font>
<br><font face="Courier New,Courier"><font size=-1>keycode 0x36 = c C</font></font>
<br><font face="Courier New,Courier"><font size=-1>keycode 0x37 = v V</font></font>
<br><font face="Courier New,Courier"><font size=-1>keycode 0x38 = b B</font></font>
<br><font face="Courier New,Courier"><font size=-1>keycode 0x39 = n N</font></font>
<br><font face="Courier New,Courier"><font size=-1>keycode 0x3A = m M</font></font>
<br><font face="Courier New,Courier"><font size=-1>keycode 0x3B = comma
less comma question</font></font>
<br><font face="Courier New,Courier"><font size=-1>keycode 0x3C = period
greater period colon</font></font>
<br><font face="Courier New,Courier"><font size=-1>keycode 0x3D = slash
question minus underscore</font></font>
<br><font face="Courier New,Courier"><font size=-1>keycode 0x3E = Shift_R</font></font>
<br><font face="Courier New,Courier"><font size=-1>keycode 0x62 = Up</font></font>
<br><font face="Courier New,Courier"><font size=-1>keycode 0x57 = KP_End
1</font></font>
<br><font face="Courier New,Courier"><font size=-1>keycode 0x58 = KP_Down
2</font></font>
<br><font face="Courier New,Courier"><font size=-1>keycode 0x59 = KP_Next
3</font></font>
<br><font face="Courier New,Courier"><font size=-1>keycode 0x6C = KP_Enter
Return</font></font>
<br><font face="Courier New,Courier"><font size=-1>keycode 0x25 = Control_L
ISO_Next_Group</font></font>
<br><font face="Courier New,Courier"><font size=-1>!keycode 0x40 = Alt_L
Meta_L</font></font>
<br><font face="Courier New,Courier"><font size=-1>keycode 0x40 = Meta_L
Alt_L</font></font>
<br><font face="Courier New,Courier"><font size=-1>keycode 0x41 = space</font></font>
<br><font face="Courier New,Courier"><font size=-1>keycode 0x71 = Alt_R
Meta_R</font></font>
<br><font face="Courier New,Courier"><font size=-1>keycode 0x6D = Control_R</font></font>
<br><font face="Courier New,Courier"><font size=-1>keycode 0x64 = Left</font></font>
<br><font face="Courier New,Courier"><font size=-1>keycode 0x68 = Down</font></font>
<br><font face="Courier New,Courier"><font size=-1>keycode 0x66 = Right</font></font>
<br><font face="Courier New,Courier"><font size=-1>keycode 0x5A = KP_Insert
0</font></font>
<br><font face="Courier New,Courier"><font size=-1>keycode 0x5B = KP_Delete
period</font></font>
<p><font face="Courier New,Courier"><font size=-1>!keysym Alt_L = Meta_L</font></font>
<br><font face="Courier New,Courier"><font size=-1>!keysym F12 = Multi_key</font></font>
<p><font face="Courier New,Courier"><font size=-1>clear Shift</font></font>
<br><font face="Courier New,Courier"><font size=-1>!clear Lock</font></font>
<br><font face="Courier New,Courier"><font size=-1>clear Control</font></font>
<br><font face="Courier New,Courier"><font size=-1>clear Mod1</font></font>
<br><font face="Courier New,Courier"><font size=-1>clear Mod2</font></font>
<br><font face="Courier New,Courier"><font size=-1>clear Mod3</font></font>
<br><font face="Courier New,Courier"><font size=-1>clear Mod4</font></font>
<br><font face="Courier New,Courier"><font size=-1>clear Mod5</font></font>
<p><font face="Courier New,Courier"><font size=-1>add Shift = Shift_L Shift_R</font></font>
<br><font face="Courier New,Courier"><font size=-1>add Control = Control_L
Control_R</font></font>
<br><font face="Courier New,Courier"><font size=-1>!add Mod1 = Alt_L Alt_R</font></font>
<br><font face="Courier New,Courier"><font size=-1>add Mod1 = Meta_L Alt_R</font></font>
<br><font face="Courier New,Courier"><font size=-1>add Mod2 = Num_Lock</font></font>
<br><font face="Courier New,Courier"><font size=-1>add Mod5 = ISO_Next_Group</font></font>
<br><font face="Courier New,Courier"><font size=-1>!add Mod1 =</font></font>
<br><font face="Courier New,Courier"><font size=-1>!add Mod2 = Alt_R Alt_L
Mode_switch</font></font>
<p><font face="Courier New,Courier"><font size=-1>keycode 0x73 = ISO_Next_Group</font></font>
<br><font face="Courier New,Courier"><font size=-1>keycode 0x74 = dead_acute
dead_diaeresis</font></font>
<br><font face="Courier New,Courier"><font size=-1>keycode 0x75 = dead_caron
dead_abovering</font></font>
<p><font face="Courier New,Courier"><font size=-1>_____________cut_here__________________________________________________________</font></font>
<p><font face="Courier New,Courier"><font size=-1># KDE skz.kimap Config
File, modified by Juraj Sipos</font></font>
<br><font face="Courier New,Courier"><font size=-1># name this file as
skz.kimap and copy it to KDE .../kikbd directory</font></font>
<p><font face="Courier New,Courier"><font size=-1>[International Keyboard]</font></font>
<br><font face="Courier New,Courier"><font size=-1>Label=Skz</font></font>
<br><font face="Courier New,Courier"><font size=-1>Locale=sk</font></font>
<p><font face="Courier New,Courier"><font size=-1># *** here was some info
I deleted.</font></font>
<p><font face="Courier New,Courier"><font size=-1>[KeyboardMap]</font></font>
<br><font face="Courier New,Courier"><font size=-1>CapsSymbols=q,w,e,r,t,y,u,i,o,p,a,s,d,f,g,h,j,k,l,z,x,c,v,b,n,m</font></font>
<br><font face="Courier New,Courier"><font size=-1>keysym0=1,plus,1,exclam,,</font></font>
<br><font face="Courier New,Courier"><font size=-1>keysym1=2,mu,2,at,,</font></font>
<br><font face="Courier New,Courier"><font size=-1>keysym2=3,onesuperior,3,numbersign,,</font></font>
<br><font face="Courier New,Courier"><font size=-1>keysym3=4,egrave,4,dollar,,</font></font>
<br><font face="Courier New,Courier"><font size=-1>keysym4=5,0x0bb,5,percent,,</font></font>
<br><font face="Courier New,Courier"><font size=-1>keysym5=6,threequarters,6,asciicircum,,</font></font>
<br><font face="Courier New,Courier"><font size=-1>keysym6=7,yacute,7,ampersand,,</font></font>
<br><font face="Courier New,Courier"><font size=-1>keysym7=8,aacute,8,asterisk,,</font></font>
<br><font face="Courier New,Courier"><font size=-1>keysym8=9,iacute,9,parenleft,,</font></font>
<br><font face="Courier New,Courier"><font size=-1>keysym9=0,eacute,0,parenright,,</font></font>
<br><font face="Courier New,Courier"><font size=-1>keysym10=minus,equal,percent,minus,underscore,</font></font>
<br><font face="Courier New,Courier"><font size=-1>keysym11=grave,dead_diaeresis,dead_circumflex,grave,asciitilde,</font></font>
<br><font face="Courier New,Courier"><font size=-1>keysym12=equal,dead_acute,dead_caron,equal,plus,</font></font>
<br><font face="Courier New,Courier"><font size=-1>keysym13=bracketleft,uacute,slash,bracketleft,braceleft,</font></font>
<br><font face="Courier New,Courier"><font size=-1>keysym14=bracketright,adiaeresis,parenleft,bracketright,braceright,</font></font>
<br><font face="Courier New,Courier"><font size=-1>keysym15=semicolon,ocircumflex,quotedbl,semicolon,colon,</font></font>
<br><font face="Courier New,Courier"><font size=-1>keysym21=y,z,Z,,,</font></font>
<br><font face="Courier New,Courier"><font size=-1>keysym22=z,y,Y,,,</font></font>
<br><b><font face="Courier New,Courier"><font size=-1># I changed some
keysyms above (as "mu" instead of "lcaron") and added the following lines</font></font></b>
<br><font face="Courier New,Courier"><font size=-1>keycode43=51,ograve,parenright,backslash,bar,</font></font>
<br><font face="Courier New,Courier"><font size=-1>keycode40=48,section,exclam,apostrophe,quotedbl,</font></font>
<br><font face="Courier New,Courier"><font size=-1>keycode51=59,comma,question,less,comma,</font></font>
<br><font face="Courier New,Courier"><font size=-1>keycode52=60,period,colon,period,greater,</font></font>
<br><font face="Courier New,Courier"><font size=-1>keycode53=61,minus,underscore,slash,question,</font></font>
<br><font face="Courier New,Courier"><font size=-1>____cut_here___________________________________________________________________________</font></font>
<p><font face="Courier New,Courier"><font size=-1>(The numbers of keycodes
are derived from the "xkeycaps" utility)</font></font>
<p><font face="Courier New,Courier"><font size=-1>The purpose of the following
info is to help you build any .Xmodmap keyboard layout with iso8859-2 or
other character sets.&nbsp; If you're going to use other languages than
the Central European ones, find a pertinent table for your ISO*** character
set on Internet. The gdkkeysyms.h file is in (RedHat) /usr/include/gdk/gdkkeysyms.h
and it contains all the special names we're using here (it also contains
names of Greek characters).</font></font>
<p><b><font face="Courier New,Courier"><font size=-1>UNIX</font></font></b>
<p><b><font face="Courier New,Courier"><font size=-1>ISO-8859-2 (ISO Latin2)
character set</font></font></b>
<p><b><font face="Courier New,Courier"><font size=-1>octal hex (you can
use it for other languages too)</font></font></b>
<p><font face="Courier New,Courier"><font size=-1>----------------------------------------------------------------------</font></font>
<br><font face="Courier New,Courier"><font size=-1>First, try to see if
definitions will give you (after installing pertinent fonts and keyboard
in X) what they say they are. If they will not give you what they say they
are (some keycodes will be unfunctional), then you must make a substitution.
Definitions which will not give you what they say they are can be traced
by their visual shape in Western Latin 1 encoding. For example, if you
load a Slovak website, do not use ISO8859-2 character set encoding for
viewing, but Western ISO8859-1 encoding for viewing. Thus you will see
bad fonts with letters like &frac34; and so on. You will see what you must
substitute. But if you don't know what "&frac34;" is called in ISO terminology,
find and download an appropriate character set table for ISO-8859-1. It
must be somewhere on the net. The symbols on your right (for example, mu
[micro], which is &micro;, will give you lcaron instead of &micro;) will
give you what's on their left. NOTE: vowel *acute signs require no substitution,
therefore I omitted iacute (&iacute;), aacute (&aacute;), etc.&nbsp;</font></font>
<p><font face="Courier New,Courier"><font size=-1>0243 0xa3 /Lslash &pound;&nbsp;&nbsp;&nbsp;&nbsp;
(Explanation: writing the name of &pound; ["pound" in our case]</font></font>
<br><font face="Courier New,Courier"><font size=-1>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
to Xmodmap or kimap file will give you Lslash. But Lslash can be</font></font>
<br><font face="Courier New,Courier"><font size=-1>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
obtained by a dead_caron - you press a dead_caron and L). The sign</font></font>
<br><font face="Courier New,Courier"><font size=-1>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
on the right, if put in Xmodmap or kimap files, will</font></font>
<br><font face="Courier New,Courier"><font size=-1>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
print you the character which is on its left</font></font>
<br><font face="Courier New,Courier"><font size=-1>0245 0xa5 /Lcaron &yen;&nbsp;&nbsp;&nbsp;&nbsp;
Thus, writing "yen" to kimap or Xmodmap file will give us Lcaron</font></font>
<br><font face="Courier New,Courier"><font size=-1>0251 0xa9 /Scaron &copy;&nbsp;&nbsp;&nbsp;&nbsp;
copyright (will give us Scaron)</font></font>
<br><font face="Courier New,Courier"><font size=-1>0253 0xab /Tcaron &laquo;&nbsp;&nbsp;&nbsp;&nbsp;
guillemotleft (will give us Tcaron)</font></font>
<br><font face="Courier New,Courier"><font size=-1>0256 0xae /Zcaron &reg;&nbsp;&nbsp;&nbsp;&nbsp;
registered</font></font>
<br><font face="Courier New,Courier"><font size=-1>0265 0xb5 /lcaron &micro;&nbsp;&nbsp;&nbsp;&nbsp;
mu</font></font>
<br><font face="Courier New,Courier"><font size=-1>0271 0xb9 /scaron &sup1;&nbsp;&nbsp;&nbsp;&nbsp;
onesuperior</font></font>
<br><font face="Courier New,Courier"><font size=-1>0273 0xbb /tcaron &raquo;&nbsp;&nbsp;&nbsp;&nbsp;
guillemotright</font></font>
<br><font face="Courier New,Courier"><font size=-1>0276 0xbe /zcaron &frac34;&nbsp;&nbsp;&nbsp;&nbsp;
threequarters</font></font>
<br><font face="Courier New,Courier"><font size=-1>0306 0xc6 /Cacute &AElig;&nbsp;&nbsp;&nbsp;&nbsp;
find out yourself</font></font>
<br><font face="Courier New,Courier"><font size=-1>0312 0xca /Eogonek &Ecirc;&nbsp;&nbsp;&nbsp;
find out yourself</font></font>
<br><font face="Courier New,Courier"><font size=-1>0313 0xcb /Edieresis
&Euml;&nbsp; Edieresis</font></font>
<br><font face="Courier New,Courier"><font size=-1>0314 0xcc /Ecaron &Igrave;&nbsp;&nbsp;&nbsp;&nbsp;
find out yourself</font></font>
<br><font face="Courier New,Courier"><font size=-1>0317 0xcf /Dcaron &Iuml;&nbsp;&nbsp;&nbsp;&nbsp;
find out yourself</font></font>
<br><font face="Courier New,Courier"><font size=-1>0321 0xd1 /Nacute &Ntilde;&nbsp;&nbsp;&nbsp;&nbsp;
Ograve</font></font>
<br><font face="Courier New,Courier"><font size=-1>0322 0xd2 /Ncaron &Ograve;&nbsp;&nbsp;&nbsp;&nbsp;
find out yourself</font></font>
<br><font face="Courier New,Courier"><font size=-1>0324 0xd4 /Ocircumflex
&Ocirc; Ocircumflex</font></font>
<br><font face="Courier New,Courier"><font size=-1>0325 0xd5 /Ohungarumlaut
&Otilde; find out yourself</font></font>
<br><font face="Courier New,Courier"><font size=-1>0330 0xd8 /Rcaron &Oslash;&nbsp;&nbsp;&nbsp;&nbsp;
find out yourself</font></font>
<br><font face="Courier New,Courier"><font size=-1>0331 0xd9 /Uring &Ugrave;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
find out yourself</font></font>
<br><font face="Courier New,Courier"><font size=-1>0333 0xdb /Uhungarumlaut
&Ucirc;</font></font>
<br><font face="Courier New,Courier"><font size=-1>0336 0xde /Tcedilla
&THORN;</font></font>
<br><font face="Courier New,Courier"><font size=-1>0343 0xe3 /abreve &atilde;</font></font>
<br><font face="Courier New,Courier"><font size=-1>0345 0xe5 /lacute &aring;</font></font>
<br><font face="Courier New,Courier"><font size=-1>0346 0xe6 /cacute &aelig;</font></font>
<br><font face="Courier New,Courier"><font size=-1>0350 0xe8 /ccaron &egrave;&nbsp;&nbsp;&nbsp;
egrave</font></font>
<br><font face="Courier New,Courier"><font size=-1>0352 0xea /eogonek &ecirc;</font></font>
<br><font face="Courier New,Courier"><font size=-1>0354 0xec /ecaron &igrave;</font></font>
<br><font face="Courier New,Courier"><font size=-1>0357 0xef /dcaron &iuml;</font></font>
<br><font face="Courier New,Courier"><font size=-1>0361 0xf1 /nacute &ntilde;&nbsp;&nbsp;&nbsp;
ntilde</font></font>
<br><font face="Courier New,Courier"><font size=-1>0362 0xf2 /ncaron &ograve;</font></font>
<br><font face="Courier New,Courier"><font size=-1>0365 0xf5 /ohungarumlaut
&otilde;</font></font>
<br><font face="Courier New,Courier"><font size=-1>0370 0xf8 /rcaron &oslash;</font></font>
<br><font face="Courier New,Courier"><font size=-1>0371 0xf9 /uring &ugrave;</font></font>
<br><font face="Courier New,Courier"><font size=-1>0373 0xfb /uhungarumlaut
&ucirc;</font></font>
<br><font face="Courier New,Courier"><font size=-1>0376 0xfe /tcedilla
&thorn;</font></font>
<br><font face="Courier New,Courier"><font size=-1>0377 0xff /dotaccent
&yuml;</font></font>
<p><font face="Courier New,Courier"><font size=-1>You may experiment to
find out which definitions will give you which characters, it shouldn't
be difficult. This is just a hint on how to start. I didn't go on to investigate
further definitions because I have my Slovak and Czech keyboards and I'm
not, for now, interested to use other keyboards.&nbsp; Look at my homage
and build your own keyboard.</font></font>
<br>&nbsp;
<p><font face="Courier New,Courier"><font size=-1>Enjoy.</font></font>
<br><font face="Courier New,Courier"><font size=-1>Juraj Sips</font></font>
<!-- *** BEGIN copyright *** -->
<P> <hr> <!-- P -->
<H5 ALIGN=center>
Copyright &copy; 2000, Juraj Sipos<BR>
Published in Issue 53 of <i>Linux Gazette</i>, May 2000</H5>
<!-- *** END copyright *** -->
<!--startcut ==========================================================-->
<!-- P --> <HR> <!-- P -->
<!-- A HREF="http://www.linuxgazette.com/cgi-bin/talkback/all.py?site=LG&article=http://www.linuxgazette.com/issue53/sipos.html">
<FONT SIZE="+2"><EM>Talkback:</EM> Discuss this article with peers</FONT></A -->
<P>
<!-- *** BEGIN navbar *** -->
<A HREF="okopnik.html"><IMG ALT="[ Prev ]" SRC="../gx/navbar/prev.jpg" WIDTH="16" HEIGHT="45" BORDER="0" ALIGN="bottom"></A>
<IMG ALT=""
SRC="../gx/navbar/left.jpg" WIDTH="14" HEIGHT="45" BORDER="0" ALIGN="bottom" >
<A HREF="index.html"><IMG ALT="[ Table of Contents ]"
SRC="../gx/navbar/toc.jpg" WIDTH="220" HEIGHT="45" BORDER="0" ALIGN="bottom" ></A>
<A HREF="../index.html"><IMG ALT="[ Front Page ]"
SRC="../gx/navbar/frontpage.jpg" WIDTH="137" HEIGHT="45" BORDER="0" ALIGN="bottom"></A>
<A HREF="../faq/index.html"><IMG ALT="[ FAQ ]"
SRC="./../gx/navbar/faq.jpg"WIDTH="62" HEIGHT="45" BORDER="0" ALIGN="bottom"></A>
<A HREF="http://www.linuxgazette.com/cgi-bin/talkback/all.py?site=LG&article=http://www.linuxgazette.com/issue53/sipos.html"><IMG ALT="[ Talkback ]" SRC="../gx/navbar/talkback.jpg" WIDTH="121" HEIGHT="45" BORDER="0" ALIGN="bottom" ></A>
<IMG ALT=""
SRC="../gx/navbar/right.jpg" WIDTH="15" HEIGHT="45" ALIGN="bottom" >
<A HREF="stagner.html"><IMG ALT="[ Next ]" SRC="../gx/navbar/next.jpg" WIDTH="15" HEIGHT="45" BORDER="0" ALIGN="bottom" ></A>
<!-- *** END navbar *** -->
</BODY></HTML>
<!--endcut ============================================================-->
<!--startcut ==============================================-->
<!-- *** BEGIN HTML header *** -->
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<HTML><HEAD>
<title>Connecting to Your Home Computer LG #53</title>
</HEAD>
<BODY BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#0000FF" VLINK="#0000AF"
ALINK="#FF0000">
<!-- *** END HTML header *** -->
<A HREF="http://www.linuxgazette.com/">
<H1><IMG ALT="LINUX GAZETTE" SRC="../gx/lglogo.jpg"
WIDTH="600" HEIGHT="124" border="0"></H1></A>
<!-- *** BEGIN navbar *** -->
<A HREF="sipos.html"><IMG ALT="[ Prev ]" SRC="../gx/navbar/prev.jpg" WIDTH="16" HEIGHT="45" BORDER="0" ALIGN="bottom"></A>
<IMG ALT=""
SRC="../gx/navbar/left.jpg" WIDTH="14" HEIGHT="45" BORDER="0" ALIGN="bottom" >
<A HREF="index.html"><IMG ALT="[ Table of Contents ]"
SRC="../gx/navbar/toc.jpg" WIDTH="220" HEIGHT="45" BORDER="0" ALIGN="bottom" ></A>
<A HREF="../index.html"><IMG ALT="[ Front Page ]"
SRC="../gx/navbar/frontpage.jpg" WIDTH="137" HEIGHT="45" BORDER="0" ALIGN="bottom"></A>
<A HREF="../faq/index.html"><IMG ALT="[ FAQ ]"
SRC="./../gx/navbar/faq.jpg"WIDTH="62" HEIGHT="45" BORDER="0" ALIGN="bottom"></A>
<A HREF="http://www.linuxgazette.com/cgi-bin/talkback/all.py?site=LG&article=http://www.linuxgazette.com/issue53/stagner.html"><IMG ALT="[ Talkback ]" SRC="../gx/navbar/talkback.jpg" WIDTH="121" HEIGHT="45" BORDER="0" ALIGN="bottom" ></A>
<IMG ALT=""
SRC="../gx/navbar/right.jpg" WIDTH="15" HEIGHT="45" ALIGN="bottom" >
<A HREF="ward.html"><IMG ALT="[ Next ]" SRC="../gx/navbar/next.jpg" WIDTH="15" HEIGHT="45" BORDER="0" ALIGN="bottom" ></A>
<!-- *** END navbar *** -->
<P>
<!-- A HREF="http://www.linuxgazette.com/cgi-bin/talkback/all.py?site=LG&article=http://www.linuxgazette.com/issue53/stagner.html">
<FONT SIZE="+2"><EM>Talkback:</EM> Discuss this article with peers</FONT></A -->
<!--endcut ============================================================-->
<H4>
"Linux Gazette...<I>making Linux just a little more fun!</I>"
</H4>
<P> <HR> <P>
<!--===================================================================-->
<center>
<H1><font color="maroon">Connecting to Your Home Computer</font></H1>
<H4>By <a href="mailto:restagner@netscape.net">Robert Stagner</a></H4>
</center>
<P> <HR> <P>
<!-- END header -->
A couple of weeks back, I was at work typing away on my NT box (please,
no flames on this, I have no other choice : -), when I suddenly realized that
a Perl script that I had been updating on my home machine (a Linux box running
Red Hat 6.0), needed to be transferred to my computer at work. Since I do not
have a 24/7 connection to the Internet for my Linux box, I was out of luck. I
could not just FTP to my home machine and download the script. Or could I?
<P>
I suppose I could set up a DSL or cable modem connection, but I personally
find that a 56K PPP connection is a lot less financially burdensome -- at least
for the time being. Anyhow, I thought about how I might somehow get the Linux
box on the Internet while unattended (i.e. just after I left for work each
morning). My solution, although involving several scripts and a cronjob, can
be set up for a PPP connection rather quickly. Once tested and configured
properly, the end result will provide you with a means of automatically
connecting to the Internet and then sending an e-mail off to your work address
containing the dynamically generated IP Address assigned to your home computer
by your ISP. The only assumptions to get this up and running are the following:
<UL>
<LI>you have root permissions (usually the case, if your running this from home).
<LI>you have copies of <A HREF="misc/stagner/ppp-on.txt">ppp-on</A>, <A HREF="misc/stagner/ppp-off.txt">ppp-off</A>, and <A HREF="misc/stagner/ppp-on-dialer.txt">ppp-on-dialer</A> shell scripts. These can
usually be found in the /usr/doc/ppp-2.3.7/scripts/ directory.
<LI>you have successfully connected and disconnected to the Internet using the
ppp-on and ppp-off scripts.
<LI>your ISP has provided you with access to a local telephone number (I suppose
this is not really required, but who wants to pay phone charges).
</UL>
<P>Other than these assumptions, configuring your system to automatically dial-up
your ISP are pretty straight forward. The first step to get this up and running is to copy over (as root) the ppp-on and ppp-off shell scripts to the
/usr/sbin/ directory. Make sure the permissions are set to 0755 for each file.
Then, copy over ppp-on-dialer to the /etc/ppp/ directory. The &quot;dialer&quot; script
is the second part of a two tier step in establishing a connection to your
ISP. The first, is the ppp-on script.
<P>Next, edit the ppp-on script by assigning the appropriate telephone number,
account and password information. Also, remember to assign the appropriate
device and speed of your modem. Mine read /dev/ttyS3 and 115200. It should
resemble the following once your done:
<BR>
<BR>
<CENTER>
<TABLE BORDER=0 CELLASPACING=0 CELLPADDING=4 WIDTH="80%">
<TR>
<TD BGCOLOR="FFFFCC">
<PRE>
<CODE>
#!/bin/sh
#
# These are the parameters. Change as needed.
TELEPHONE=<FONT COLOR="red"><B>your phonenum </B></FONT># The telephone number for the connection
ACCOUNT=<FONT COLOR="red"><B>your account </B></FONT> # The account name for logon (as in 'George Burns')
PASSWORD=<FONT COLOR="red"><B>your password </B></FONT> # The password for this account (and 'Gracie Allen')
LOCAL_IP=0.0.0.0 # Local IP address if known. Dynamic = 0.0.0.0
REMOTE_IP=0.0.0.0 # Remote IP address if desired. Normally 0.0.0.0
NETMASK=255.255.255.0 # The proper netmask if needed
# Export them so that they will be available at 'ppp-on-dialer' time.
export TELEPHONE ACCOUNT PASSWORD
#
# This is the location of the script which dials the phone and logs
# in. Please use the absolute file name as the $PATH variable is not
# used on the connect option. (To do so on a 'root' account would be
# a security hole so don't ask.)
#
DIALER_SCRIPT=/etc/ppp/ppp-on-dialer
#
# Initiate the connection
exec /usr/sbin/pppd debug lock modem crtscts <FONT COLOR="red"><B>/dev/ttyS3 115200</B></FONT> \
asyncmap 20A0000 escape FF kdebug 0 $LOCAL_IP:$REMOTE_IP \
noipdefault netmask $NETMASK defaultroute connect $DIALER_SCRIPT
</CODE>
</PRE>
</TD>
</TR>
<TR>
<TD BGCOLOR="#FFFFFF">
<FONT COLOR="red"><B>Red Text</B></FONT> - code that needs to be altered to meet your needs.
</TD>
</TR>
</TABLE>
</CENTER>
<P>Now that you have all the shell scripts in the appropriate places, it's time
to look at a little Perl script I wrote that calls the connection or disconnection process, as well as send off an e-mail with the IP Address of my
Linux box to my NT box at work. Place a copy (as root) of this
<a href="misc/stagner/sendMeIP.pl.txt">script</a> in your /usr/local/bin directory with a
permissions setting of 0755. The purpose of this script is to:
<UL>
<LI>Provide a connection/disconnection to the Internet via a
shell program (/usr/sbin/ppp-on, or ppp-off).
<LI>Capture the dynamically generated IP address from the ISP service.
<LI>Send the returned IP Address to a predefined e-mail address so that
a remote connection can be made to your home computer.
</UL>
<P>The Perl script begins with the following lines:
<BR>
<BR>
<CENTER>
<TABLE BORDER=0 CELLASPACING=0 CELLPADDING=4 WIDTH="80%">
<TR>
<TD BGCOLOR="FFFFCC">
<PRE>
<CODE>
# Counter used to provide a delay while the ppp connection is established
$COUNT = 1;
# Check for the existence of options
if (!$ARGV[0] || $ARGV[0] !~ m/(connect|disconnect)/i) {
print &quot;Usage: sendMeIP.pl &lt;connect | disconnect&gt;\n&quot;;
exit -1;
}
# Call and execute connection/disconnection to the Internet
&amp;pppConnection($ARGV[0]);
# Caputre the dynamically created remote IP Address
$assignedIPAddress = &amp;captureIPAddress;
# Send the IP Address via e-mail
&amp;sendMail($assignedIPAddress);
</CODE>
</PRE>
</TD>
</TR>
</TABLE>
</CENTER>
<BR>
<BR>
<P>Essentially, all this does is first set a counter, then check to see if the
necessary arguments have been passed to the program. If so, establish a
connection (or, disconnection -- &amp;pppConnection) to the Internet. Capture
the IP Address (&amp;captureIPAddress) by searching the output of a call to
/sbin/ifconfig and finally send off the e-mail (&amp;sendMail). The call to execute
ifconfig actually happens in the &amp;captureIPAddress subroutine. Let us have a
look at this code:
<BR>
<BR>
<CENTER>
<TABLE BORDER=0 CELLASPACING=0 CELLPADDING=4 WIDTH="80%">
<TR>
<TD BGCOLOR="FFFFCC">
<PRE>
<CODE>
sub captureIPAddress {
my $captureIFCONFIG;
$captureIFCONFIG = qx#/sbin/ifconfig#;
if ($captureIFCONFIG =~ /inet addr:(\d+\.\d+.\d+\.\d+)\s*P-t-P.*/) {
my $assignedIPAddress = &quot;$1&quot;;
print &quot;IP Address capture successful: $assignedIPAddress.\n&quot;;
return ($assignedIPAddress);
}
elsif (($captureIFCONFIG !~ /inet addr:(\d+\.\d+.\d+\.\d+)\s*P-t-P.*/)
&amp;&amp; ($COUNT &lt; 60)) {
$COUNT++;
sleep 1;
&amp;captureIPAddress;
}
else {
print &quot;Houston, we have a problem in capturing the IP Address.\n&quot;;
exit -2;
}
}
... [code removed for clarity]
sub sendMail {
my $assignedIPAddress = shift;
my $mailService = <FONT COLOR="red"><B>location of your mail program: mine is "/usr/sbin/sendmail"</B></FONT>;
my $from = <FONT COLOR="red"><B>"Your Name &lt;yourLocalEmail\@host.com&gt;"</B></FONT>;
my $to = <FONT COLOR="red"><B>"Your Name &lt;yourWorkEmail\@host.com&gt;"</B></FONT>;
die "Trouble sending mail: $!" unless (-e $mailService);
open(SENDMAIL, "|$mailService -oi -t") or die "Trouble sending mail:
$!";
print SENDMAIL &lt;&lt;"EOMAIL";
From: $from
To: $to
Subject: An Important Message About <FONT COLOR="red"><B>your.computer</B></FONT>
Use the following IP Address to establish a connection with <FONT COLOR="red">
<B>your.computer</B></FONT> : $assignedIPAddress
EOMAIL
close(SENDMAIL);
print "The e-mail message has been sent.\n";
}
</CODE>
</PRE>
</TD>
</TR>
<TR>
<TD BGCOLOR="#FFFFFF">
<FONT COLOR="red"><B>Red Text</B></FONT> - code that needs to be altered to meet your needs.
</TD>
</TR>
</TABLE>
</CENTER>
<BR>
<BR>
<P>First, the /sbin/ifconfig command is executed using Perl's equivalence of a
backtick (qx function). The output of this command is captured in the
$captureIFCONFIG variable. We then attempt to look for a pattern that
contains &quot;inet addr:&quot; followed by an IP Address and then followed by &quot;P-t-P&quot;.
Since it's the address we're concerned with, we store this in
$assignedIPAddress. However, if we have not matched the IP Address and the
count is less than 60, then we add one to the count variable and put the
program to sleep for one second. At this point, we call the same subroutine
again and again until we have a pattern match or we've exceeded the count.
This gives the /sbin/ifconfig command a chance to write out the appropriate
interface information for a PPP connection. Actually, we give the program about
60 seconds to find the IP Address. If we can't find an IP Address, we print out
an error message and exit the program.
<P>Finally, you'll need to configure the Perl script to point to your email
program, as well as set up the &quot;From&quot; and &quot;To&quot; e-mail addresses contained in
the &amp;sendMail subroutine. Simply reassign the $mailService, $from, and $to
variables to match your case.
<P>Now we've come to the final step -- setting up your system to automatically
execute the Perl script. We will accomplish this through the use of the
crontab command. As root, execute the crontab command with the -e option. The
-e option puts you in the edit mode. From here add the following two lines
and save the file:
<BR>
<BR>
<PRE>
<CODE>
00 8 * * 1,2,3,4,5 perl /usr/local/bin/sendMeIP.pl connect
15 12 * * 1,2,3,4,5 perl /usr/local/bin/sendMeIP.pl disconnect
</CODE>
</PRE>
<P>The first of these two lines calls the Perl script at 8:00am, Monday thru
Friday. The second line calls the Perl script to disconnect from the
Internet at 12:15pm, Monday thru Friday. You can check your work in crontab by
executing the crontab command again, but this time passing it the -l option.
For further information on crontab, check out the man pages.
<P>Once you have received the e-mail message at work, you should now be able to connect to your machine via telnet and ftp by using the given IP Address.
<!-- *** BEGIN copyright *** -->
<P> <hr> <!-- P -->
<H5 ALIGN=center>
Copyright &copy; 2000, Robert Stagner<BR>
Published in Issue 53 of <i>Linux Gazette</i>, May 2000</H5>
<!-- *** END copyright *** -->
<H4>
"Linux Gazette...<I>making Linux just a little more fun!</I>"
</H4>
<P> <HR> <P>
<!--===================================================================-->
<center>
<H1><font color="maroon">Some issues on floating-point precision under Linux</font></H1>
<H4>By <a href="mailto:award@mypic.ad">Alan Ward</a></H4>
</center>
<P> <HR> <P>
<!-- END header -->
<p><b>Abstract</b></p>
<p>In this article I propose a practical exploration of how Linux behaves when performing
single or double-precision calculations. I use a chaotic function to show how the calculation
results of a same program can vary quite a lot under Linux or a Microsoft operating system.</p>
<p>It is intended for math and physics students and teachers, though the equations
involved are quite accessible to just about everybody.</p>
<p>I use Pascal, C and Java as they are the main programming languages in use today.</p>
<p>This discussion focusses on the Intel architecture. Basic concepts are the same for other
types of processor, though the details can vary somewhat.</p>
<p><b>May functions</b></p>
<p>These functions build up a series of terms with the form: </p>
<p align=center>x<sub>0</sub> is given in [0;1]<br>
x<sub>k+1</sub> = mu.x<sub>k</sub>.(1 - x<sub>k</sub>) where mu is a parameter</p>
<p>They were introduced by Robert May in 1976, to study the evolution of a closed insect
population. It can be shown that:</p>
<p><ul>
<li>for 0 &lt;= mu &lt; 3, the behaviour of the series is <u>deterministic</u></li>
<li>for 3 &lt;= mu &lt;= 4, behaviour is <u>chaotic</u></li>
</ul></p>
<p>Simplifying things somewhat, the difference between a chaotic and a deterministic system is
their sensibility to initial conditions. A chaotic system is very sensible: a small
variation of the initial value of x<sub>0</sub> will lead to increasing differences
in subsequent terms. Thus any error that creeps into the calculations -- such as
lack of precision -- will eventually give very different final results.</p>
<p>Other examples of chaotic systems are satellite orbitals and weather prediction.</p>
<p>On the other hand, a deterministic system is not so sensible. A small error in
x<sub>0</sub> will make us calculate terms that, while differing from their exact
value, will be "close enough" aproximations (whatever that means).</p>
<p>An example of a deterministic system is the trajectory of a ping-pong ball.</p>
<p>So chaotic functions are useful to test the precision of calculations on different
systems and with various compilers.</p>
<p><b>Our example</b></p>
<p>In this example, I propose to use the following values:</p>
<p align=center>mu = 3.8<br>
x<sub>0</sub> = 0.5</p>
<p>A precise calculation with a special 1000-digit precision packet gives the following
results:</p>
<pre>
k x(k)
----- ---------
10 0.18509
20 0.23963
30 0.90200
40 0.82492
50 0.53713
60 0.66878
70 0.53202
80 0.93275
90 0.79885
100 0.23161
</pre>
<p>As you see, the series fluctuates merrily up and down the scale between 0 and 1.</p>
<p><b>Programming in Turbo-Pascal</b></p>
<p>A program to calculate this function is easily written in Turbo Pascal for MS-DOS:
&nbsp;&nbsp;(<A HREF="misc/ward/caos.pas.txt">text version</A>)
<pre>
program caos;
{$n+} { you need to activate hardware floating-point calculation
in order to use the extended type }
uses
crt;
var
s : single; { 32-bit real }
r : real; { 48-bit real }
d : double; { 64-bit real }
e : extended; { 80-bit real }
i : integer;
begin
clrscr;
s := 0.5;
r := 0.5;
d := 0.5;
e := 0.5;
for i := 1 to 100 do begin
s := 3.8 * s * (1 - s);
r := 3.8 * r * (1 - r);
d := 3.8 * d * (1 - d);
e := 3.8 * e * (1 - e);
if (i/10 = int(i/10)) then begin
writeln (i:10, s:16:5, r:16:5, d:16:5, e:16:5);
end;
end;
readln;
end.
</pre>
<p>As you can see, Turbo Pascal has quite a number of floating-point types, each on
a different number of bits. In each case, specific bits are set aside for: </p>
<p><ul>
<li>the sign: one bit indicates a positive or negative number</li>
<li>the magnitude (or mantissa): the number itself coded as binary</li>
<li>the exponent: the power of 2 to multiply the magnitude by to obtain
the real value of the number. Note that it may be negative.</li>
</ul></p>
<p>For example, on a 386, an 80-bit floating-point is coded as:</p>
<p><ul>
<li>bits 0 to 55: magnitude</li>
<li>bits 56 to 78: exponent</li>
<li>bit 79: sign</li>
</ul></p>
<p>Naturally, hardware FP coding is determined by the processor manufacturer. However,
the compiler designer can specify different codings for internal calculations. If
FP-math emulation is not used, the compiler must then provide means to translate
compiler codings to hardware. This is the case for Turbo Pascal.</p>
<p>The results of the above program are:</p>
<pre>
k single real double extended
---- --------- --------- --------- ----------
10 0.18510 0.18510 0.18510 0.18510
20 0.23951 0.23963 0.23963 0.23963
30 0.88423 0.90200 0.90200 0.90200
40 0.23013 0.82492 0.82493 0.82493
50 0.76654 0.53751 0.53714 0.53714
60 0.42039 0.64771 0.66878 0.66879
70 0.93075 0.57290 0.53190 0.53203
80 0.28754 0.72695 0.93557 0.93275
90 0.82584 0.39954 0.69203 0.79884
100 0.38775 0.48231 0.41983 0.23138
</pre>
<p>The first terms are rather close in all cases, as heavy calculation
precision losses (from truncation) have not yet occurred. Then the least precise
(single) format already loses touch with reality around x<sub>30</sub>, while
the real format goes out around x<sub>60</sub> and the double around
x<sub>90</sub>. These are all compiler FP codings.</p>
<p>The extended format -- which is the native hardware FP coding -- retains
sufficient precision right up to x<sub>100</sub>. As an educated guess, it
would probably go out around x<sub>110</sub>.</p>
<p><b>p2c under Linux</b></p>
<p>The above program can be compiled with almost no changes with the p2c translating
program under Linux:</p>
<p><table align=center width=450>
<tr><td>p2c caos.pas</td><td><i>translate caos.pas to caos.c</i></td></tr>
<tr><td>cc caos.c -lp2c -o caos</td><td><i>compile caos.c + p2c library using gcc</i></td></tr>
</table></p>
<p>Results are then:</p>
<pre>
k single real double extended
---- --------- --------- --------- ----------
10 0.18510 0.18510 0.18510 0.18510
20 0.23951 0.23963 0.23963 0.23963
30 0.88423 0.90200 0.90200 0.90200
40 0.23013 0.82493 0.82493 0.82493
50 0.76654 0.53714 0.53714 0.53714
60 0.42039 0.66878 0.66878 0.66878
70 0.93075 0.53190 0.53190 0.53190
80 0.28754 0.93558 0.93558 0.93558
90 0.82584 0.69174 0.69174 0.69174
100 0.38775 0.49565 0.49565 0.49565
</pre>
<p>It is interesting to note that the p2c translator converts Pascal single
precision FP to C single, while the real, double and extended types
all convert to C double. This is a format that keeps precision up to
around x<sub>80</sub>.</p>
<p>I have no data to substantiate the following, but my impression is that
C double FP coding is also on 64 bits, but with a different magnitude vs.
exponent distribution than for Turbo Pascal.</p>
<p><b>gcc under Linux</b></p>
<p>The above program, rewritten in C and compiled with gcc, naturally gives the very same
results as with p2c:
&nbsp;&nbsp;(<A HREF="misc/ward/caos.c.txt">text version</A>)
<pre>
#include &lt;stdio.h&gt;
int main() {
float f;
double d;
int i;
f = 0.5;
d = 0.5;
for (i = 1; i &lt;= 100; i++) {
f = 3.8 * f * (1 - f);
d = 3.8 * d * (1 - d);
if (i % 10 == 0)
printf ("%10d %20.5f %20.5f\n", i, f, d);
}
}
</pre>
<p><b>Java</b></p>
<p>The Java programming language is another case altogether, as
from the start it was designed to work on many different platforms.</p>
<p>A Java .class file contains the source program compiled in a Virtual Machine
Language format. This "executable" file is then interpreted on a client
box by whatever java interpreter is available.</p>
<p>However, the Java specification took FP precision very much into account. Any
java interpreter <strong>should</strong> perform single and double precision FP
calculations with precisely the same results.
<p>This means that one same program will:</p>
<p><ul>
<li>be executed with the same precision on different architectures (e.g. Intel, Motorola, Alpha, ...)</li>
<li>be executed with the same precision on a same architecture, even though the java language interpreter
is different.</li>
</ul></p>
<p>The reader can easily experiment these facts. The following applet calculates
the May series we have been talking about. Compare its results on your own setup, viewed
with Netscape, HotJava, appletviewer, etc. You could also compare with the same
browsers, or others, under Windoze. Just open this page with each browser:</p>
<BLOCKQUOTE> <EM>
[The applet has been removed from the TWDT version to prevent possible
problems with browsers that don't do Java properly.
To view the standalone article with the applet, click
<A HREF="ward.html">here</A>. -Ed.]
</EM> </BLOCKQUOTE>
<p>I have, so far, only found one single exception to this rule. Guess who?
Microsoft Explorer 3.0!</p>
<p>Finally, the java source file was:
&nbsp;&nbsp;(<A HREF="misc/ward/caos.java.txt">text version</A>)
<pre>
import java.applet.Applet;
import java.lang.String;
import java.awt.*;
public class caos extends Applet {
public void paint (Graphics g) {
float f;
double d;
String s;
int i, y;
f = (float)0.5;
d = 0.5;
g.setColor (Color.black);
g.drawString ("k", 10, 10);
g.drawString ("float", 50, 10);
g.drawString ("double", 150, 10);
g.setColor (Color.red);
y = 20;
for (i = 1; i <= 100; i++) {
f = (float)3.8* f * ((float)1.0 - f);
d = 3.8 * d * (1.0 - d);
if (i % 10 == 0) {
y += 12;
g.drawString (java.lang.String.valueOf(i), 10, y);
g.drawString (java.lang.String.valueOf(f), 50, y);
g.drawString (java.lang.String.valueOf(d), 150, y);
}
}
}
}
</pre>
<hr>
<p><b>Further reading</b></p>
<p><i>An introduction to Chaotic Dynamical Systems</i>,
R.L. Devaney</p>
<p><i>Jurassic Park I and II</i>, Michael Crichton (the books, not the films!)</p>
<p><i>The Intel 386-SX microprocessor data sheet</i>, Intel Corp. (available at http://developer.intel.com)</p>
<!-- *** BEGIN copyright *** -->
<P> <hr> <!-- P -->
<H5 ALIGN=center>
Copyright &copy; 2000, Alan Ward<BR>
Published in Issue 53 of <i>Linux Gazette</i>, May 2000</H5>
<!-- *** END copyright *** -->
<center><H2>
<A HREF="http://www.linuxgazette.com/">
<IMG SRC="../gx/newlogo.jpg" width=600 height=256 border=0
ALT="Linux Gazette... making Linux just a little more fun!"></a>
</H2>
<H4>Published by <A HREF="http://www.linuxjournal.com/"><I>Linux Journal</I></A></H4>
</center>
<P> <hr> <P>
<H1><font color="maroon">The Back Page</font></H1>
<ul>
<li><a HREF="#authors">About This Month's Authors</a>
<li><a HREF="#notlinux">Not Linux</a>
</ul>
<a name="authors"></a>
<P> <HR> <P>
<!--======================================================================-->
<center><H3><font color="maroon">About This Month's Authors</font></H3></center>
<P> <HR> <P>
<!--======================================================================-->
<!-- BEGIN bio -->
<P>
<H4><IMG ALIGN=BOTTOM ALT="" SRC="../gx/note.gif">Paulo Henrique Baptista de Oliveira</H4>
I am 23 years old. I have been using computers since age 15, from MSX Hotbit
to Linux GNU/Debian 2.2. I currently work at Linux Solutions at Brazil. We
mantain a site OLinux
(<A HREF="http://www.olinux.com.br">www.olinux.com.br</A>) with a Introduction,
Programming, Programs, Games, Security and Interviews sections and news about
Linux everyday of the week. We have gotten a lot of positive feedback from
Brazilian Linux users. We have already published more than 100 articles and 500
news items in about 4 months.
<P>
<H4><IMG ALIGN=BOTTOM ALT="" SRC="../gx/note.gif">Konstantin Boldyshev</H4>
Konstantin Boldyshev is software engineer, his primary work areas are
assembly and C system programming, networking & and internet, embedded
systems. Mostly known to community as Assembly HOWTO maintainer,
asmutils author, and linux assembly hacker.
He is maintainer of the <A HREF="http://linuxassembly.org">"Linux Assembly"</A>,
Linux/UNIX assembly programing portal.
<P>
<H4><IMG ALIGN=BOTTOM ALT="" SRC="../gx/note.gif">Shane Collinge</H4>
Part computer programmer, part cartoonist, part Mars Bar. At night, he runs
around in a pair of colorful tights fighting criminals. During the day... well,
he just runs around. He eats when he's hungry and sleeps when he's sleepy.
<P>
<H4><IMG ALIGN=BOTTOM ALT="" SRC="../gx/note.gif">Fernando Correa</H4>
Fernando is a computer analyst just about to finish his
graduation at Federal University of Rio de Janeiro. Now, he has built
with his staff the best
<A HREF="http://www.olinux.com.br">Linux portal</A> in Brazil and have further
plans to improve services and content for their Internet users.
<P>
<H4><IMG ALIGN=BOTTOM ALT="" SRC="../gx/note.gif">Pat Eyler</H4>
"Pate" is a linux/unix/networking geek who enjoys playing on the
command line. When he's not puttering with or writing about computers
and networks he likes to play with his kids, cook, and read. Talk to
him at <a href=mailto:pate@gnu.org>pate@gnu.org</a>.
<P>
<H4><IMG ALIGN=BOTTOM ALT="" SRC="../gx/note.gif">Sean Lamb</H4>
I'm currently working on completing my BS degree in Computer Science at Lakeland
College (begun earlier at the University of California, Riverside). I've been
involved in computer support for the past 6 years, via phone, fax, and email,
and I have created documentation for use by end users (some articles in the
Microsoft Knowledge Base) and other support staff (published in-house as either
individual documents or on the support intranet), and I contributed some
chapters to "Special Edition Using KDE" from Que publishing (now in print). I
have done some application development on MS-DOS platforms and have begun
developing a pair of applications for my Linux box. I am currently employed as
a software developer working in C++ with Informix on a mix of Linux and AIX
servers. When I'm not playing with or writing about Linux, I can usually be
found working on my model railroad.
<P>
<H4><IMG ALIGN=BOTTOM ALT="" SRC="../gx/note.gif">Ben Okopnik</H4>
A cyberjack-of-all-trades, Ben wanders the world in his 38' sailboat, building
networks and hacking on hardware and software whenever he runs out of cruising
money. He's been playing and working with computers since the Elder Days
(anybody remember the Elf II?), and isn't about to stop any time soon.
<P>
<H4><IMG ALIGN=BOTTOM ALT="" SRC="../gx/note.gif">Juraj Sipos</H4>
I live and work in Bratislava, Slovakia as a library
information worker, translator and research reader at the Institute for
Child Psychology. I published some of my poetry here and in USA, I
translated some books from English (e.g., Zen Flesh, Zen Bones by Paul
Reps). You can see some of my stories and poetry at
<A HREF="http://www.crosswinds.net/~aproximetri/index.htm">
http://www.crosswinds.net/~aproximetri/index.htm</A>.
Computers are my hobby.
<P>
<H4><IMG ALIGN=BOTTOM ALT="" SRC="../gx/note.gif">Robert Stagner</H4>
Robert has been programming in Perl on the Win32 and Mac
platforms for the past three years. He's been using Linux for the last year,
and simply loves it. When he is not programming in Perl or creating shell
scripts, he spends time with his lovely wife.
<P>
<H4><IMG ALIGN=BOTTOM ALT="" SRC="../gx/note.gif">Alan Ward</H4>
Alan teaches CS in Andorra at highschool and university levels. He's
back to Unix this year after an 8-year forced interlude since he
graduated -- it makes networking so much easier. His hobbies include
science photography (both digital and traditional), trekking, rock and
processor collecting.
<!-- END bio -->
<a name="notlinux"></a>
<P> <hr> <P>
<!--====================================================================-->
<center><H3><font color="maroon">Not Linux</font></H3></center>
<P> <HR> <P>
<!--======================================================================-->
<P>
<!-- *** BEGIN Not Linux *** --->
<P> Last month I said <EM>Linux Gazette</EM> would have a new Editor.
The announcement turned out to be premature, so I am remaining the Editor
for the time being.
<P> Thanks to SOFCOM for offering the <EM>Gazette's</EM> first
<A HREF="http://www.sfcom.com/"><STRONG>Japanese translation</STRONG></A>.
You've been added to the <A HREF="../mirrors.html">mirrors page</A>.
I'll have to take our readers' word for it that the site is displaying
correctly, since my browser doesn't do Japanese characters.
<P> This issue features four articles from the OLinux site in Brazil (<A
HREF="http://www.olinux.com.br">http://www.olinux.com.br</A> -- Portuguese).
Fernando Correa and Paulo Baptista have been very cooperative with
<EM>LG</EM>, translating their interviews with Linux personalities for us
and the like. We at <EM>Linux Gazette</EM> like to see the growth of Linux in
non-English- speaking countries, and we're happy for the work OLinux is doing
with their Brazilian portal. Latin America has experienced tremendous growth
in Linux use over the past year, as Mexican schools have adopted it as a
low-cost alternative to Windows, and Conectiva has released native Spanish and
Portuguese Linux distributions. We'd like to cover more such endeavors in
other parts of the world, if readers would be willing to send in reports from
their country or translate some of their articles into English for us.
<P> This issue marks the debut of a new <EM>Linux Gazette</EM> logo and
navigation buttons. As you know, some readers have said it's time for
something new, so we're giving it to them. The blue-silver chrome color was
chosen for its "industrial" look, to represent that <EM>Linux Gazette</EM> is
about putting Linux to work, getting it to do what you need. Of course, it's
still about making Linux just a little more fun, too!
<P> After all, if your work is chosen carefully, so that it furthers your
personal goals (whatever they are), then the work will be fun. For instance, I
enjoy Python and Zope, so I'm happy that my work gives me the chance to learn
stuff I'd want to learn anyway.
<P> Michael Orr<br>
Editor, <A HREF="http://www.linuxgazette.com/"><i>Linux Gazette</i></A>, <A
HREF="mailto:gazette@ssc.com">gazette@ssc.com</a>
<BR CLEAR="all">
<!-- *** END Not Linux *** --->
<!-- *** BEGIN copyright *** -->
<P> <hr> <P>
<H5 ALIGN=center>
This page written and maintained by the Editor of the <I>Linux Gazette</I>.<BR>
Copyright &copy; 2000, <A HREF="mailto:gazette@ssc.com">gazette@ssc.com</A><BR>
Published in Issue 53 of <i>Linux Gazette</i>, May 2000</H5>
<!-- *** END copyright *** -->
</BODY></HTML>