[Top] | [Contents] | [Index] | [ ? ] |
This file documents the contents of the GNU MS-DOS Software CD-ROM, Edition 1.0.
This is Edition 1.0.
Preface 1. Overview 2. Installing the Software 3. Documentation on the CD-ROM 4. Packages on this CD A. Background Information B. Copying Conditions for GNU Software Index
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
This book includes software on a CD-ROM that will make your MS-DOS/MS-Windows(1) system significantly more powerful. The GNU Project has spent the past decade developing a Unix-like operating system called GNU. (See section The GNU Manifesto.) Various components of the system have been released over the years, and many of them have been ported to MS-DOS and MS-Windows. The reason for this book and the CD-ROM is to provide a convenient resource for the users of GNU software on MS-DOS and MS-Windows platforms--and to raise money for the Free Software Foundation to develop more GNU software.
The programs on this CD-ROM can be of interest to several kinds of computer users and may be used for a wide variety of computer-oriented tasks. All of the programs are described in 4. Packages on this CD; here we give only a very brief overview of some of the things they can do.
If you use a computer, you will need to edit text files and work with
files, for example move, copy them, and browse their contents. The
CD-ROM includes such programs as Emacs, which is an extremely
powerful text editor, ls
, which can list files in many different
formats, mv
to move and rename files and directories, and
awk
and sed
for text-processing tasks. If you are
accustomed to GNU/Linux and Unix systems, you will be able to use the
same tools and commands you have on those systems.
Many programs on this CD-ROM are tools for software developers. You
can write C and C++ programs using the DJGPP and Cygnus ports of
GCC, which is a C/C++ compiler, accompanied by a POSIX-compliant C
library and GNU C++ class libraries, including an implementation of
STL, the Standard Template Library. Program maintenance utilities
such as make
and RCS, the Revision Control System, are also
included on the CD-ROM. Emacs can run compilers and includes many
commands and packages which are meant to be used by software developers.
Other programs let you perform tasks which are hard or impossible to do
on a standard MS-Windows/MS-DOS machine. For example, a utility called
less
lets you page back and forth through files, view several
files at once, and run other programs while browsing; TeX and Groff
are two packages for typesetting documents and books, viewing them, and
printing them on several popular printers; info
and Emacs can be
used to read software documentation; Emacs has commands to read
electronic mail; etc.
All the software on this CD-ROM is Free Software. This means you are free to redistribute the programs, free to make changes--even free to sell copies, provided you sell them as free software. The full source code is included on this CD-ROM. See section The GNU Manifesto, and GNU General Public License, for more information.
The Free Software Foundation is a tax-exempt charity for free software development. See section What is FSF?. By buying this book, you help support our work. If you do sell copies of the programs on this CD-ROM, we hope you'll donate some of the proceeds to the Free Software Foundation or some other free software development project.
Style Conventions Acknowledgments Technical Non-Support Why we don't offer support to specific users. Reporting Bugs Please do report bugs. Contacting the Foundation How to get in touch with us.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Here are some style conventions used in this book (and in all GNU manuals):
A cross reference looks like this:
See section Style Conventions. |
If you view this book in the Info hypertext system (see section How to Run info
), you can follow these cross references to other
parts of the book.
We use this font
to represent names of programs, commands and
functions. We use the same font with quotation marks, `like this',
to represent whole commands, option names, file names, and such.
We use this font to represent a meta-syntactic variable (something you should replace with suitably chosen text, according to what you want to do).
We use this font when we introduce and define a new English term or name.
For emphasis, we use this.
MS-DOS and MS-Windows use the backslash character `\' to separate directories in a file name, as in `c:\windows\system\vbrun300.dll'.(2) In contrast, Unix uses the forward slash character `/' for this purpose, as in `/usr/local/bin/emacs'.
The programs on this CD-ROM support both styles of slashes, for the
sake of portability: for example, make
can run makefiles written
for Unix, you can write shell scripts that will work on both DOS and
Unix, etc. (This also makes the lives of people who work on both types
of platforms easier.) Therefore, most of the file names in this book
could have been written with either style. We generally use backslashes
in this book because DOS users are accustomed to them.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
This project was a long time in the making, and would not have been completed without the help of a number of talented and generous individuals. Our thanks go to all of them.
Much of the work of porting the programs on this CD-ROM is due to DJ Delorie, Charles Sandmann, Morten Welinder, Eli Zaretskii, and the rest of the DJGPP development team which ported GCC and other GNU packages to MS-DOS, and wrote a C library and auxiliary development tools to go with them. Most of the programs here would not have been available to MS-DOS/MS-Windows users without their effort.
Thanks to Douglas Alan, Peter G. Ford, and Joan C. Quigley for lending their time and equipment to produce test CDs.
Thanks much to Danilo Almeida, Holmes Boroughf, David Caswell, Robert J. Chassell, Bradley Dilger, James DuPrie, Nico Garcia, Joseph Harrington, David Krikorian, and Ron Weiss for testing the CD-ROM and reading the manual.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
The GNU Project and the Free Software Foundation do not provide technical support for the software on this CD-ROM.
In this book we have done our best to explain how to install the software on your machine. In the manuals (all included on the CD-ROM, and some also published on paper by the Free Software Foundation) we've done our best to explain how to use the software. We prefer this method of helping users because it is efficient--we write something once, and many people can read it. We don't offer support to specific users because that is an inefficient way of using our time to help the community.
This policy is so unusual that it calls for an explanation. Unlike a software company, we don't say that we publish this book and CD for the sake of the people who buy them. Our mission is to serve a much larger community, people who use free software, or might use it in the future if we make it do more.
Paradoxically, a "software company" is not a company whose purpose is writing software. These companies' purpose is profit; they write software as a means to sell copies and collect money. For software companies, making better software is merely one way of getting more customers. Technical support is another way of getting more customers. So they do some of both.
By contrast, the Free Software Foundation really does exist to write free software. We raise money to write software, not vice versa. We ask for donations so we can write more free software, and we publish books and CD-ROMs so we can write more free software. We hope one of your reasons for buying this book and CD-ROM is to help us do that.
Therefore we spend all available funds on improving software and documentation, not on helping users one by one.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Instead of offering to help you when you find a bug, we do the opposite: we ask you to help us. We ask you to send a bug report, so we can fix the bug.
Since this is the first release of the CD-ROM, there are probably some bugs in the installation software, despite our testing. We are very interested in hearing about any such bugs, so we can fix the problems in future releases. To report a bug either with the CD-ROM or with this book, send electronic mail to bug-gnu-cdrom@gnu.org.
Each program on the CD-ROM has a maintainer whose mission is to fix bugs. Each program should include information about where to send bug reports. So if you encounter a bug in one of the programs on the CD-ROM, please do send a bug report to the program's maintainer. The maintainer will try to fix the bug for the next version. If your bug is new, the maintainer may also send you a patch to try, if he finds that convenient.
The manuals for GNU Emacs and the GNU C Compiler contain sections explaining how to write a bug report so that it will actually enable the maintainer to fix the bug. Most of the advice applies to any program. So if you would like a bug to be fixed, please follow this advice.
If your problem doesn't seem to be a bug, or if after sending the bug report you hope someone can help you work around the problem, one way to get help is by posting questions to pertinent Usenet news forums. Since most programs on this CD-ROM were compiled with the DJGPP tools, one good place to ask is on the DJGPP news group, `comp.os.msdos.djgpp'. (If you don't have access to Usenet news, send electronic mail to djgpp@delorie.com.)
The DJGPP FAQ list includes solutions for many common problems with setting up DJGPP-compiled programs. See section `Top' in DJGPP FAQ list, for details.
An HTML version of the FAQ list is also available on this CD-ROM in the file `\docs\djgppfaq.html'; you can read it with your favorite Web browser.
If you encounter problems while installing or using the native Windows version of GNU Emacs (a.k.a. NTEmacs), the file `\ntemacs\README.NT' on the CD-ROM might solve some of your problems. The NTEmacs FAQ is at http://www.cs.washington.edu/homes/voelker/ntemacs.html. There is also a mailing list for discussing issues related to NTEmacs. The list address is ntemacs-users@cs.washington.edu. For information about the list, send a message to ntemacs-users-request@cs.washington.edu with the word `info' in the body of the message. To subscribe to the list, send a message to the same address with the word `subscribe' in the body of the message.
If you encounter problems while installing or using the Cygnus ports of GNU programs, consult the file `\cygnus-ports\FAQ'.
If you want support badly enough to pay for it, please see the GNU Service Directory. This is a list of people and companies that offer technical support for GNU software for a fee. A copy is in the file `SERVICE' in the top-level directory of the CD-ROM. Please contact the Foundation if you want to be listed in the Service Directory.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
The Free Software Foundation is a tax-exempt charity, dedicated to development of free software. See section What is the FSF?, for general information about the Foundation and its goals. The Foundation's phone number is +1 (617) 542-5942. Please call us for further information regarding the Foundation or making a tax-deductible donation.
Our address is:
Free Software Foundation, Inc. 59 Temple Place - Suite #330 Boston, MA 02111-1307 USA |
You can also reach us via the fax or the Internet:
Fax: +1 (617) 542-2652 e-mail: gnu@gnu.org WWW: http://www.gnu.org |
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
This CD-ROM contains a collection of programs and utilities that run on MS-DOS and MS-Windows. Most of these utilities were developed by the Free Software Foundation for use as part of the GNU operating system (see section The GNU Manifesto).
A number of volunteers (see section Acknowledgments) made the effort to port these high-quality tools to Microsoft operating systems such as MS-DOS and MS-Windows. As a result of these efforts, the programs on this CD-ROM not only run on these systems, but also extend their functionality to make them more like a Unix or GNU system. For example, all DJGPP programs can pass long command lines to their children (forget the dreaded DOS 126-character limit!), they have built-in support for shell wild-card expansion, and they can execute shell scripts.
The bulk of the programs in this collection were compiled with DJGPP tools. While DJGPP produces 32-bit protected-mode programs which are free of the infamous DOS memory limitations, they are DOS executables, not native Windows applications.
However, these programs should also be useful on MS-Windows (both Windows 3.X(3) and Windows 9X/NT(4)), for these reasons:
However, these programs do not support long file names on Windows NT; the implementation method used for Windows 9X is not applicable to Windows NT.
We provide Windows-specific ports of certain GNU programs for which it makes a big difference. For example, this CD-ROM includes NTEmacs, which is GNU Emacs built to run native on Windows 9X/NT platforms. This port of Emacs supports asynchronous subprocesses. Other native Windows ports of GNU software are included on the CD-ROM in the `\cygnus-ports' directory. These Windows-specific executables support long file names on Windows NT as well as on Windows 9X.
Unfortunately, Windows-specific executables might need a proprietary compiler to build them from sources; DJGPP cannot build native Windows executables. We hope in the future that the GNU compiler and other tools will be capable of building them, but we cannot promise that someone will do the work.
What is in this Manual? Hardware Requirements What hardware will run these programs? Operating System Requirements Operating systems supported by these programs. Programs to Try Organization of the CD-ROM
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
This manual gives you enough information to install the programs on the disk, read their manuals, and deal with problems. It does not document the programs themselves except in brief summary form. Detailed documentation is available in the `\info' and `\man' directories (for reading with the on-line Info browsers and man page readers) and in the `\docs' directory (ready-to-print documentation, general `README' files, `FAQ' files, etc.).
This chapter gives an overview of the rest of the manual, the basic system requirements for using the software on the CD-ROM, a brief introduction to some of the programs, and the layout of directories on the CD-ROM.
Chapter 2 tells you how to install the software and how to deal with some potential installation-related problems.
Chapter 3 explains how to access and read the documentation for each program (both on-line and on paper).
Chapter 4 gives summary descriptions of all the packages on the CD-ROM. These descriptions are similar to those in the GNU's Bulletin, published twice a year by the FSF (see section Contacting the Foundation).
Appendix A presents several articles about the GNU project and the Free Software Foundation, including The GNU Manifesto, Richard Stallman's original paper on why we believe software should be free of restrictive intellectual property rights laws.
Appendix B gives the two license documents that cover the software on this CD-ROM. These documents are the legal basis for your freedom to share GNU software; you can also use them to make your own software free.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
To run the programs on this CD-ROM, your machine needs to meet the following minimum hardware requirements:
du
("disk usage") program on this CD-ROM to see how much space is
required to copy a particular directory.
MSCDEX
and low-level
CD-ROM drivers are loaded in your `CONFIG.SYS' and
`AUTOEXEC.BAT'. (Machines which run Windows 9X or Windows NT
usually load the CD-ROM support drivers automatically when a CD
drive is present.)
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
The programs on this CD-ROM will run on MS-DOS and compatible
systems---MS-DOS version 3.0 or later. Most programs
are 32-bit protected-mode DOS executables, and will work in any
environment that can run DOS programs and provide DPMI services to
them.(5) Any operating system that has a "DOS
Box" will be able to run these programs. Specific environments known
to run these programs, apart of native MS-DOS, are: DR-DOS
(version 4 or later), Novell's NWDOS, FreeDOS, Windows 3.X, Windows 9X,
Windows/NT, OS/2, as well as DOSEmu on Linux-based GNU systems. The
CD-ROM includes a free DPMI server CWSDPMI
, for those systems
which don't have built-in DPMI services. The programs are built in such
a way that they load CWSDPMI
automatically if DPMI services are
unavailable, and unload it when they exit.
Some programs on this CD-ROM, such as NTEmacs, are native Windows
9X/NT applications, and will only run on Windows/NT or Windows 9X.
(Note that NTEmacs will not run on Windows 3.X, even if you
have the Win32s
extension installed.)
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
This CD-ROM includes many programs, with many different areas of functionality. In order to give you a brief idea of what is on the disk and what you can do with this software, we have included here a brief list of programs to try. For a complete list, see 4. Packages on this CD.
Emacs is a text editor and a lot more. Emacs was originally designed for use with terminals that had no mice or window systems, and still supports this mode very well (even on a modem at 300 baud). However, it also supports mouse, menu bar, pop-up menus and other modern features of graphical user interfaces, even on plain MS-DOS.
Emacs is very flexible: you can remap your keyboard and Emacs's menus to put functions you use a lot in convenient places, and you can define macros to do anything you like.
But the real strength of Emacs is its extensibility. Much of Emacs is written in a special dialect of Lisp, allowing the user to customize almost any aspect of how Emacs works. Many people have written hundreds of extensions for dealing with particular file formats or doing specialized tasks; the most popular of these extensions are part of the standard Emacs distribution and are included on this CD-ROM. These extensions make Emacs much more than just an editor: it is really a working environment chock-full of features, suitable for many tasks usually performed with other tools.
For example, Emacs provides special editing modes for many common programming languages and text formatters (such as TeX and LaTeX). These modes can balance parentheses and other grouping symbols for you, indent your code for readability (according to language-specific rules you control), and highlight parts of the code with different fonts and colors. They can even interpret compiler/formatter error messages, read in the files that had errors, and put your cursor on the offending lines.
Emacs knows which editing mode to use for a file based on the file's extension or on a comment you insert in the file itself.
Emacs also has modes for reading, sending, and managing electronic mail, and for reading on-line documentation. You can use it to "edit" directories on your hard disk, you can edit ASCII graphics, or you can use it as a scientific calculator, capable of doing calculus. And in case you are curious about unusual facts, you can refer to any of the three Mayan calendars or check what the phase of the moon will be on your birthday 25 years hence. For more information, consult the Emacs documentation on this CD-ROM (see section 3. Documentation on the CD-ROM).
TeX is a free general-purpose typesetting program, used to typeset books, as well as other kinds of documents. The printed version of this book was typeset with TeX.
TeX is also the standard typesetting language of the scientific world; all scientific journals require that papers submitted for publication be typeset in TeX.
This CD-ROM includes a full implementation of TeX ported to MS-DOS. Together with Texinfo, the GNU documentation system, TeX puts at your fingertips a complete environment for producing and typesetting documents. The TeX package also includes drivers for printing typeset documents on popular printers and for viewing them on your screen.
bc
is an interactive algebraic language with arbitrary precision
numbers. With the GNU bc
you get an interpreter for that
language and an RPN calculator called dc
.
Calc is an extensible, advanced desk calculator and mathematical tool written in Emacs Lisp and used within Emacs. You can use Calc just as a simple four-function calculator, but it has many more features, including choice of algebraic or RPN (stack-based) entry; logarithmic, trigonometric, and financial functions; arbitrary precision; complex numbers; vectors; matrices; dates; times; infinities; sets; algebraic simplification; and differentiation and integration. Calc is sometimes described as a "poor man's Mathematica."
Ispell is a customizable spelling program. You can easily teach it new words and build custom dictionaries, which is very useful when you need to switch between different styles of writing. Ispell can spell-check both British and American English, as well as some other languages.
less
is a text file browser similar to more
and pg
,
but with various features that most other pagers lack. For example,
less
can scroll backwards or horizontally; mark several places
and jump from one marked place to another; view multiple files;
highlight man pages; search for regular expressions; and run programs
and pipe to them parts of the text you are browsing.
For power-users, this CD-ROM contains enough utilities to get your system to do new things that would take you hours to do by hand.
Bash (Bourne Again SHell) is the GNU shell. It is compatible
with sh
, and offers many extensions from ksh
and
csh
. If you are used to a Unix-like environment, you will
probably want to make Bash your default interactive shell; if not, try
it anyway: it is so much more powerful than stock
MS-DOS/MS-Windows command interpreters, that you might wonder
how you managed without it.
There are a number of simple utilities from the Text and Shell Utilities
packages that can be combined using the gawk
language to do many
different tasks, including arbitrary sorting, searching, and report
generation--almost any generalized textual manipulation you can
imagine. Also available is Perl, Larry Wall's "Practical
Extraction and Report Language." These programs automate simple tasks,
especially when combined in a pipeline (whereby output of one
program serves as input to another). For example, if you must create 30
directories with names of the form `disk-number', you can
write the command on a single line using these utilities.
If you have ever lost track of a file in the depths of your disk, you
will appreciate the power of the GNU find
command, which allows
you to locate files according to many kinds of criteria. For instance,
you can combine the power of find
with grep
to locate all
files on your hard disk modified within the last seven days containing
the word "Emacs."
Be sure to look at the many file utilities, such as ls
and
rm
, found in the Fileutils package. The GNU versions of these
programs are more easily customized than their MS-DOS equivalents
and also have many more features. For example, ls
has an option
to print different types of files in different colors, cp
can
create backups for files it overwrites with newer versions, and
rm
can recursively delete whole directory trees.
The Textutils and Sh-utils packages contain other basic utilities that are useful with Bash.
To help you regain room on your already full disk, take a look at
gzip
. It is the standard file compression utility for the GNU
project, and has become the de facto compression standard for the
Internet. It works with many different computer operating systems, and
it compresses files as well as or better than any other general-purpose
compression program that we know of.
sed
is a simple program for altering a stream of text. It is
especially useful for editing very large files (since it doesn't read
the entire file into memory), or when the editing commands are too
complicated to be comfortably typed interactively. sed
is often
used as a filter in pipelines, to change or delete parts of the
output from one command before feeding it to another command.
A large part of the GNU Project's initial efforts were directed towards producing high-quality programming tools.
DJGPP is the MS-DOS port of GCC, the GNU C Compiler. It is a fully compliant ANSI C and C++ compiler. There is also a compiler for Objective-C. GCC's optimizer has been written to maximize performance on many different CPUs, including the 386; DJGPP is believed to produce code that is generally equal or superior to top commercial compilers for MS-DOS. The DJGPP C library, written by DJ Delorie for the DJGPP project, is highly ANSI- and POSIX-compliant, and makes writing portable programs very easy. The GNU C++ class library is provided to support writing C++ programs.
Make is the tool for building large projects. The MS-DOS/DJGPP port of Make supports shells such as Bash, long command lines, drive letters in pattern rules and dependencies, and many other features that let you run existing Makefiles unaltered and construct complex Makefiles for your projects.
The CD-ROM also has
many other development tools which are standard on Unix and GNU systems but
usually unavailable on MS-DOS and MS-Windows. These include the Binutils (assembler, linker,
profiler, strip
), Flex (a lexical analyzer generator), Bison (a
parser generator), the Diffutils (programs to compare source/text and
binary files), indent
(a program source beautifier), patch
(a program to apply output of diff
to source and binary files),
and others. Combined with Bash, the Fileutils, the Textutils and the
Sh-utils mentioned earlier, these tools make a powerful and coherent
development environment.
The ID utilities, a recent addition to GNU tools, make many
text-searching tasks, such as finding the source files that
#include
a given file, very fast.
GDB is a source level debugger for C and C++ programs. If you program, you will make bugs. GDB can help you track them down.
RCS (the Revision Control System) keeps track of changes in source files and other files. Using RCS, you can view how your source files have changed over time, or merge changes made by different people into one version.
Groff is a document formatting system for documents whose sources are written in the Troff language; it is most often used for formatting man pages for viewing and printing.
And, of course, Emacs is the editor of choice for many programmers, since most of its features were written by programmers for tasks associated with writing programs.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
The programs on this CD-ROM are organized into a few main directories: `bin', `include', `lang', `share', `lib', `info', `gnu', `docs', `man', `zoneinfo', `ntemacs', `cygnus-ports', `src' and `utils'. Each directory contains different types of programs, packages, and files. Here is a brief description of these main directories and their contents, as well as some of the more important subdirectories and their contents. (Names of some of the files and directories will be truncated to 8+3 limits on MS-DOS systems.)
Executable programs you can run. Programs run by other programs are also kept here.
The standard C include files (a.k.a. header files).
Language-specific include files for languages other than C.
C++ include files. Many C++
include files aren't
compatible with the standard C includes, so the two sets are separated.
Objective C include files.
Auxiliary data files. These are used by the programs in `bin'. Some files and subdirectories are listed below.
The TeX and
METAFONT
files, including fonts, macro packages, and pre-dumped format files.
They are also used by the DVI drivers such as dvips
and
dvilj4
.
The standard macro packages, fonts and drivers for different "devices" (such as ASCII text and PostScript formats) used by Groff.
The default list of words that are ignored by keyword-indexing programs from the Groff package.
The map of languages and corresponding scanners used by ID-utils.
Fonts and configuration files used by the enscript
program.
Libraries for linking programs, and configuration files used by Bison and GCC. Some files and subdirectories are listed below.
The dictionaries that Ispell uses for correcting spelling. They are not in a human-readable format.
Database used by locate
(from GNU Findutils) to quickly locate
files on this CD-ROM.
Documentation in Info format, for all the programs on the CD that have Texinfo manuals. Info format is not available for all programs; look in 4. Packages on this CD, to see which types of documentation are available for different packages.
See section How to Run info
, for information on accessing this
documentation.
Time-zone definition files for the C Library (such as if/when daylight
savings time is used in different areas of the world). You should point
your TZ
environment variable to the file in this directory whose
name is the name of the country/state where you live.
The bulk of the formatted documentation for the CD-ROM: all the
documentation of GNU software is here, formatted as PCL, HTML and
PostScript files (see section 3. Documentation on the CD-ROM). This directory also contains
other documentation formatted as ASCII text, like some general README
files and FAQs (lists of Frequently Asked Questions). (Other
directories containing on-line documentation are `info' and
`man', which contain Info and man
-page style documentation,
respectively.)
Formatted man
pages. These document some of the programs that
don't have Info documentation yet. You can browse these pages with
less
(or any other program that can display bold and underlined
letters), or with the M-x man command in Emacs.
The source (unformatted) man pages are in the source directory of each package.
The parent directory for sources of all GNU packages.
The `emacs.exe' executable and a few programs that Emacs calls.
The Emacs Lisp library, which contains the source code for much of Emacs.
Additional Emacs Lisp packages, distributed separately from Emacs. (If you mount the CD-ROM on plain MS-DOS, this directory is called `site-lis', since only 8 characters are allowed in a file name.)
On-line manual for Emacs and its major packages.
Information files that Emacs uses and some general-interest information about the Free Software Foundation.
Source code for the non-GNU packages on this CD-ROM. In particular, the sources of the DJGPP C library and tools written specifically for DJGPP are in this directory.
The sources of the DJGPP C library.
The native Windows NT/9X version of GNU Emacs.
The native Windows NT/9X ports of Bash, tar
and other GNU
software. These ports were done using the Cygnus development tools.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
This chapter describes how to install and get started with the utilities on this CD-ROM. It also explains how to deal with some common problems. We start with two automatic installation procedures.
The copying installation procedure copies all the programs and the data files from the CD-ROM to your hard disk, so that you can run them quickly and do not need to keep the CD-ROM mounted. However, it supports only Windows 9X and Windows NT systems.
The run-from-the-CD installation procedure works by arranging to run the GNU programs directly from the CD-ROM, and supports all platforms, including MS-DOS and MS-Windows 3.X. It does not require any disk space, but you need to keep the CD-ROM mounted whenever you want to run any of the GNU programs.
The section "Hard Disk Installation" describes how to copy some of the programs to your hard disk, while leaving others only on the CD-ROM. Many of the programs are quite large, and you might prefer to run them from the CD-ROM to save disk space. Emacs, one of the larger programs, can take as much as 50 Megabytes for a full installation. However, if you want instant access to some or all programs, or if you need to recompile them, you will need to install them on your hard disk.
The section after, "Manual installation," is useful if you want to keep full control of your system configuration, or if automatic installation is inappropriate for your system.
Then comes a section about installing NTEmacs and the Cygnus ports of other GNU software for Windows. (Copying installation on Windows 9X/NT takes care of NTEmacs; the Cygnus ports are still experimental and not installed by either automatic procedure.)
The chapter finishes with sections about rebuilding packages from the source code, and troubleshooting common problems.
If you are unsure which installation method is best for you, please read the first paragraphs of each of the sections "Copying installation," "Run-from-the-CD Installation," "Hard Disk Installation," and "Manual Installation," so you can judge how well each option will suit you.
Copying installation Windows installation copying to your disk. Run-from-the-CD Installation Set up the programs to run from the CD-ROM. How automatic installation works Installing some of the files on your hard disk Install some of the programs on your hard disk. Manual Installation Windows Programs How to set up native Windows NT/9X ports of GNU software. How to rebuild a package from source code. Look here if you want to rebuild a package. Troubleshooting Fixing problems.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
The copying installation procedure copies all the programs and the data files from the CD-ROM to your hard disk, so that you can run them quickly and do not need to keep the CD-ROM mounted. It works only on Windows 9X and Windows NT systems; if your machine runs Windows 3.X, MS-DOS, or any other operating system, please see Run-from-the-CD Installation, or use the procedure for manually installing some of the programs on your hard disk, Installing some of the files on your hard disk.
To use the copying installation procedure, follow these steps:
Be sure to wait until the `BUSY' light of the CD drive goes off, before you proceed.
After copying all the files, `install.exe' creates some shortcuts (entries in the `Start' menu), which then appear on the desktop.
|
At this point, a shortcut icon called `README' is visible on the desktop. We recommend that you double-click on it, to display the installation and usage notes, and read them.
You are now ready to run the GNU programs copied from the CD-ROM.
For the convenience of Windows 9X users, `install.exe' creates a
shortcut called `Command Prompt', which is set up to start the
standard shell `COMMAND.COM', arranging for all the necessary
environment variables to be defined, and also adds the GNU programs'
directory to the value of the PATH
variable. This special
command prompt is the most convenient way of running GNU software on
Windows 9X, and we suggest that you always invoke them this way, since
it doesn't require changing `AUTOEXEC.BAT'.
If you prefer to be able to run the GNU programs from any command shell in any Windows 9X DOS box, you will need to edit `AUTOEXEC.BAT' and place there a call to `x:\fsf\w95fsfini.bat' (where x is the letter of the drive you selected when you ran `install.exe').
Users of Windows NT can run GNU programs from any DOS box without any changes in `AUTOEXEC.BAT'. Therefore, `install.exe' does not create the `Command Prompt' shortcut on Windows NT.
If you want to install other native Windows ports of GNU programs such as Bash and Tar, see Installing Cygnus ports of GNU Software. These Cygnus ports are not installed by default, as they are not as mature as the DJGPP ports and NTEmacs.
The full source of `install.exe', and the auxiliary files required to build it, are available in the root directory of the CD-ROM. However, note that in order to rebuild `install.exe', you will need to use a compiler that can produce native Windows applications. DJGPP, the compiler on this CD-ROM, cannot do that.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
The run-from-the-CD installation procedure sets up your system to run the programs directly from the CD-ROM. This means it does not require any disk space, but you need to mount the CD-ROM whenever you want to run any of the GNU programs. It handles all the supported platforms (see section supported platforms), including MS-DOS and MS-Windows 3.X.
This installation procedure is not entirely automatic. On most of the supported operating systems, installing software requires editing the system configuration files, `CONFIG.SYS' and `AUTOEXEC.BAT'. Most automatic installation procedures edit these files automatically, but users are often unhappy with the results.
The GNU CD-ROM is meant for serious PC users and developers, and we think that many of you do not want installation procedures to mess with your system configuration. So we decided not to make the installation procedures edit these files automatically. Instead, they create a batch file which does whatever ought to be necessary to prepare for running the GNU software from the CD-ROM. You can invoke this batch file from `AUTOEXEC.BAT', or manually. In rare cases, you will also need to make a couple of simple changes to your `CONFIG.SYS'; the installation program will tell you if you do.
We hope this will make for more reliable and easier installation. If you don't think so, please send us a bug report about the installation procedure. See section How to report bugs.
In general, MS-DOS is not case-sensitive, but Windows 9X and Windows NT preserve letter-case in file names. So in the following instructions, the capitalization won't matter for MS-DOS/Windows 3.X installations; but on Windows 9X/NT please observe the letter case of the file names, as shown below, when you install the programs.
The following instructions assume that your CD-ROM is drive `F:'. If your CD-ROM uses a different letter, replace `F' with the proper drive letter in these instructions.
This automatic installation procedure has been tested under MS-DOS and Windows 3.X, and on Windows 95 (though the copying installation procedure is usually preferable there). You're welcome to try it on other operating systems, but it might not work exactly as described below. If it doesn't work, please see Manual Installation.
To use Run-from-the-CD-ROM automatic installation, perform the following steps:
Be sure to wait until the `BUSY' light of the CD drive goes off, before you proceed.
You do this by entering the drive letter of your CD-ROM drive followed by a `:' at the prompt, like this: F: RET.
The automatic installation procedure will now examine your system configuration, create a batch file called `fsfcdini.bat' in the `\fsf' directory of your hard disk, and tell you to add a call to that batch file to `AUTOEXEC.BAT' (and possibly change a few lines in the file `CONFIG.SYS'). The message with this information is also saved in a file `fsfcdini.txt' in the same place as the batch file, so you can read the instructions again later.
Usually, you will only need to add a call to `fsfcdini.bat' somewhere near the end of `AUTOEXEC.BAT', like this:
call c:\fsf\fsfcdini.bat F: |
If `AUTOEXEC.BAT' defines multiple configurations, be sure to add a call to `fsfcdini.bat' in every configuration that needs to be able to run the CD-ROM programs. Alternatively, you might consider creating a separate configuration for using the software on the CD-ROM, and adding the call to `fsfcdini.bat' in that configuration alone.
Editing `AUTOEXEC.BAT' to call `fsfcdini.bat' when the system
boots is recommended when you intend to leave the CD-ROM in the
drive at all times. If not, it is better to run `fsfcdini.bat'
from the command line before you begin using the programs on the CD, and
run `fsfcdout.bat' when you are about to remove the CD from the
drive. `fsfcdout.bat' is created automatically when you run
`fsfcdini.bat'. When you run `fsfcdout.bat', it restores
PATH
to the value it had before `fsfcdini.bat' changed it.
This removes the directories on the CD-ROM from PATH
, so
that DOS/Windows won't try to access nonexistent directories.
Alternatively, you can manually remove the CD-ROM directories from
PATH
. In particular, if your system defines a PATH
that
is longer than 94 characters, you will need to do this manually, since
DOS command line size limitations will prevent `fsfcdout.bat' from
restoring it correctly.
Note that if your system supports more than a single CD-ROM drive, you will need to either put the FSF CD-ROM into the same drive you used when you ran the installation procedure, or call `fsfcdini.bat' with a different drive letter every time you change the drive.
In some cases, you will also be told to enlarge the environment size. This is done by editing the `SHELL=' line in `CONFIG.SYS'; see Troubleshooting, for detailed instructions.
This makes sure the new settings are in effect.
You are now ready to run programs from the CD-ROM.
Please note that some programs on the CD might require further setup
procedures beyond CD-ROM installation, if you want to tailor their
behavior to your preferences. For example, to customize Emacs, you will
need to create an init file `_emacs' on your hard disk and point
the HOME
environment variable to the directory of that file. The
on-line documentation (see section 3. Documentation on the CD-ROM) for each program describes
these setup procedures in detail.
If you install the CD-ROM on Windows 9X/NT, you can use the native Windows version of GNU Emacs (a.k.a. NTEmacs). NTEmacs needs additional setup, described in NTEmacs installation, which `setup.bat' does not perform, so you will need to do it yourself.
If anything during installation went wrong, please see Troubleshooting, later in this manual. The detailed description of the installation procedure below might also help you understand the cause of your problem and work around it.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Here we explain what the run-from-the-CD installation procedure does, and how. Knowing how installation works, you can work around any problems that occur. You can even recompile the installation program with DJGPP, since we provide its full documented source (the file `fsfcdset.c' in the root directory of the CD-ROM). However, please note that parts of the manual installation will need to be done before you will be able to recompile the installation program (unless a previous version of DJGPP is already installed on your machine).
The run-from-the-CD installation procedure uses the `setup.bat' batch file and the `fsfcdset.exe' program invoked by the batch file.
Here's what `setup.bat' does, step by step.
Part of setting up the CD-ROM consists of adding its `\bin' and
`\gnu\emacs\bin' subdirectories to PATH
(see section Organization of the CD-ROM). Also, you should set the DJGPP
environment
variable, and make the TEXMFLS_R
variable point to a writable
directory; otherwise, the TeX and DVI drivers won't be able to create
missing fonts and other files. In order to do this, you need enough
free space in your environment for the extra variables and values.
The additional variables are 72 characters long, so the installation procedure checks whether adding a 72-character string to your environment succeeds. If not, it asks you to enlarge your environment by editing the `CONFIG.SYS' configuration file and changing the `/E:' option to your `SHELL=' setting. See section Troubleshooting, for detailed instructions on how to enlarge the environment size.
Since there's no simple way to access the master DOS environment from a running program, the `setup.bat' batch file puts a 72-character variable into the environment and passes the name of that variable and its expected value to the `fsfcdset.c' program. This program checks whether the variable indeed has the full expected value; if it does not, it computes how many bytes should be added to the environment size by counting the number of characters that were truncated from the environment variable set by `setup.bat'. The results are displayed with the final instructions (see below).
The CD-ROM drive letter is required to generate the full name of the
`\bin' and `\gnu\emacs\bin' directories on the CD which should
be added to the PATH
setting (so you can run the programs from
any other directory). The installation program determines the
CD-ROM drive letter by looking at its own file name, as passed to it
by the operating system.
This step is done by the get_drive_letter
function on
`fsfcdset.c' source file (which you can find in the root directory
of the CD).
The boot drive is the drive from which MS-DOS system files are read during system start-up (a.k.a. "bootstrap"). The installation procedure creates the CD-ROM initialization batch file, `fsfcdini.bat', in the `\fsf' directory on the boot drive, so it needs to know which drive is the boot drive.
The function get_boot_drive
in `fsfcdset.c' performs this
test by calling a DOS function that returns this information. If that
DOS function returns an error indication, fsfcdset
defaults to
the `C:' drive.
If this test fails with an error message, or if it chooses a drive which programs cannot access, you can remedy the problem by invoking `setup.bat' again with the correct drive letter, like this:
setup d: |
When invoked this way, the program skips the boot drive detection.
When the installation procedure has determined automatically which boot drive letter to use, it verifies the choice by searching the root directory of that drive for the files `IO.SYS', `MSDOS.SYS', `IBMBIO.COM', `IBMDOS.COM', `CONFIG.SYS', and `AUTOEXEC.BAT'. If it does not find at least two of these files, it prints a warning urging you to check whether the choice of drive is really the proper one. If it is not, rerun `setup.bat' and specify explicitly the drive you want (see above).
A buggy DPMI server can crash the installation procedure if the drive it tries to access doesn't exist or is otherwise inaccessible (e.g., an empty CD drive). If this happens, run `setup.bat' again, with the correct drive letter of your boot drive to prevent it from crashing.
Since DOS root directories are limited in the maximum number of files they can hold, we create a single parent directory `\fsf' in the root directory of the boot drive, and place the files `fsfcdini.bat' and `fsfcdini.txt' in that directory.
In addition, the `share\texmf' directory is created under `\fsf'. This file is used by TeX and related programs to store files (such as fonts) that they generate.
This step of installation is performed by the make_dirs
function
in `fsfcdset.c'.
A batch file called `fsfcdini.bat' is created in the `\fsf' directory of the boot drive. If a file by that name already exists, it is renamed to `fsfcdini.nnn', where nnn is a number.
The function make_init_file
in `fsfcdset.c' does this step.
The installation program creates a file called `fsfcdini.txt' in the same directory as `fsfcdini.bat', with instructions on how to edit your system configuration in order to run FSF programs directly from the CD-ROM. Then it displays this file on the screen. The file itself is left in the `\fsf' directory so you can refer to it later.
The write_instructions
function in `fsfcdset.c' does this
step.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Here we describe how to copy some or all of the packages from the CD-ROM to your local disk.
If you can afford the disk space, we recommend that you copy the contents of the `\bin', `\gnu\emacs', `\share', and `\zoneinfo' directories to your hard disk and leave the rest on the CD-ROM. If you need to develop software using the DJGPP tools, also copy the `\include', `\lib' and `\lang' directories. (NTEmacs users need to consider copying the contents of the `\ntemacs' directory as well.) This way, you will need the CD in the drive only to look at the sources of the programs, or when you need to consult the on-line documentation. If you want to be able to access the documentation without inserting the CD, copy the `\info' and `\man' directories to your local disk as well.
If you would like to copy the entire contents of the CD-ROM to your hard disk, just use any command that can copy directories recursively. For example:
cp -pr f:\ . |
(cp
is part of the GNU Fileutils on this CD-ROM.)
You can also do this using the standard DOS program xcopy
, like
this:
xcopy f:\*.* . /s /e |
Note that stock DOS programs don't understand Unix-style forward slashes, while the programs on this CD-ROM understand both styles.
To set the programs up to run from your hard disk after you've copied the entire CD-ROM, just run the `setup.bat' that was copied from the CD. Assuming that you copied the CD-ROM contents to a directory called `D:\cdrom', you need to issue this command:
d:\cdrom\setup |
You might prefer to copy some of the packages, or even parts of some packages, but run other programs from the CD-ROM when you want them. Possible reasons for copying certain packages include:
In these and similar cases, special setup might be required for the programs that you copy to your disk. That's because some of the programs need to know where to find their auxiliary files or need some environment variables to be set for them to work correctly. For example, programs like Groff and TeX need to find their font files and device descriptions to produce correct output. For operation from the CD-ROM, the `DJGPP.ENV' file in the root directory of the CD-ROM and the `fsfcdini.bat' batch file created by the installation procedure set these things up. Similarly, when you use `install.exe' to install the programs on your local disk, it creates the `DJGPP.ENV' file and `w95fsfini.bat' batch file in the `\fsf' directory of the drive you have chosen during the installation, which take care of these settings. In contrast, when you manually copy parts of the CD elsewhere, you will need to change some of these settings.
Here's what you need to do:
cp f:\djgpp.env d:\gnu |
[progname]
which names
the program in brackets, and goes on with lines like
var=value
which set environment variables for that
particular program. For example, here's an entry for the Groff package:
[groff] +GROFF_TMAC_PATH=.;%DJDIR%\share\groff\tmac +GROFF_TYPESETTER=ascii +GROFF_FONT_PATH=.;%DJDIR%\share\groff\font |
%DJDIR%
is the directory where `DJGPP.ENV' is kept; it is
derived automatically by the code that reads `DJGPP.ENV' using the
value of the DJGPP
environment variable. Thus, these entries set
up the directories where Groff will look for its macros and fonts;
without these settings, Groff will use its built-in defaults, which will
be incorrect on many MS-DOS/MS-Windows systems, since they lack
standardized directory hierarchies.
See section `DJGPP.ENV Syntax' in The DJGPP Knowledge Base, for more details about the `DJGPP.ENV' structure.
If the programs that you copy don't have their own entries, you are done here and may skip to the next item. Otherwise, you will need to edit `DJGPP.ENV' to change some of the entries in the program's section. The exact changes depend on the program and on which parts of it you copied; refer to the on-line documentation (see section 3. Documentation on the CD-ROM) for the specific programs you copied. For example, if you need to install additional fonts for Groff, you will need to make its section look like this:
[groff] +GROFF_TMAC_PATH=.;F:\share\groff\tmac +GROFF_TYPESETTER=ascii +GROFF_FONT_PATH=.;%DJDIR%\share\groff\font;F:\share\groff\font |
Note that since %DJDIR%
will now be expanded to `D:\gnu',
the directories on the CD-ROM are now mentioned with an explicit
drive letter. Also note that the font directory under `D:\gnu' is
mentioned before the directory on the CD-ROM, since you'll
probably want Groff to look there first.
DJGPP
environment variable to
point to the new location of `DJGPP.ENV'. For the above example,
you will need to make sure the `fsfcdini.bat' file includes this
line:
SET DJGPP=D:\gnu\djgpp.env |
Note that you don't need to copy the entire package, only the parts that
need to be updated. For example, it is perfectly OK to leave
`groff.exe' in `F:\bin' if you only want to be able to add
fonts that it supports, as in the above example. In many cases, you
will only need to create the directories on your hard disk, add them to
the values of pertinent environment variables, and put the additional or
updated files into these directories, since most programs support a
syntax that allows listing multiple directories separated by `;',
as in PATH
.
PATH
setting.
If you copied any executables into the `bin' subdirectory, you
need to add it to PATH
. Put the `bin' directory
that's on the hard disk before the `\bin' directory on the
CD-ROM, like this:
SET PATH=D:\gnu\bin;F:\gnu\emacs\bin;F:\bin;%PATH% |
If you have previously run the installation procedure, it creates a
`fsfcdini.bat' batch file that sets PATH
; you will need to
edit `fsfcdini.bat' to change that setting, as shown above.
When you remove the CD-ROM from the drive, you will need to change
the PATH
variable so that it doesn't refer to directories on the
CD. Otherwise, you might see error messages from DOS/Windows when you
invoke programs. See section Removing the CD-ROM.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Before beginning manual installation, you should ensure that the following things are true:
Your environment needs to be large enough to accommodate adding the
CD-ROM directories to PATH
(see below). You need to
make sure that your environment has at least 72 free
bytes; if not, edit the `CONFIG.SYS' file and enlarge the
`/E:' parameter on the `SHELL=' line. A setting such as
`/E:2048' should be usually enough; if the `CONFIG.SYS' file
already specifies a larger value, try adding 100 to the current value.
Here's an example of such a line:
SHELL=C:\DOS\COMMAND.COM C:\DOS /E:2048 /P |
PATH
.
The PATH
variable controls where MS-DOS looks for programs
that are not in the current working directory (on MS-DOS, the
current directory is always implicitly considered as part of
PATH
). For example, when you type emacs at the command
prompt, and the Emacs executable is not in the current working
directory, MS-DOS searches for it in the directories listed in
PATH
.
PATH
is usually set in the `AUTOEXEC.BAT' file. You can
either edit this file and change the line that begins with `PATH=',
or create a separate batch file that changes PATH
and add a call
to this batch file near the end of `AUTOEXEC.BAT'. If you use the
multi-configuration feature of MS-DOS 6 and later, be sure to change
the PATH
or call your setup batch file in all the configurations
that need to be able to run the programs from the CD-ROM.
An example of a line that adds the CD-ROM directories to
PATH
might look like this:
set PATH=F:\gnu\emacs\bin;F:\bin;%PATH% |
This assumes that your CD-ROM drive is `F:'. Note that the
CD-ROM directory is placed at the beginning of the PATH
, so
that programs from the CD will be found before other programs on
your system. If you'd like to be able to override the CD-ROM
programs with newer versions, you will need (for example) to put
`F:\bin' after the directory where you install the latest
versions. For example:
set PATH=F:\gnu\emacs\bin;D:\newfsf\bin;F:\bin;%PATH% |
See section Installing some of the files on your hard disk, if you need to run different versions of FSF programs from your hard disk as well as from the CD-ROM.
Should you ever need to work without the CD-ROM in the drive,
remember to remove the CD-ROM directories from PATH
, or you
will get error messages from the OS when you invoke programs. See section Removing the CD-ROM.
DJGPP
environment variable must be set.
The DJGPP
environment variable must be set to pass the
correct location of configuration files and libraries to programs. You
need to set this variable like this, in the `AUTOEXEC.BAT' file (or
another batch file invoked from that one):
set DJGPP=F:\DJGPP.ENV |
This assumes your CD-ROM drive is `F:'. The startup code of all the programs (except native Windows applications such as NTEmacs) will notice this variable and process relevant parts of the `DJGPP.ENV' file so that additional environment variables required by the individual programs are set up correctly. `DJGPP.ENV' is a text file; you can examine it to see what variables are set for various programs.
See section `DJGPP.ENV Syntax' in The DJGPP Knowledge Base, for the details about the `DJGPP.ENV' structure.
If you need to run different versions of GNU programs from your hard disk as well as from the CD-ROM, you will need to copy the `DJGPP.ENV' file to your hard disk and edit it. See section Installing some of the files on your hard disk.
TEXMFLS_R
environment variable is set.
This variable needs to point to a writable directory, where DVI drivers
and other programs related to TeX will put the fonts and other files
they generate. (The `DJGPP.ENV' file included with the CD-ROM
will automatically add the value of TEXMFLS_R
to the environment
variables TEXMF
and TEXMFDBS
that are used by the
TeX-related programs.) You need to create a directory on one of your
hard disks and point this variable to the fully qualified name of that
directory (including the drive letter).
For example, execute this command:
mkdir d:\gnu\share\texmf |
and then add this line to `AUTOEXEC.BAT':
set TEXMFLS_R=d:\gnu\share\texmf |
If you would like to use NTEmacs, you should set it up as described in NTEmacs Installation.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
NTEmacs and the Cygnus ports of GNU utilities included on this CD-ROM are native Windows 9X/NT applications and therefore need a different setup. This section explains how to install and set up NTEmacs and Cygnus-compiled ports of GNU software (including Bash) on Windows 9X and Windows NT.
Note that the Win32s
add-on for Windows 3.X is not
enough to run these ports on MS-Windows 3.X. They run only
on Windows NT and Windows 9X.
Setting up NTEmacs How to install NTEmacs on your system. `.emacs' init file on Windows NT How Emacs locates your .emacs file on Windows 95/NT. Installing Cygnus ports of GNU Software How to install NT versions of GNU tar
andbash
.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
The easiest way to set up NTEmacs on your system is to use the copying automatic installation procedure; it does the whole job automatically.
Otherwise, you need to use the addpm
program, which creates
registry entries in your system's registry database. When you run
Emacs, it uses these registry entries to determine where it has been
installed and locate its support files. The addpm
program is
part of the Emacs distribution, and is located in the `bin'
subdirectory of the NTEmacs main directory.
If you would like to run NTEmacs from the CD-ROM, you will find
addpm
in the `\ntemacs\bin' directory on the CD. Assuming
your CD-ROM is in drive `F:', you should invoke addpm
with the NTEmacs directory as the only argument, like this:
f:\ntemacs\bin\addpm f:\ntemacs |
If you have copied NTEmacs to your local hard disk (see section Installing some of the files on your hard disk), and assuming that it is in the directory
`c:\gnu\emacs', you would invoke addpm
as follows:
start c:\emacs\bin\addpm c:\gnu\emacs |
When addpm
runs, it creates a set of entries in the Windows
registry database. addpm
first tries to create these entries
under the key HKEY_LOCAL_MACHINE\SOFTWARE\GNU\Emacs
. If you do
not have permission to modify HKEY_LOCAL_MACHINE
, then
addpm
creates the entries under the key
HKEY_CURRENT_USER\SOFTWARE\GNU\Emacs
. You can view the entries
that addpm
creates using the Windows Registry Editor
program that comes with Windows 95 and NT. The Registry Editor is
called regedt32
on Windows NT, regedit
on Windows 9X.
In addition to creating the registry entries, addpm
creates a
folder with an icon for the NTEmacs executable. If you are using NT 4.0
or Windows 9X, addpm
also creates a menu command named "Emacs"
that is accessible via the Start
button under the menu path
Start|Programs|GNU Emacs|Emacs
.
Both the folder icon and the Start
menu command are convenient
links for invoking NTEmacs via the Windows user interface. To invoke
NTEmacs from a command prompt, run the runemacs
program located
in the NTEmacs `bin' subdirectory.
You will probably want to extend the PATH
environment variable
to include the NTEmacs `bin' directory so that you can invoke
runemacs
anywhere from a command prompt. Following the above
example, you would extend PATH
to include `f:\ntemacs\bin'
if you run NTEmacs from the CD, or `c:\emacs\bin' if you copy it to
your local disk. If you are using Windows 9X, you can modify
PATH
in the `AUTOEXEC.BAT' file; once you have changed
`AUTOEXEC.BAT', you must reboot your system to make the changes take
effect. If you are using Windows NT, then you can set PATH
in
the System
panel of the Control Panel
dialog; the
HOME
environment variable will be set for all processes
started after you close the System
panel.
If you encounter problems while installing or using the native Windows version of GNU Emacs (a.k.a. NTEmacs), the file `\ntemacs\README.NT' on the CD-ROM might solve some of your problems. The NTEmacs FAQ is at http://www.cs.washington.edu/homes/voelker/ntemacs.html. There is also a mailing list for discussing issues related to NTEmacs. The list address is ntemacs-users@cs.washington.edu. For information about the list, send a message to ntemacs-users-request@cs.washington.edu with the word `info' in the body of the message. To subscribe to the list, send a message to the same address with the word `subscribe' in the body of the message.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Emacs on Windows 9X and NT uses the HOME
environment variable to
locate its `.emacs' startup file. The value of the HOME
environment variable should be the directory in which you have placed
your `.emacs' file (and nothing more; do not, for example, append a
semi-colon to the end of the directory as you might do for the
PATH
environment variable).
Note that HOME
is not set by the operating system by default, so
you must set it yourself. If you are using Windows 9X, then you can set
HOME
in the `AUTOEXEC.BAT' file; once you have changed
`AUTOEXEC.BAT', you must reboot your system for the changes to take
effect. If you are using Windows NT, then you can set HOME
in
the System
panel of the Control Panel
dialog; the
HOME
environment variable will now be set for all processes
started after you have closed the System
panel.
If your machine has a dual-boot DOS/WindowsNT configuration, you can use both DOS and NT versions of Emacs with the same init file. To make this possible, NTEmacs looks for its init file under the DOS name `_emacs' if the usual `.emacs' file does not exist.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
The native Windows NT/9X ports of GNU tar
, Bash and other
utilities are included with the CD-ROM as compressed `.tar.gz'
archives. To install them on your hard disk, you need to perform the
following steps:
x: cd \cygnus-ports mkdir c:\gnu tar -xvzf usertools.tar.gz -C //c/gnu |
This installs the utilities under the `c:\gnu' directory.
PATH
variable. Assuming `c:\gnu' is the
directory under which you install the Windows ports of GNU software, you
need to add the directory `c:\gnu\b18\H-i386-cygwin32\bin' to
PATH
. On Windows/NT, use the System
panel of the
Control Panel
dialog to change the value of PATH
. On
Windows 9X, edit the line of the `AUTOEXEC.BAT' file which sets
PATH
, then reboot.
/bin/sh
. You should create a directory `\bin' on every
drive of your system and put a copy of `sh.exe' from
`c:\gnu\b18\H-i386-cygwin32\bin' into `\bin'.
x: cd \cygnus-ports tar -xvzf usertools-src.tar.gz -C //c/gnu |
This assumes that you want to install the sources of the GNU tools in
the `c:\gnu\user-tools' directory. (tar
will automatically
create the `user-tools' subdirectory under the current working
directory when it unpacks the `usertools-src.tar.gz' archive.)
The Cygnus Development toolkit is provided on the CD-ROM in the `cdk.tar.gz' and `cdk-src.tar.gz' files in the `\cygnus-ports\' directory.
To install the binaries of the Development Kit, issue the following commands:
x: cd \cygnus-ports mkdir c:\gnu tar -xvzf cdk.tar.gz -C //c/gnu |
After tar
exits, setup the environment:
GCC_EXEC_PREFIX
to
C:\gnu\b18\H-i386-cygwin32\lib-gcc-lib\
.
Note the trailing slash: it's important!
PATH
environment variable so it includes the
directories
C:\gnu\b18\H-i386-cygwin32\bin;C:\gnu\b18\tcl\bin
.
TCL_LIBRARY
variable to C:/gnu/b18/tcl/lib/tcl7.6
,
and set the GDBTK_LIBRARY
variable to
C:/gnu/b18/share/gdbtcl
. You must use forward slashes
in these variables.
On Windows/NT, these variables are set via the System
panel of
the Control Panel
dialog; on Windows 95, they are set in
`AUTOEXEC.BAT' file.
To install the sources of the Cygnus Development Toolkit, issue the following commands:
x: cd \cygnus-ports tar -xvzf cdk-src.tar.gz -C //c/gnu |
This creates the directory `c:\gnu\cdk' and installs the Development Toolkit sources in that directory.
If you should need to uninstall these native Windows ports, you may do
so via the Add/Remove Programs
control panel.
If you encounter problems while installing or using the Cygnus ports of GNU programs, consult the file `\cygnus-ports\FAQ'.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
The CD-ROM includes binaries for all the programs. However, you may want to rebuild some programs, to correct a bug or add a feature. This section explains how to do that.
The description below refers to the DJGPP programs on the CD-ROM, for which the full development environment is provided as part of the CD. Native Windows 9X/NT programs, such as NTEmacs, require a native Windows 9X/NT compiler to build them; DJGPP can't do it. The documentation specific to those programs explains how to build them.
If you are familiar with the way GNU packages are built on Unix and GNU systems, you know it is usually very simple, and you can do it in a directory other than the one in which the sources reside. That is very convenient when the sources are on a read-only filesystem such as a CD-ROM.
Unfortunately, not all of the ports on this CD-ROM support this feature--it requires sophisticated tools that aren't available on stock MS-DOS machines. The CD-ROM includes all these tools, but many of the ports were done before these tools were available, and therefore can only be built from the same directory where the sources are kept.
Moreover, since different packages were ported by different people, the ways to reconfigure and rebuild them vary. While we cannot possibly explain here how to build each and every package, detailed instructions are available with the sources of each package. The following outlines the general procedure and explains where to find the instructions for every package.
The sources of the GNU packages are in subdirectories of the `\gnu' directory; look for the directory with the name of the package. The sources of the C libraries, DJGPP-specific tools and other programs that aren't from the GNU project are under the `\src' directory.
These `README' files include instructions on how to rebuild the
package from sources. The name of the file might be `README.dos'
or `README.dj', or `README.djgpp'. This file might be in some
subdirectory of the main package source directory, such as `pc' or
`djgpp' or `msdos'. There is no single standard,
unfortunately, so you will need to look around a bit. One way of
quickly finding all README files is by using the find
program,
like this:
find f:\gnu\gawk-3.0-3 -name '*readme*' -print |
Assuming that `F:' is your CD-ROM drive letter, this will print the name of all files in the Gawk distribution whose names include `readme' as a substring. (Note that since MS-DOS and MS-Windows filesystems are case-insensitive, this will find file names in both cases, even if you run this command on Windows 9X, which preserves case in file names.)
You can also use ls
:
ls f:\gnu\gawk-3.0-3\...\*readme* |
(`...' is a wildcard understood by all DJGPP-compiled programs, which recursively expands to all subdirectories.)
If you cannot find a `README' file with instructions on how to build the package, look for a batch file with a name like `makeall.bat' or `djmake.bat', or for a DOS- or DJGPP-specific Makefile. Reading these files should shed some light on the build procedure.
This step is required only for those packages whose README file does not mention that it is possible to build it from another directory.
Typically, this involves running a batch file to configure the package,
then running make
(which is on the CD-ROM). Many of the
packages are already configured for DJGPP, so you might be able to skip
the configure step and just run make
; a file `Makefile' in
the source directory for a package indicates that the package is already
configured.
Packages that can be built without copying their sources to a writable
filesystem are typically reconfigured as in this example (here we show
the GNU enscript
package):
f:\gnu\enscript.150\compat\configdj f:/gnu/enscript.150 |
In other words, you need to pass the top-level directory of the sources as an argument to the batch file that configures the package. (You must use forward slashes in the argument passed to the batch file.) So if nothing else gives a clue, examine the batch file that's used to configure the package and see if it accepts an argument in such a way; then you know you can build the package without copying it to your hard disk.
If you are using a DOS box on Windows 9X, the build process might fail because the source distribution is not compatible with long file names supported on Windows 9X. If so, you will see error messages like "Bad command or file name", or Make will complain that it cannot find some files. In that case, set `LFN=n' in the environment and run the build procedure again.
make
again.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
This section documents some problems that you may run into, and the solutions for them.
If you have problems not mentioned below that you are unable to resolve, see Contacting the Foundation. However, for problems with running a specific program, please send bug reports to the maintainer of that program. See section Reporting Bugs.
Installation Problems Problems Running the Programs
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
The following are problems you might encounter during installation:
If this happens when your CD-ROM is accessed, check that the CD-ROM is properly inserted in your CD-ROM drive. Sometimes, such errors happen if you invoke the `setup.bat' batch file too early after the CD was inserted into the drive. You need to wait until the `BUSY' light of the drive goes off, and try again. If this doesn't help, make sure your CD-ROM drivers are loaded correctly (e.g., insert another CD-ROM and try a simple DOS command, like `dir f:').
This might happen if you run `setup.bat' on MS-Windows by
double-clicking it in the File Manager or the Explorer. Do not
run `setup.bat' in that way; instead, open a DOS box by clicking on
the MS-DOS Prompt
icon, and then run the installation
procedure from that DOS box by typing setup RET. The
MS-DOS prompt icon is found in the Main
program group on
Windows 3.X, or in the Start|Programs
dialog on Windows 9X/NT.
Alternatively, you could uncheck the Close on exit
box in your
DOS box properties (use the PIF editor on Windows 3.X) so that Windows
will leave it on the screen.
This usually means that your system configuration doesn't have enough free environment space to accommodate the extra variables required to run the programs from the CD-ROM. The installation program will detect this automatically(7) and display the necessary instructions to enlarge the environment before it exits. If you follow these instructions, the environment will be large enough after you reboot your system.
SHELL=C:\DOS\COMMAND.COM C:\DOS /E:nnnn /P |
where nnnn stands for a number. (The full file name of `COMMAND.COM' might be different on your system.) If no such line exists, look for similar lines, but with `NDOS.COM' or `4DOS.COM' instead of `COMMAND.COM'. If you find neither, add a line like the above at the end of `CONFIG.SYS', and be sure to specify the correct location of `COMMAND.COM'.
SHELL=C:\DOS\COMMAND.COM C:\DOS /E:1024 /P |
and let's say the installation program told you to enlarge that by at least 80 bytes. Then you need to change that line to be like this:
SHELL=C:\DOS\COMMAND.COM C:\DOS /E:1104 /P |
If the `SHELL=' line does not exist, or does not specify `/E:', treat that as if it had specified `/E:256'.
Check that you enlarged the environment by the number of bytes that the installation program prints. If it turns out that you did, you might be using a non-standard shell. Try invoking `setup.bat' via a secondary `COMMAND.COM':
command /e:2048 /c setup.bat |
If you run `setup.bat' from the Windows DOS box, you might need to enlarge the environment size with which Windows starts DOS programs. To do this, load the `system.ini' file (usually in the `C:\WINDOWS' directory) into your editor, locate the `NonWindowsApp' section, and increase the `CommandEnvSize' parameter by the amount recommended by the installation program. For example, here's how that section should look like if you need 2048 bytes for the environment:
[NonWindowsApp] CommandEnvSize=2048 |
(If `system.ini' does not have the `NonWindowsApp' section, create it.)
You invoked `setup.bat' with a drive letter that is invalid on MS-DOS and MS-Windows. Legal drive letters are lower-case or upper-case letters, and the 6 characters from the set `[\]^_`'.
Solution: rerun `setup.bat' with the correct argument.
The correct way to invoke `setup.bat' is like this:
setup x: |
where x is the drive letter of the disk where you want `setup.bat' to create the `\fsf' directory for the CD-ROM-related files.
Another possible cause is that your system setup specifies too low a limit on the number of supported drives. This limit is defined in your `CONFIG.SYS' file; look for a line like this:
LASTDRIVE=y |
where y should be the highest drive letter allowed by your configuration. You need to change the drive letter in that line to correspond to your configuration.
Then reboot your machine and try running `setup.bat' again.
The DOS call used to get the boot drive letter (see section How automatic installation works) returned bogus information. This probably means that you are running on some kind of DOS clone that doesn't fully support that DOS function. (For example, early versions of OS/2 Dos Box are known to fail.)
If `C:' is indeed the drive where you want `setup.bat' to put the files it creates, you don't need to worry, since the default is right for you. Otherwise, rerun `setup.bat' with the correct drive letter. Here's an example for drive `E:':
setup e: |
This can happen if there is already a (non-directory) file by that name. If that is the case, you will need either to remove that file, or run `setup.bat' with the drive letter of another disk.
Another possible reason is that the disk where `setup.bat' tried to create the directories is read-only or inaccessible. Rerun `setup.bat' with the drive letter of another disk.
The installation program found an old `fsfcdini.bat' file and tried to rename it to `fsfcdini.nnn', where nnn is a number, but the rename operation failed.
This can happen only if there is some serious trouble accessing that disk; either try to rename `fsfcdini.bat' manually and rerun `setup.bat', or run it again with the drive letter of another disk.
When you have 1000 backup files from old installation runs, the installation program cannot create any more backups. Delete some of the `fsfcdini.nnn' files, and rerun `setup.bat'.
This could happen if the disk is full; either free some disk space or rerun `setup.bat' with the drive letter of another disk.
One possible reason for this is that you use QDPMI
, one of the
non-free DPMI servers supported by DJGPP (see section DPMI). QDPMI
can crash a DJGPP program if it tries to access an
empty or nonexistent disk drive. Since the installation program might
need to try different disk drives, it could crash during these accesses.
The solution is to disable QDPMI
while the installation program
runs (it will then automatically load the CWSDPMI
server supplied
with this CD-ROM).
To disable QDPMI
, switch to the directory where QEMM is installed,
and type qdpmi off from the DOS prompt.
All of these messages will be followed by a description of the reason for the error, like "File does not exist". Errors with opening existing files or reading from them usually mean that there is some problem with accessing the CD-ROM; check your CD hardware and software. Problems with creating directories or writing to files most probably mean that either the filesystem is full or there is already a file/directory by that name. Rerunning `install.exe' and choosing another drive will usually solve these problems.
This means that the attempt to set up the environment variables required by the software in the Windows Registry data-base has failed. You need to fall back to installing the software either using `setup.bat' or use the manual procedures. Please see the instructions in Run-from-the-CD Installation, and in Installing some of the files on your hard disk, earlier in this chapter.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
The following problems could be encountered after you complete the CD-ROM installation and begin to use the GNU software.
Check that the file `fsfcdini.bat' is in `x:\fsf'; if not, repeat the installation. (x is the drive letter where `setup.bat' installed the CD-ROM initialization batch file, see section Run-from-the-CD Installation).
Another possible reason for such problems is that your PATH
setting is too long. Due to limitations of DOS command line size,
`fsfcdini.bat' and `fsfcdout.bat' might truncate your
PATH
, and the operating system will not be able to find programs
from the directories near the end of PATH
. Compare your
PATH
value before and after invoking the batch files, and if they
indeed truncate PATH
, create your own batch files to restore
PATH
correctly.
This might happen if you remove the CD from the drive but
PATH
still mentions directories on the CD. When you invoke
programs, the OS looks along the PATH
for their executable files,
and the messages are printed when it tries to access the empty CD
drive.
To prevent this from happening, run the `fsfcdout.bat' batch file
(it's in the same directory where `fsfcdini.bat' was created by the
setup procedure); this will restore the value of PATH
as it was
before `fsfcdini.bat' changed it. Alternatively, remove the CD
directories from the PATH
manually, by using the `set PATH='
command.
The first step is to verify that you can indeed read the CD-ROM.
Type `dir x:', where x is the drive letter of your
CD-ROM Drive; for example, `F'. If the response is
`Invalid drive specification', try enlarging the LASTDRIVE
parameter in the `CONFIG.SYS' file (described earlier in this section).
If that doesn't help, there is a problem with your CD-ROM software;
please consult your system software documentation.
Another possibility is that the PATH
environment variable is incorrectly set. Type
PATH RET and examine the value printed by the system; make
sure the CD-ROM `\bin' and `\gnu\emacs\bin' directories
are part of PATH
.
CD-ROM
, you get error
messages ending in `Abort, Retry, Fail?'.
Check that the CD-ROM is properly inserted in your CD-ROM drive.
It is possible that you have some sort of software/hardware conflict. Please search the DJGPP FAQ list for a description of similar problems. See section `Top' in DJGPP FAQ list, for details.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
The GNU Project's manuals are written in Texinfo. Texinfo files can be
formatted into printed documents using TeX, and can be converted into
hypertext Info format using makeinfo
; an HTML converter is being
developed.
All of the manuals we produce (including this one) are included on the CD-ROM, already processed into HTML and several printable formats (in the `\docs' directory), and into Info format (in the `\info' directory). All the programs required for you to write and process your own or others' Texinfo files are on the CD-ROM also.
The Free Software Foundation also sells nicely printed paper copies of the more popular GNU manuals.
Some programs come with documentation in the traditional Unix man pages format. While the man pages are sometimes not up to date, and we provide them primarily for people who are accustomed to using man pages, they are useful as quick summaries of usage and options.
Texinfo files are normally marked by a `.texi' or a `.texinfo' extension. However, MS-DOS only allows an 8-character file name with a 3-character extension, e.g. filename.ext. Therefore, when this CD is mounted by MS-DOS or Windows 3.X, Texinfo files are marked by a `.tex' or a `.txi' extension. Windows 9X and Windows/NT machines should see the full file names.
How to Run info
How to Read HTML-formatted Documentation How to Read Man Pages Formats that Produce Printed Manuals
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
info
info
is a program for reading documentation on-line. The
info
program, and associated Info files, are installed on this
CD-ROM. You can use info
to read all the documentation in this
format.
To run the stand-alone Info program, type info on the command line, and follow the instructions. If you have never run Info, type h after starting it. This will give you more detailed instructions on how to proceed.
Emacs also contains a program for reading Info documents. It lets you use the mouse to follow hypertext links, uses colors to highlight links, and doesn't require you to leave the editor to browse the documentation.
You can view Info documentation with GNU Emacs by typing CTRL-h i (press and hold the CTRL key and then press the h key, then type i at the prompt in the echo area). For help in using Info within Emacs, type h after starting Info.
To exit Emacs info
, type q. This returns you to the buffer
where you were when you entered Info. Alternatively, you could divide
your Emacs display into two or more windows and leave the Info buffer
displayed in one of them. This way, you can continue working and refer
to the documentation when you need to.
Info files are produced from Texinfo files by formatting them with
makeinfo
.
See section `Creating an Info File' in The Texinfo Manual, for more information.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
HTML, an acronym for the HyperText Markup Language, is a language used to prepare hypertext documents that might be distributed on different machines connected via the Internet. HTML is also a format of choice for the main system documentation on some modern platforms.
Many MS-DOS/MS-Windows machines have one of the available browsers for HTML documents installed on their disk. We include the HTML-formatted versions of the GNU documentation on this CD-ROM for those who are used to reading this format and prefer it to the (functionally equivalent) Info format.
The HTML-formatted documentation is in the `\docs' directory of the
CD, inside subdirectories arranged by the package names. The HTML
documentation for each package is split into several files with the
.htm
extension. The files' names are constructed from the
program name and a number, like `gcc_1.htm', `gcc_2.htm', etc.
To read a manual from the beginning, start with the file whose name ends
with `_1.htm', like `cpp_1.htm' for the preprocessor manual.
If you need to look into the index, the function and topic indices are
in the files whose names end with `_f.htm' and `_t.htm',
respectively.
To read an HTML file, you have two alternatives:
File/Open
dialog to
open the HTML file.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
We also provide man (short for "manual") pages for many utilities. Unix systems have traditionally used this format, and a terse style, for the reference documentation for programs, file formats, and system interfaces.
To read man pages, type man command at the MS-DOS
prompt after installing the CD-ROM, or type M-x man inside Emacs.
The man pages in directory `\man' on this CD-ROM are already
formatted; the man command just pages through them using
less
, or whichever pager you have specified with the environment
variable PAGER
. (The source file for each man page is
included with the source distribution of the program.)
The stand-alone Info reader (see section How to Run info
) can
also display man pages. If you say `info xyzzy' and the
program xyzzy
doesn't have Info documentation, `info.exe'
will automatically call the man command and display its output.
Please note that not all commands have man documentation. The man documentation is provided primarily for people familiar with this format; we would rather spend time and effort on the Texinfo versions of the documentation. Therefore, expect the man pages to be outdated, for those programs that have Info documentation.
We suggest you always invoke info
to refer to documentation. If
a program has Info documentation, info
will show you that;
otherwise, info
will automatically display the program's
man page.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
We have included preformatted documentation for the various packages on this CD-ROM in two types of formats: Info format (described above) so you can read the information on-line, and DVI, PostScript, and PCL formats so you can print on various types of printers.
DVI (for `DeVice Independent'(8)) files are produced from Texinfo files by the TeX typesetting program. DVI files are marked by a `.dvi' extension and can be converted into many different printer formats.
The CD-ROM includes the programs dvips
and dvilj4
for
converting DVI files into PostScript and PCL formats.
PostScript format is understood by many laser printers. PostScript
files are produced from DVI files using the dvips
command and
have a `.ps' extension.
PCL files are based on Hewlett-Packard's Printer Control Language. Most
HP LaserJet printers support this language; please refer to your printer
documentation to see if it does. PCL files are produced by running the
dvilj4
command, and are marked by a `.lj' extension.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
A lot of effort went into making the programs on this CD-ROM behave the same way they do on Unix and GNU systems, or as close as possible. Sometimes DOS-specific features were added to make up for functionality that is missing on MS-DOS/MS-Windows.
However, due to fundamental shortcomings in MS-DOS, some of the programs
on the CD-ROM are missing features. Features that take advantage of
multi-processing will not, in general, work on MS-DOS. This includes
the Emacs shell
and gdb
modes, and the parallel command
execution in GNU Make. You will also not be able to utilize the network
facilities of Emacs, such as ange-ftp
. (In contrast, NTEmacs
does support both multi-processing and network facilities.)
Many packages include DOS-specific README files that describe the functionality added for MS-DOS; refer to them for more information.
To use fully featured versions of these utilities, we suggest that you switch to a Linux-based GNU system such as Debian or Red Hat. These systems are not only more powerful, they (or some of them) are also entirely free software. If you have a 386 or better, with at least 8 megabytes of memory, you can run one of these systems.
Here is a listing of the packages available on this CD-ROM. There are
three types of documentation that may be available for packages listed
below. [Doc] indicates that the FSF sells a bound, printed manual.
[Info] indicates that there is some form of Texinfo documentation
available for the package (which may exist as a manual or an Info page,
or which you can format into either a Texinfo manual or an Info page).
[Man] indicates that there is man
-style documentation
available for the package.
GNU's shell, bash
(Bourne Again SHell), is upward-compatible with
sh
and offers many extensions found in csh
and ksh
.
bash
has job control, csh
-style command history,
command-line editing (with Emacs and vi
modes built-in), and the
ability to rebind keys via the readline
library. bash
conforms to the POSIX 1003.2-1992 standard.
The MS-DOS port of bash
adds quite a few extensions designed for
better compatibility with Unix-like systems. For example, `test -x
foo' will search for `foo.exe', `foo.com' and `foo.bat'
as well as just for `foo'; you can set optional variables to make
bash
convert the value of PATH
to Unix-like form
(colon-delimited list with no drive letters), so shell scripts
which depend on that will work; and leading dots in file names are
automatically converted into underscores (DOS doesn't allow file names
with leading dots).
As a result, this port of Bash can run complex shell scripts, such as GNU `configure' scripts, almost unaltered. Many packages on this CD-ROM were configured for MS-DOS by running the `configure' scripts using Bash.
bc
[Info, Man]
bc
is an interactive algebraic language interpreter with
arbitrary-precision arithmetic. It features a simple syntax for basic
arithmetic as well as recursive functions, arbitrary-base arithmetic,
multi-character variables for numbers and arrays of numbers, relational
operators, and conditionals.
GNU bc
follows the POSIX.2-1992 standard, with several
extensions.
The RPN (Reverse Polish Notation) calculator, dc
, is also
distributed with bc
.
The GNU Binary Utilities is a collection of utilities for managing executable program and object files produced by the GNU C compiler (GCC). Programs in this package include:
ar
ar
is an archive maintenance utility, primarily for creating
libraries of object files to be linked into other programs.
c++filt
The C++ language allows different functions to have the same name
but take different arguments. To prevent duplicate symbol names, the
compiler "mangles" the function names in a predictable manner.
c++filt
demangles these names into the original function
declaration.
gas
gas
is the GNU portable assembler. Though primarily
used for assembling the output of GCC, it is a general-purpose
assembler.
gprof
gprof
is a code profiling tool, used to determine which functions
are occupying your program's CPU time. This data is useful in
determining which functions would benefit from hand optimization.
ld
ld
, the GNU linker, combines a number of object and archive files
into a single executable file.
nm
nm
lists the symbols in an executable, object file, or library.
objcopy
objcopy
copies object files, optionally performing object file
format conversions (e.g., ELF to a.out
) along the way.
objdump
objdump
displays the contents of an object file, optionally
including disassembled code, debugging information, and anything else
supported by a given object format.
ranlib
ranlib
generates an index for an ar
format
archive, which enables faster linking.
size
size
prints the sizes of sections in object files and executable
programs.
strings
strings
prints ASCII text strings that are embedded in binary
files.
strip
strip
removes debugging symbols and line number
information from object files and executables, making them smaller.
Typically, the size of a program executable file will be slashed by half
after running strip
on it.
Bison is a parser generation tool used by programmers. It is
upward-compatible with yacc
(Yet Another Compiler Compiler).
Calc (written by Dave Gillespie in Emacs Lisp) is an extensible, advanced desk calculator and mathematical tool that runs as part of GNU Emacs. While Calc can function as a simple four-function calculator, it has many more features, including choice of algebraic or RPN (stack-based) entry; logarithmic, trigonometric, and financial functions; arbitrary precision; complex numbers; vectors; matrices; dates; times; infinities; sets; algebraic simplification; differentiation; and integration.
cpio
[Man]
cpio
is a file archiving and backup utility. It is fully
compatible with the POSIX 1003.1 ustar format.
The GNU Diff Utilities compare files. The Diff Utilities package contains the following programs:
cmp
cmp
compares two files and displays the byte and line number of
the differences.
diff
GNU diff
compares files, showing the lines that differ in any of several
formats. It is much faster than other implementations of
diff
.
diff3
sdiff
sdiff
compares two files side by side and interactively merges
them into a third file.
DJGPP is the MS-DOS port of the GNU C Compiler (GCC 2.7.2.1). It also includes a suite of development tools written specifically for DJGPP.
GCC is primarily an optimizing C Compiler with support for other
languages. Also included in the distribution are C++ and
Objective-C compilers. As much as possible, the C++ compiler is
kept compatible with the evolving draft ANSI standard, but not with
cfront
(AT&T's compiler), which has been diverging from the ANSI
standard.
GCC supports full ANSI C, traditional (K&R) C, and GNU C extensions. The extensions include nested functions support, nonlocal goto, and taking the address of a label.
While the preceding features are available in all versions of GCC, the following are available only in DJGPP, the MS-DOS port of GCC.
DJGPP provides a number of extensions to the standard MS-DOS programming environment, including 32-bit protected mode, a flat 32-bit address space, and virtual memory. DJGPP needs DPMI services to run protected-mode programs on top of 16-bit real-mode DOS; a free DPMI server is provided with DJGPP, and existing non-free servers (such as QDPMI and servers built into MS-Windows) are also supported. Programs compiled with DJGPP support long file names on Windows 9X.
Texinfo source for the GNU C Compiler Manual comes with the program.
DJGPP also includes the library and auxiliary tools:
libc.a
[Info]
DJGPP includes a free C library, written specifically for DJGPP. It is
compliant with ANSI C and POSIX standards, and includes many
DOS-specific extensions offered by other popular DOS compilers.
However, POSIX compliance means that DJGPP versions of library functions
typically are much more powerful and offer more functionality than other
DOS C libraries. For example, stat
and fstat
report
meaningful and unique inode numbers (even though Microsoft filesystems
don't have inodes).
The DJGPP FAQ list is actually more than a FAQ: it's a very large knowledge base about every aspect of using DJGPP and DJGPP-compiled programs. It is extensively indexed and should be the first resource to search for answers for any DJGPP-related question, including any problems you might have using programs on this CD-ROM.
bin2h
[Info]
bin2h
allows a developer to embed a binary file in a source
file, by converting the binary data to an array of integer values.
djtar
[Info]
djtar
is designed to ease the problems related to extracting tar
and compressed tar files on a DOS machine. It prevents conflicts
between long file names that map to the same name in the restricted DOS
8+3 namespace, and also knows how to decompress `.tar.Z' and
`.tar.gz' files on the fly, therefore saving disk space. It can
also read tar archives that were written on floppies using raw devices
(so that the floppies do not have DOS filesystem on them). Options are
available to convert text files from Unix to DOS format, and vice versa.
dtou
[Info]
dtou
converts DOS-format text files to Unix format, by removing
every `CR' character that precedes an `LF' character. Unlike the
dos2unix
program found on some systems, dtou
doesn't write
the converted file to its standard output; instead, it rewrites the
file, and can therefore convert multiple files with a single command
line. It also preserves the timestamps of the files (so that
Make and find
don't think that the files have changed).
utod
[Info]
utod
converts Unix-format text files to DOS format, by adding a
`CR' character before every `LF' character. Unlike the
unix2dos
program found on some systems, utod
doesn't write
the converted file to its standard output; instead, it rewrites the
file, and can therefore convert multiple files with a single command
line. It also preserves the timestamps of the files (so that Make and
find
do not think that the files have changed).
redir
[Info]
The stock DOS shell `COMMAND.COM' doesn't support redirection of
the standard error stream (stderr
). Many GNU programs, including
GCC and make
, write their errors and warnings to stderr
.
When these messages are more than a screenful, you will need a way to
redirect them to a file. redir
was written to provide a way to
do that. It redirects standard streams according to command-line
options, runs the program you specify, then optionally displays the exit
code that the program returned and the total run time it used.
fsplit
and fmerge
[Info]
You will need these programs to transport large files on small media, such
as floppy disks. fsplit
splits a file into up to 1000 smaller
files; fmerge
puts the parts back together again.
texi2ps
[Info]
texi2ps
is a modified version of makeinfo
that quickly
turns a Texinfo source into a crude PostScript file, which you can then
print or view with a PostScript viewer. It is much faster than the
usual way of typesetting with TeX to produce a DVI file, then
converting to PostScript with dvips
; but the result is much less
pretty.
update
[Info]
update
is a fancy copy-if-needed program. Basically, it compares
the two files you give it, and if they differ, copies one to the other.
This is useful in makefiles where a file is generated often, but its
contents changes rarely, and other files depend on it. (The same effect
could be produced by comparing the files with cmp
and copying
based on its exit code, but update
is simpler, doesn't require
cmp
and avoids cumbersome DOS batch file programming.)
ed
[Info, Man, Doc]
ed
is a line-oriented text editor. It is used to create,
display, modify, and otherwise manipulate text files, both interactively
and via shell scripts. A restricted version of ed
, red
,
can only edit files in the current directory and cannot execute shell
commands. ed
was the original editor for Unix, and is thus
widely available.
Although simple, ed
is not totally primitive: it supports regular
expressions and piping text to external programs. However, for most
purposes, we recommend you use Emacs instead of ed
.
elib
[Info]
Elib is a small library of Emacs Lisp functions, including routines for using AVL trees and doubly-linked lists.
Emacs is an extensible computing environment and editing system. It includes an interpreter for the Emacs Lisp language, in which most of Emacs is written. Full documentation of the Emacs Lisp language is included on the CD-ROM.
A large library of extensions and "modes" for editing various human and programming languages is included. Emacs also comes with user-friendly front ends for many programs, including computer documentation systems (such as Texinfo and TeX), electronic mail, and version-control systems (such as RCS).
Many Emacs features are optional, which means in order to turn them on, you need to customize Emacs: issue a command or set a variable. These customizations are usually done in the Emacs initialization file. When you invoke Emacs, it automatically reads that file and performs any customizations you have specified there. The initialization file for Emacs is called `.emacs' on most systems; however, on MS-DOS, it is called `_emacs', since DOS doesn't allow file names with a leading dot. The GNU Emacs Manual includes information about basic customization methods.
This CD-ROM includes a sample Emacs initialization file which shows a number of customizations, each of which many users like. It is called `_emacs.xmpl' in the `\gnu\emacs' directory on the CD-ROM. Do not copy this file and use it verbatim! This file is not a default that we recommend for new users--it is a grab bag of changes, and each change is liked by some users and disliked by others. The right way to use this file is to skim through it and copy specific customizations from it if you think you might like them. It can also serve as a guide for how certain kinds of customization can be done.
enscript
[Man]
enscript
converts ASCII files to PostScript and stores generated
output to a file or sends it directly to the printer. GNU
enscript
supports several non-ASCII character sets and embedded page
formatting commands (such as inline EPS files and on-the-fly font
changes).
enscript
supports language-sensitive code highlighting.
Highlighting is implemented by a special states
program (invoked
by enscript
) which processes the input files and annotates them
with enscript
's special escapes. The file that defines
highlighting for each supported language is a machine-independent ASCII
file, and it can be updated without recompilation of the enscript
program.
The GNU File Utilities are programs that operate on files. Most are modeled after the original Unix utilities of the same names, with enhanced features for ease of use and power. Their added value for MS-DOS and MS-Windows is even greater, since most of their functionality is absent on these systems. The package includes the following programs:
chmod
chmod
changes the access permissions of a file. It is similar to
the DOS standard program attrib
; under MS-DOS, its only real
effect is to change write access permissions, but it pretends to work
with other access bits as well, so that shell scripts and makefiles
that call chmod
will be happy.
chown
and chgrp
These two programs are no-ops on MS-DOS/MS-Windows, since the corresponding features are lacking in the underlying operating system. They exist only to keep shell scripts and makefiles happy.
cp
cp
copies files. It is similar to the MS-DOS copy
and
xcopy
commands, but has many more features, such as making backup
files, and copying newer files only.
dd
The dd
program is useful for doing block
input/output operations on files and performing conversions on them. It
can extract a certain part of a file, convert it from ASCII to EBCDIC or
vice versa, swap the byte order, etc.
df
df
(which stands for "disk free") reports how much space is in
use and how much is available on some or all drives accessible by your
system.
dir
Closely related to the ls
and vdir
utilities (below),
dir
lists the files in a directory. dir
is similar to the
MS-DOS command of the same name. From the DOS prompt, you must invoke
this program by the name gdir
, because dir
is a built-in
DOS command. (Other programs, such as Make, will invoke the GNU
dir
by the name dir
.)
dircolors
dircolors
outputs a sequence of shell commands to set up the
terminal for color output from ls
, dir
and vdir
.
If your interactive shell is bash
or another sh
work-alike, you can use that output directly; if you use
`COMMAND.COM' or some such, you will have to redirect the output of
dircolors
to a file and edit it into a series of `SET'
commands. Note that `COMMAND.COM' doesn't allow `='
characters in environment variables' values, so the usual way to set the
LS_COLORS
variable is through the DJGPP environment file.
du
du
reports the amount of disk space used by a hierarchy of
directories.
install
and ginstall
install
copies files while setting their permission modes. It is
used by many makefiles as part of the `install:' target rules.
Since many DOS and Windows programs come with a program
`install.exe', the GNU install is called ginstall
on this
CD-ROM; however, a "symlink" called install
also exists (see
ln
, below).
ls
ls
is the equivalent of the DOS dir
command, but has
many more options. For example, it can display different file types in
different colors, can recursively list directory hierarchies, and offers
many different sorting options.
ln
Since MS-DOS doesn't support links between files, ln
emulates
hard links by copying, which produces the same effect, albeit at a
price of wasting disk storage. With the `-s' option, ln
creates a DJGPP-style "symlink" to a program: a small stub program
that, when run, will actually load the DJGPP code from another program
and run it. Thus, ln -s make.exe mymake.exe effectively makes
the name `mymake.exe' an alias for `make.exe', as a symlink
would.
mkdir
mkdir
is used to create directories, like its MS-DOS namesake,
but it can do more. For example, it has an option to create parent
directories if they don't exist. From the command line, invoke this
program by the name gmkdir
, because mkdir
is a built-in DOS
command.
mkfifo
and mknod
These are no-ops on MS-DOS, they exist only for the sake of scripts that call them.
mv
mv
moves files to another directory. You can also use mv
to rename files. mv
performs a similar function to the MS-DOS
ren
command, but it can also rename directories or move them
recursively, move files to another disk, back up old versions of files it
overwrites, and more.
rm
rm
deletes files. It is like DOS del
, but can accept more
than a single argument, can delete directories and directory trees, and
(with the `-f' switch) can delete read-only and system/hidden files.
rmdir
rmdir
deletes empty directories. It is similar to the MS-DOS
command of the same name, but it can also remove parent directories if
they become empty after the removal. Use the name grmdir
to
invoke this program, because rmdir
is a built-in DOS command.
sync
sync
attempts to cause any write-behind data to be written to
disk, so that the file system is updated with any last-minute changes.
sync
does that by calling operating system functions that will
usually cause a disk cache, if one is installed, to flush its buffers.
Since DOS itself never delays disk writes, this is all there is to it.
touch
touch
creates a new empty file or updates the modification time
of an existing file. It can also set the modification time based on
another file.
vdir
vdir
lists a directory in verbose form. vdir
is another
form of the dir
and ls
commands.
The Find Utilities are programs for finding files. find
is an
extremely powerful program for finding files that match certain criteria
(such as a name, or part of one, or a modification time), and performing
actions on them (such as printing their names or executing a command on
them). Also included are xargs
, which applies a command to a
list of files (to get around limitations in the number of arguments that
can be passed to a program), and locate
, which scans a prebuilt
database of files for names that match a pattern.
flex
is a replacement for the lex
scanner generator.
flex
is often used to produce lexical scanners for use with
Bison-generated parsers.
gawk
[Info, Man, Doc]
gawk
is a pattern-scanning and text-processing program which
interprets a special programming language. It is useful for
general-purpose manipulation of textual data, such as counting things,
converting data from one form to another, adding up numbers, and
extracting information for reports, but it has also been used to write
prototypes for small database systems and compilers for little
languages.
gawk
's main features, such as the implicit input loop, the
pattern-action paradigm, automatic splitting of records into fields, and
absence of declarations, make gawk
a tool that is hard to beat
for tasks where program development time is more important than run
time.
gawk
is upward-compatible with the latest POSIX specification for
awk
.
GDB is the GNU symbolic debugger. With GDB, you can debug at source level or machine code level and conveniently move between the two. GDB currently fully supports source-level debugging of C, C++, and Objective-C, and has partial support for Modula-2, Chill, Pascal and Fortran.
gdbm
is the GNU replacement for the traditional dbm
and
ndbm
libraries. It implements a database using quick lookup by
hashing. gdbm
does not ordinarily make sparse files; it keeps
its databases compact.
gperf
generates perfect hash tables, such that each string in a
given set will hash to a unique value. The output is a C function that
implements the hash function.
grep
[Man]
This package contains GNU grep
, egrep
, and fgrep
.
These programs perform pattern matching on lines in a file, allowing you to
search for specific text patterns, using either strings or regular
expressions.
Groff is a document formatting system, compatible with the troff
document processing system from Unix. It includes drivers for
PostScript, TeX dvi
format, LaserJet 4 printers, and plain
ASCII text. It contains implementations of the following programs:
eqn
eqn
is an equation-typesetting preprocessor for troff
.
groff
groff
is the front-end processor for the Groff system. It can be
used to invoke the appropriate preprocessor programs for a given
document.
indxbib
indxbib
makes an inverted index for bibliographic databases. The
database is then searchable using lookbib
and lkbib
programs.
lookbib
and lkbib
lkbib
and lookbib
search bibliographic databases. If an
inverted index prepared by indxbib
is available, they will use
it; otherwise, the database itself is accessed (which is slower).
nroff
nroff
is like troff
, but with a built-in default of producing
ASCII text output.
pic
pic
is a simple graphics preprocessor for troff
. It is
useful for typesetting flow charts and other line-based graphics.
refer
refer
generates bibliographic references for citations in
Groff documents.
soelim
soelim
replaces the .so file
directives in Groff documents
by the contents of the named file.
tbl
tbl
generates tables in Groff documents.
troff
troff
is the main processing engine for Groff.
Groff's mm
macro package is mostly compatible with the DWB
mm
macro package and has several extensions. Also included is a
modified version of the Berkeley me
macros.
Groff also includes several utilities for converting font files, such as
afmtodit
and pfbtops
.
gzip
[Info, Man]
gzip
is the GNU file-compression program. In addition to
compressing and uncompressing files in its own format, it is capable of
uncompressing files in other formats, namely compress
, SCO
compress
, and Unix System V pack
. gzip
can
also unpack archives in MS-DOS zip format, but only if the archive
contains a single file. It gives an error for multi-file zip archives.
Note that the format used by gzip
is not compatible with PKzip
and other zip archival/compression utility programs.
The compression achieved by gzip
is typically better than that
achieved by zip
, pack
, or compress
.
Note that djtar
can uncompress and untar a `.tar.gz'
archive in a single pass, which makes it better suited to these tasks on
MS-DOS than a `gunzip -c | tar xf -' pipe, because the latter is
slower and needs twice the disk storage of the uncompressed tar file
while the pipe runs (since pipes are implemented as temporary disk files
in DOS).
hello
[Info, Doc]
GNU hello
prints "Hello world!". It is often the first program
a programmer writes when learning a new language. GNU hello
is
provided primarily as an example of a program that fully conforms to GNU
coding standards. It is useful as a starting point for people writing
programs.
The ID utilities search text files (plain text or program source text) for tokens. A token is an identifier, a number, a string, a word in a text file, or a variable name in a program source file. ID utilities generate a database indicating which tokens appear in which files, and provide tools to query that database for various text-searching tasks, such as listing all files that reference a particular C header file.
There are several programs in the ID utilities family:
mkid
mkid
scans files in a directory hierarchy for tokens and builds
the ID database file.
lid
lid
queries the ID database for tokens and reports matching
file names or matching lines. You can specify the tokens as strings,
substrings, or regular expressions.
fid
fid
prints the tokens found in a given file. If two file names
are passed on the command line, fid
prints the tokens that are
common to both files (i.e., the set intersection of the two token
sets).
fnid
fnid
queries the ID database for the file names stored there and
prints the file names that match a given wild-card pattern (or all files,
if no pattern was given).
xtokid
xtokid
accepts the names of files and/or directories on the
command line, then extracts and prints a stream of tokens from those
files for which it has a valid, enabled scanner. This is useful
primarily for debugging new scanners for mkid
.
indent
[Info]
GNU indent
is a formatter for C source code. By default, it
formats C source according to the GNU coding standards. The BSD
default, K&R, and other formats are available as options. It is also
possible to define your own format. GNU indent
provides more
functionality than other versions and also handles C++ comments.
Ispell is an interactive, multi-language spelling checker that suggests "near misses" as replacements for unrecognized words. It works with both system- and user-maintained dictionaries, for multiple languages. This CD-ROM includes only English dictionaries, but the Ispell documentation explains how to find dictionaries for other languages.
less
[Man]
less
is a display paginator similar in spirit to the Unix
more
and pg
programs. It supports moving backward and
forward through a file, and searching for regular expressions. It can
also view several files in sequence, run programs on parts of browsed
text, and auto-complete on file names. On Windows 9X it supports file
names with embedded white space.
libg++
[Info]
The GNU C++ library (libg++) contains an extensive collection of C++ forest classes, an IOStream library for input/output routines, and support tools for use with G++. Supported classes include: Obstacks, multiple-precision Integers and Rationals, Complex numbers, arbitrary-length Strings, BitSets, and BitStrings.
The distribution also includes the libstdc++ library (which is called `libstdcxx.a' on MS-DOS, since `+' is not allowed in DOS file names). This implements library facilities defined by the forthcoming ANSI/ISO C++ standard, including a port of the Standard Template Library (STL).
m4
[Info, Man]
GNU m4
is an implementation of a traditional Unix macro processor.
It is mostly SVR4 compatible, although it has some extensions (for example,
handling more than 9 positional parameters to macros). m4
also has
built-in functions for including files, running shell commands, doing
arithmetic, etc.
make
[Info, Man, Doc]
GNU make
is typically used to manage large programming projects
by determining which files must be updated to produce a current version
of a program. However, it can be used to automate many step-by-step
processes that have complex dependencies.
GNU make
supports POSIX 1003.2, and has all but a few obscure
features of the BSD and System V versions of make
, as well as
many of our own extensions. These GNU extensions include long options,
parallel compilation (not on MS-DOS), flexible implicit pattern rules,
conditional execution, and powerful text-manipulation functions. Recent
versions have improved error reporting and added support for the popular
`+=' syntax to append more text to a variable's definition.
(Texinfo source for the Make Manual comes with the program.)
The DJGPP port of GNU make
supports `COMMAND.COM', its
replacement 4DOS
, and Unix-style shells such as bash
; with
bash
, it will run most Unix makefiles unaltered. It also
supports long command lines (when it invokes DJGPP programs), and
DOS-style file names with drive letters in dependencies and pattern
rules.
patch
[Man]
patch
is our version of Larry Wall's program to take diff
's
output and apply those differences to an original file to generate the
modified version.
Software releases on the Internet are often accompanied by changes in
the form of diffs from the previous release; thus, you need download only
the diffs, rather than the entire distribution. You can then use
patch
to apply these changes to the distribution you already
have.
GNU patch
can also patch binary files. GNU diff
can
generate such binary diffs when called with `-a --binary' options.
Perl is the "Practical Extraction and Report Language," or the
"Pathologically Eclectic Rubbish Lister," depending upon who you ask.
Perl is a language designed for scanning text files, generating reports,
manipulating text, and other small programming tasks. It combines many
features of C, awk
, sed
, and shell programming.
RCS is the Revision Control System. It is used for version control and
management of software projects. It can also handle binary files by
using GNU diff
. The following programs are included with RCS:
ci
ci
checks files into RCS.
co
co
checks files out of RCS.
ident
ident
searches files for RCS identification strings.
rcs
rcs
is used for general control over files in RCS.
rcsdiff
rcsdiff
compares different revisions of a file under RCS control
using the diff
program.
rcsmerge
rcsmerge
is used to merge multiple revisions of a file together.
rlog
rlog
extracts log entry information for a file under RCS control.
sed
[Info]
sed
is a "stream editor" based on the line editor ed
.
It is useful for editing streams of data, and it is most often used with
the pipe feature by means of the shell operator `|'.
The GNU Shell Utilities are programs designed for use in shell scripts and batch files.
basename
basename
echoes its argument, a file name, minus any directory
name, and optionally removes a suffix from the name as well. For
example, given either C:/dos/ansi.sys
or C:\dos\ansi.sys
,
basename
outputs ansi.sys
.
date
date
is a command for printing dates in many formats. Since
`COMMAND.COM' has an incompatible built-in command by that name,
there is a "symlink" to GNU date
called gdate
, suitable
for invoking it from the DOS prompt.
dirname
dirname
simply prints the directory component of a file name.
For example, given `C:\dos\ansi.sys', dirname
prints
`C:\dos').
echo
echo
prints its arguments; e.g. `echo foo' prints
`foo'. It is often used to print messages in scripts. A
"symlink" called gecho
is provided, so you can invoke GNU
echo
from the DOS prompt, since `COMMAND.COM' has a
less powerful internal command called echo
.
env
env
is used to modify the environment in which a program is run.
It can define environment variables which violate the restricted syntax
rules of `COMMAND.COM', including empty values and values that
contain special characters.
expr
expr
evaluates various types of expressions involving arithmetic,
relational, logical, and string operations.
false
false
always exits with an exit status of 1 (false).
pathchk
pathchk
determines whether a set of file names are valid on a
local filesystem, since some systems have different constraints from
others. Also, pathchk
determines whether file names are valid
under the POSIX.1 file-naming standards.
printenv
printenv
outputs the environment under which a command will
execute.
printf
printf
provides formatted printing in forms that other printing
functions cannot provide. For more detailed information, please
consult the Info documentation (see section 3. Documentation on the CD-ROM).
For example:
printf "It's %d o'clock" 5 |
prints
It's 5 o'clock |
sleep
sleep
is often used in shell scripts to stop all actions (caused
by other commands in the script) for a specified period of time.
tee
tee
copies its standard input to files named on the command line,
and also to standard output. You can think of it as a "tee" fitting
for pipes.
test
, or [
test
performs a number of logical, relational, file, and string
comparisons. It is useful for shell programming. MS-DOS doesn't allow
file names to include the `[' character, so test
is not
available on MS-DOS under that alternate name.
true
true
always exits with status 0 (true).
yes
yes
prints a repeating sequence of the letter `y' (or
whatever string you give as the argument) to its standard output. This
is useful for running a program that repeatedly asks a question
requiring the same answer.
tar
[Info, Doc]
The tar
program is used to create and manipulate tar
archives. An archive is a single file which contains the contents
of many files, while still identifying the names of the files, their
owner(s), size, time stamps, and so forth. GNU tar
supports
incremental backup and restoration of files, compressed and multi-volume
archives, and numerous other extensions such as comparison of the
archive contents against files in the filesystem.
The DJGPP port of GNU tar
supports all the features of the
original GNU package, except archives on remote machines.
TeX is a free general purpose typesetting program that provides fine control of typesetting. You can process TeX's output (called a `.dvi' file) with special-purpose conversion programs to produce PostScript, PCL, or a large number of other formats. TeX is also very good for typesetting mathematical documents. Included are all of the standard programs developed by the Stanford TeX project directed by Donald E. Knuth, such as METAFONT, DVItype, GFtoDVI, BibTeX, Tangle, etc., as well as other programs such as DVIcopy (written by Peter Breitenlohner), MetaPost and its utilities, and more.
Also included in the TeX distribution on this CD-ROM are dvips
for converting `.dvi' files to PostScript, dvilj
and
dvilj4
for converting `.dvi' files into PCL commands for
LaserJet printers, dvidj
for printing `.dvi' files on
DeskJet 500/500c/550c printers (with color support), dvivga
for
viewing files on standard VGA displays, and most of the major macro
packages for TeX (like the Foundation's own Texinfo,
LaTeX,
and many others).
Tangle and Weave can be used for a special style of programming known as literate programming, whereby program sources and documentation are both produced from a single master file written in a special language called Web.
Texinfo is a set of utilities that generates both printed manuals and on-line hypertext-style documentation (called "Info" format). The Texinfo package also contains programs for reading on-line Info documents. Version 3 has both GNU Emacs Lisp and stand-alone programs written in C or shell script. Texinfo mode for GNU Emacs enables easy editing and updating of Texinfo files.
Programs provided include:
makeinfo
makeinfo
produces an on-line readable manual (in plain ASCII or
"Info" format) from Texinfo source.
info
info
is a program to read Info format documents. See section How to Run info
.
texindex
texindex
produces index files for printed manuals. It is usually
run by the texi2dvi
shell script (provided with the Texinfo
package) when generating a DVI file from Texinfo source.
install-info
or instinfo
install-info
inserts menu entries from an Info file into the
top-level `dir' file in the Info system. It is most often run
as part of a package's installation script, to add the program's manual
to the top-level Info menu. Since the name of
install-info
is very long (and exceeds the DOS 8+3 file name
limits), a "symlink" is provided called instinfo
.
The GNU Text Utilities manipulate textual data. Many of the Text Utilities manipulate fields of data. A field is a block of text surrounded by a delimiting character, usually a space. Thus, each word in a line of text is considered a separate field.
Programs in the Text Utilities include:
cat
cat
concatenates files together and sends the result to the
standard output.
cksum
cksum
calculates a CRC checksum for files. It is
compliant with the algorithm stated in the POSIX.2 standard.
comm
csplit
csplit
is a context-based file-splitter. It can use regular
expressions to break up a file.
cut
cut
prints fields or character ranges (e.g., the first 10
characters of a line) from successive lines in a file.
expand
expand
replaces the tabs in a file with a specified number of
spaces.
fold
fold
wraps files to fit in a specified number of columns (80 being
the default).
head
head
prints a specified number of lines from the
beginning of a file (10 is the default).
join
join
conditionally merges two files together based on matching
fields in the files.
md5sum
md5sum
calculates a "fingerprint" for files using the MD5
algorithm. This fingerprint is unique to the contents of the file; any
change in the file will result in a different fingerprint.
nl
od
od
dumps the contents of a file in a number of formats,
including octal, hex, and several ASCII formats.
paste
paste
merges multiple files together into one file by
concatenating lines from each file to form one line in the output file.
This can be used to reassemble a file after cut
has been used on
it.
pr
sort
split
sum
tac
tac
prints the lines of a file in reverse order. You may also
use tac
to concatenate files; however, the files themselves will
be presented with their lines in reverse order.
tail
tail
prints a specified number of lines from the end of a
file (10 is the default).
tr
tr
maps arbitrary character sets to other sets (e.g., translating
upper-case to lower-case).
unexpand
unexpand
"unexpands" sequences of a specified number of spaces
into tab characters.
uniq
uniq
removes duplicate lines from a sorted file.
wc
wc
counts characters, words, and/or lines in a file.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
These articles provide background information about free software, the GNU project, and the Free Software Foundation.
What This Software Won't Do What this software won't do. What's GNU? What is Free Software? What is free software? What Is the Free Software Foundation? What is the Free Software Foundation? What is Copyleft? What is copyleft? Linux and the GNU Project What is a Linux-based GNU system? The GNU Manifesto
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
The software that comes with this book can make a Microsoft operating system more convenient to use, or more like Unix and GNU/Linux systems that you might be familiar with. But there is something it can't do: it can't make you free.
GNU software is free software (see section What is Free Software?), which means you have the freedom to use the software in all constructive ways that don't threaten the freedom of others. The source code is included, so you can study the software, adapt it to your needs, and release versions with new features. You can also give away copies of these programs, or even sell copies, as long as you do it as specified in the GNU General Public License. This software is free software because in using it you are free.
But the software on the CD is not a whole operating system. It is designed to work with MS-DOS or MS-Windows, not replace them entirely. MS-DOS and MS-Windows are not free software; if you use them, Microsoft has you under its thumb.
Not that we mean to single out Microsoft; in this respect, it is no different from most software companies. Microsoft operating systems are proprietary software. This means the source code is a secret, so that you cannot learn how the software works, or change it to fit your needs, or publish improvements. And if you share copies with your neighbor, the proprietary software publisher will call you a "pirate" and threaten to put you in jail. As long as there is proprietary software on your computer, your freedom is only partial.
We hope that in using the free GNU software that comes with this book, you will start to appreciate the freedom that free software provides. If you do, the next step is to get rid of the proprietary operating system and switch to a free system--a Linux-based GNU system (see section Linux and the GNU Project).
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
GNU (pronounced "guh-new") is an operating system which is upward-compatible with Unix, and is entirely free software. The first test release of the entire GNU system was in 1996; however, most components of the GNU system have been in use for some number of years, and many of them are on the CD-ROM in this book.
But the short answer is, GNU's Not Unix. (That's what GNU stands for.)
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
The word "free" in "free software" refers to freedom, not price. It means you have the freedom to use the software in all constructive ways that don't threaten the freedom of others.
You may or may not pay money to get GNU software, but either way you have certain specific freedoms once you get it. First, you have the freedom to copy a program and distribute it to your friends and co-workers; second, you have the freedom to study and change a program as you wish (this requires having access to the source code); third, you have the freedom to release a modified or improved version.
If you redistribute GNU software, you may charge a distribution fee or you may give it away; but you must always follow the distribution terms--in most cases the GNU General Public License--which ensure that the software will also be free software for the person who gets the copy from you. For details, see What is Copyleft?, and GNU General Public License.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
The Free Software Foundation, Inc. (the FSF) is dedicated to eliminating restrictions on copying, redistributing, understanding, and modifying computer programs. We do this by promoting the development and use of free software--focusing on the GNU system.
Other organizations distribute whatever free software happens to be available. By contrast, the FSF concentrates on development of new free software. We have worked to produce a free system complete enough to eliminate the need for proprietary operating systems.
Besides developing GNU, the Foundation distributes software electronically over the Internet at no charge, and distributes CD-ROMs and printed manuals for which we charge a fee. We depend on your purchases and donations to keep the GNU Project moving forward. We are tax exempt--any donations you make to the Free Software Foundation are tax deductable.
After we release programs, we continually update and improve them. We release between 2 and 20 updates per year for each program. Doing this while developing new programs takes a lot of work, so any donations of pertinent source code and documentation, machines, labor, or money are always appreciated.
The Foundation also maintains a Service Directory--a list of people who offer service to users of GNU software for a fee. The Service Directory is located in the file `SERVICE' in the top-level directory of the CD-ROM. Service can mean answering questions for new users, customizing programs, porting to new systems, or technical support.
If you would like to be listed in the Service Directory, if you would like to help GNU software, or if you'd like an up-to-date FSF order form, please contact us. See section Contacting the Foundation.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
The simplest way to make a program free is to put it in the public domain, uncopyrighted. But this permits others to make proprietary modified versions, which deny others the freedom to redistribute and modify; such versions undermine the goal of giving freedom to all users. To prevent this, copyleft uses copyright in a novel manner. Typically, copyrights are used to take away freedoms; copyleft uses copyright to preserve freedoms. Copyleft is a legal instrument that requires those who redistribute a program to include the rights to use, modify, and redistribute the code; the code and the freedoms become legally inseparable.
The copyleft used by the GNU Project is made from the combination of a regular copyright notice and the GNU General Public License (or GNU GPL; see section GNU General Public License). The GNU GPL is a copying license which basically says that you have the aforementioned freedoms.
An alternate form, the GNU Library General Public License (or GNU LGPL; see section GNU Library General Public License), applies to a few GNU libraries. This license permits linking the libraries into proprietary executables under certain conditions. The appropriate license is included in each GNU source code distribution and in many manuals. Printed copies are available upon request.
We strongly encourage you to copyleft your programs and documentation, and we have made it as simple as possible for you to do so. The details on how to apply either form of public license appear at the end of that license.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Many computer users run a modified version of the GNU system every day, without realizing it. Through a peculiar turn of events, the version of GNU which is widely used today is more often known as "Linux", and many users are not aware of the extent of its connection with the GNU Project.
There really is a Linux; it is a kernel, and these people are using it. But you can't use a kernel by itself; a kernel is useful only as part of a whole system. The system in which Linux is typically used is a modified variant of the GNU system--in other words, a Linux-based GNU system.
Many users are not fully aware of the distinction between the kernel, which is Linux, and the whole system, which they also call "Linux". The ambiguous use of the name doesn't promote understanding.
Programmers generally know that Linux is a kernel. But since they have generally heard the whole system called "Linux" as well, they often envisage a history which fits that name. For example, many believe that once Linus Torvalds finished writing the kernel, his friends looked around for other free software, and for no particular reason most everything necessary to make a Unix-like system was already available.
What they found was no accident--it was the GNU system. The available free software added up to a complete system because the GNU Project had been working since 1984 to make one. The GNU Manifesto (see section The GNU Manifesto) had set forth the goal of developing a free Unix-like system, called GNU. By the time Linux was written, the system was almost finished.
Most free software projects have the goal of developing a particular program for a particular job. For example, Linus Torvalds set out to write a Unix-like kernel (Linux); Donald Knuth set out to write a text formatter (TeX); Bob Scheifler set out to develop a window system (X Windows). It's natural to measure the contribution of this kind of project by specific programs that came from the project.
If we tried to measure the GNU Project's contribution in this way, what would we conclude? One CD-ROM vendor found that in their "Linux distribution", GNU software was the largest single contingent, around 28% of the total source code, and this included some of the essential major components without which there could be no system. Linux itself was about 3%. So if you were going to pick a name for the system based on who wrote the programs in the system, the most appropriate single choice would be "GNU".
But we don't think that is the right way to consider the question. The GNU Project was not, is not, a project to develop specific software packages. It was not a project to develop a C compiler, although we did. It was not a project to develop a text editor, although we developed one. The GNU Project's aim was to develop a complete free Unix-like system.
Many people have made major contributions to the free software in the system, and they all deserve credit. But the reason it is a system---and not just a collection of useful programs--is because the GNU Project set out to make it one. We made a list of the programs needed to make a complete free system, and we systematically found, wrote, or found people to write everything on the list. We wrote essential but unexciting major components, such as the assembler and linker, because you can't have a system without them. A complete system needs more than just programming tools; the Bourne Again SHell, the PostScript interpreter Ghostscript, and the GNU C library are just as important.
By the early 90s we had put together the whole system aside from the kernel (and we were also working on a kernel, the GNU Hurd, which runs on top of Mach). Developing this kernel has been a lot harder than we expected, and we are still working on finishing it.
Fortunately, you don't have to wait for it, because Linux is working now. When Linus Torvalds wrote Linux, he filled the last major gap. People could then put Linux together with the GNU system to make a complete free system: a Linux-based GNU system (or GNU/Linux system, for short).
Putting them together sounds simple, but it was not a trivial job. The GNU C library (called glibc for short) needed substantial changes. Integrating a complete system as a distribution that would work "out of the box" was a big job, too. It required addressing the issue of how to install and boot the system--a problem we had not tackled, because we hadn't yet reached that point. The people who developed the various system distributions made a substantial contribution.
The GNU Project supports GNU/Linux systems as well as the GNU system--even with funds. We funded the rewriting of the Linux-related extensions to the GNU C library, so that now they are well integrated, and the newest GNU/Linux systems use the current library release with no changes. We also funded an early stage of the development of Debian GNU/Linux.
We use Linux-based GNU systems today for most of our work, and we hope you use them too. But please don't confuse the public by using the name "Linux" ambiguously. Linux is the kernel, one of the essential major components of the system. The system as a whole is more or less the GNU system.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Copyright © 1985, 1993 Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111, USA. Permission is granted to anyone to make or distribute verbatim copies of this document, in any medium, provided that the copyright notice and permission notice are preserved, and that the distributor grants the recipient permission for further redistribution as permitted by this notice. Modified versions may not be made. |
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
The GNU Manifesto which appears below was written by Richard Stallman at the beginning of the GNU project, to ask for participation and support. For the first few years, it was updated in minor ways to account for developments, but now it seems best to leave it unchanged as most people have seen it.
Since that time, we have learned about certain common misunderstandings that different wording could help avoid. Footnotes added in 1993 help clarify these points.
For up--to--date information about the available GNU software, please see the latest issue of the GNU's Bulletin. The list is much too long to include here.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
GNU, which stands for Gnu's Not Unix, is the name for the complete Unix-compatible software system which I am writing so that I can give it away free to everyone who can use it. (9)
Several other volunteers are helping me. Contributions of time, money, programs and equipment are greatly needed.
So far we have an Emacs text editor with Lisp for writing editor commands, a source level debugger, a yacc-compatible parser generator, a linker, and around 35 utilities. A shell (command interpreter) is nearly completed. A new portable optimizing C compiler has compiled itself and may be released this year. An initial kernel exists but many more features are needed to emulate Unix. When the kernel and compiler are finished, it will be possible to distribute a GNU system suitable for program development. We will use TeX as our text formatter, but an nroff is being worked on. We will use the free, portable X window system as well. After this we will add a portable Common Lisp, an Empire game, a spreadsheet, and hundreds of other things, plus on-line documentation. We hope to supply, eventually, everything useful that normally comes with a Unix system, and more.
GNU will be able to run Unix programs, but will not be identical to Unix. We will make all improvements that are convenient, based on our experience with other operating systems. In particular, we plan to have longer file names, file version numbers, a crashproof file system, file name completion perhaps, terminal-independent display support, and perhaps eventually a Lisp-based window system through which several Lisp programs and ordinary Unix programs can share a screen. Both C and Lisp will be available as system programming languages. We will try to support UUCP, MIT Chaosnet, and Internet protocols for communication.
GNU is aimed initially at machines in the 68000/16000 class with virtual memory, because they are the easiest machines to make it run on. The extra effort to make it run on smaller machines will be left to someone who wants to use it on them.
To avoid horrible confusion, please pronounce the `G' in the word `GNU' when it is the name of this project.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
I consider that the golden rule requires that if I like a program I must share it with other people who like it. Software sellers want to divide the users and conquer them, making each user agree not to share with others. I refuse to break solidarity with other users in this way. I cannot in good conscience sign a nondisclosure agreement or a software license agreement. For years I worked within the Artificial Intelligence Lab to resist such tendencies and other inhospitalities, but eventually they had gone too far: I could not remain in an institution where such things are done for me against my will.
So that I can continue to use computers without dishonor, I have decided to put together a sufficient body of free software so that I will be able to get along without any software that is not free. I have resigned from the AI lab to deny MIT any legal excuse to prevent me from giving GNU away.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Unix is not my ideal system, but it is not too bad. The essential features of Unix seem to be good ones, and I think I can fill in what Unix lacks without spoiling them. And a system compatible with Unix would be convenient for many other people to adopt.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
GNU is not in the public domain. Everyone will be permitted to modify and redistribute GNU, but no distributor will be allowed to restrict its further redistribution. That is to say, proprietary modifications will not be allowed. I want to make sure that all versions of GNU remain free.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
I have found many other programmers who are excited about GNU and want to help.
Many programmers are unhappy about the commercialization of system software. It may enable them to make more money, but it requires them to feel in conflict with other programmers in general rather than feel as comrades. The fundamental act of friendship among programmers is the sharing of programs; marketing arrangements now typically used essentially forbid programmers to treat others as friends. The purchaser of software must choose between friendship and obeying the law. Naturally, many decide that friendship is more important. But those who believe in law often do not feel at ease with either choice. They become cynical and think that programming is just a way of making money.
By working on and using GNU rather than proprietary programs, we can be hospitable to everyone and obey the law. In addition, GNU serves as an example to inspire and a banner to rally others to join us in sharing. This can give us a feeling of harmony which is impossible if we use software that is not free. For about half the programmers I talk to, this is an important happiness that money cannot replace.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
I am asking computer manufacturers for donations of machines and money. I'm asking individuals for donations of programs and work.
One consequence you can expect if you donate machines is that GNU will run on them at an early date. The machines should be complete, ready to use systems, approved for use in a residential area, and not in need of sophisticated cooling or power.
I have found very many programmers eager to contribute part-time work for GNU. For most projects, such part-time distributed work would be very hard to coordinate; the independently-written parts would not work together. But for the particular task of replacing Unix, this problem is absent. A complete Unix system contains hundreds of utility programs, each of which is documented separately. Most interface specifications are fixed by Unix compatibility. If each contributor can write a compatible replacement for a single Unix utility, and make it work properly in place of the original on a Unix system, then these utilities will work right when put together. Even allowing for Murphy to create a few unexpected problems, assembling these components will be a feasible task. (The kernel will require closer communication and will be worked on by a small, tight group.)
If I get donations of money, I may be able to hire a few people full or part time. The salary won't be high by programmers' standards, but I'm looking for people for whom building community spirit is as important as making money. I view this as a way of enabling dedicated people to devote their full energies to working on GNU by sparing them the need to make a living in another way.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Once GNU is written, everyone will be able to obtain good system software free, just like air. (10)
This means much more than just saving everyone the price of a Unix license. It means that much wasteful duplication of system programming effort will be avoided. This effort can go instead into advancing the state of the art.
Complete system sources will be available to everyone. As a result, a user who needs changes in the system will always be free to make them himself, or hire any available programmer or company to make them for him. Users will no longer be at the mercy of one programmer or company which owns the sources and is in sole position to make changes.
Schools will be able to provide a much more educational environment by encouraging all students to study and improve the system code. Harvard's computer lab used to have the policy that no program could be installed on the system if its sources were not on public display, and upheld it by actually refusing to install certain programs. I was very much inspired by this.
Finally, the overhead of considering who owns the system software and what one is or is not entitled to do with it will be lifted.
Arrangements to make people pay for using a program, including licensing of copies, always incur a tremendous cost to society through the cumbersome mechanisms necessary to figure out how much (that is, which programs) a person must pay for. And only a police state can force everyone to obey them. Consider a space station where air must be manufactured at great cost: charging each breather per liter of air may be fair, but wearing the metered gas mask all day and all night is intolerable even if everyone can afford to pay the air bill. And the TV cameras everywhere to see if you ever take the mask off are outrageous. It's better to support the air plant with a head tax and chuck the masks.
Copying all or parts of a program is as natural to a programmer as breathing, and as productive. It ought to be as free.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Nobody will use it if it is free, because that means they can't rely on any support.You have to charge for the program to pay for providing the support.
If people would rather pay for GNU plus service than get GNU free without service, a company to provide just service to people who have obtained GNU free ought to be profitable. (11)
We must distinguish between support in the form of real programming work and mere handholding. The former is something one cannot rely on from a software vendor. If your problem is not shared by enough people, the vendor will tell you to get lost.
If your business needs to be able to rely on support, the only way is to have all the necessary sources and tools. Then you can hire any available person to fix your problem; you are not at the mercy of any individual. With Unix, the price of sources puts this out of consideration for most businesses. With GNU this will be easy. It is still possible for there to be no available competent person, but this problem cannot be blamed on distribution arrangements. GNU does not eliminate all the world's problems, only some of them.
Meanwhile, the users who know nothing about computers need handholding: doing things for them which they could easily do themselves but don't know how.
Such services could be provided by companies that sell just hand-holding and repair service. If it is true that users would rather spend money and get a product with service, they will also be willing to buy the service having received the product free. The service companies will compete in quality and price; users will not be tied to any particular one. Meanwhile, those of us who don't need the service should be able to use the program without paying for the service.
You cannot reach many people without advertising, and you must charge for the program to support that.It's no use advertising a program people can get free.
There are various forms of free or very cheap publicity that can be used to inform numbers of computer users about something like GNU. But it may be true that one can reach more microcomputer users with advertising. If this is really so, a business which advertises the service of copying and mailing GNU for a fee ought to be successful enough to pay for its advertising and more. This way, only the users who benefit from the advertising pay for it.
On the other hand, if many people get GNU from their friends, and such companies don't succeed, this will show that advertising was not really necessary to spread GNU. Why is it that free market advocates don't want to let the free market decide this? (12)
My company needs a proprietary operating system to get a competitive edge.
GNU will remove operating system software from the realm of competition. You will not be able to get an edge in this area, but neither will your competitors be able to get an edge over you. You and they will compete in other areas, while benefiting mutually in this one. If your business is selling an operating system, you will not like GNU, but that's tough on you. If your business is something else, GNU can save you from being pushed into the expensive business of selling operating systems.
I would like to see GNU development supported by gifts from many manufacturers and users, reducing the cost to each. (13)
Don't programmers deserve a reward for their creativity?
If anything deserves a reward, it is social contribution. Creativity can be a social contribution, but only in so far as society is free to use the results. If programmers deserve to be rewarded for creating innovative programs, by the same token they deserve to be punished if they restrict the use of these programs.
Shouldn't a programmer be able to ask for a reward for his creativity?
There is nothing wrong with wanting pay for work, or seeking to maximize one's income, as long as one does not use means that are destructive. But the means customary in the field of software today are based on destruction.
Extracting money from users of a program by restricting their use of it is destructive because the restrictions reduce the amount and the ways that the program can be used. This reduces the amount of wealth that humanity derives from the program. When there is a deliberate choice to restrict, the harmful consequences are deliberate destruction.
The reason a good citizen does not use such destructive means to become wealthier is that, if everyone did so, we would all become poorer from the mutual destructiveness. This is Kantian ethics; or, the Golden Rule. Since I do not like the consequences that result if everyone hoards information, I am required to consider it wrong for one to do so. Specifically, the desire to be rewarded for one's creativity does not justify depriving the world in general of all or part of that creativity.
Won't programmers starve?
I could answer that nobody is forced to be a programmer. Most of us cannot manage to get any money for standing on the street and making faces. But we are not, as a result, condemned to spend our lives standing on the street making faces, and starving. We do something else.
But that is the wrong answer because it accepts the questioner's implicit assumption: that without ownership of software, programmers cannot possibly be paid a cent. Supposedly it is all or nothing.
The real reason programmers will not starve is that it will still be possible for them to get paid for programming; just not paid as much as now.
Restricting copying is not the only basis for business in software. It is the most common basis because it brings in the most money. If it were prohibited, or rejected by the customer, software business would move to other bases of organization which are now used less often. There are always numerous ways to organize any kind of business.
Probably programming will not be as lucrative on the new basis as it is now. But that is not an argument against the change. It is not considered an injustice that sales clerks make the salaries that they now do. If programmers made the same, that would not be an injustice either. (In practice they would still make considerably more than that.)
Don't people have a right to control how their creativity is used?
"Control over the use of one's ideas" really constitutes control over other people's lives; and it is usually used to make their lives more difficult.
People who have studied the issue of intellectual property rights carefully (such as lawyers) say that there is no intrinsic right to intellectual property. The kinds of supposed intellectual property rights that the government recognizes were created by specific acts of legislation for specific purposes.
For example, the patent system was established to encourage inventors to disclose the details of their inventions. Its purpose was to help society rather than to help inventors. At the time, the life span of 17 years for a patent was short compared with the rate of advance of the state of the art. Since patents are an issue only among manufacturers, for whom the cost and effort of a license agreement are small compared with setting up production, the patents often do not do much harm. They do not obstruct most individuals who use patented products.
The idea of copyright did not exist in ancient times, when authors frequently copied other authors at length in works of non-fiction. This practice was useful, and is the only way many authors' works have survived even in part. The copyright system was created expressly for the purpose of encouraging authorship. In the domain for which it was invented--books, which could be copied economically only on a printing press--it did little harm, and did not obstruct most of the individuals who read the books.
All intellectual property rights are just licenses granted by society because it was thought, rightly or wrongly, that society as a whole would benefit by granting them. But in any particular situation, we have to ask: are we really better off granting such license? What kind of act are we licensing a person to do?
The case of programs today is very different from that of books a hundred years ago. The fact that the easiest way to copy a program is from one neighbor to another, the fact that a program has both source code and object code which are distinct, and the fact that a program is used rather than read and enjoyed, combine to create a situation in which a person who enforces a copyright is harming society as a whole both materially and spiritually; in which a person should not do so regardless of whether the law enables him to.
Competition makes things get done better.
The paradigm of competition is a race: by rewarding the winner, we encourage everyone to run faster. When capitalism really works this way, it does a good job; but its defenders are wrong in assuming it always works this way. If the runners forget why the reward is offered and become intent on winning, no matter how, they may find other strategies--such as, attacking other runners. If the runners get into a fist fight, they will all finish late.
Proprietary and secret software is the moral equivalent of runners in a fist fight. Sad to say, the only referee we've got does not seem to object to fights; he just regulates them ("For every ten yards you run, you can fire one shot"). He really ought to break them up, and penalize runners for even trying to fight.
Won't everyone stop programming without a monetary incentive?
Actually, many people will program with absolutely no monetary incentive. Programming has an irresistible fascination for some people, usually the people who are best at it. There is no shortage of professional musicians who keep at it even though they have no hope of making a living that way.
But really this question, though commonly asked, is not appropriate to the situation. Pay for programmers will not disappear, only become less. So the right question is, will anyone program with a reduced monetary incentive? My experience shows that they will.
For more than ten years, many of the world's best programmers worked at the Artificial Intelligence Lab for far less money than they could have had anywhere else. They got many kinds of non-monetary rewards: fame and appreciation, for example. And creativity is also fun, a reward in itself.
Then most of them left when offered a chance to do the same interesting work for a lot of money.
What the facts show is that people will program for reasons other than riches; but if given a chance to make a lot of money as well, they will come to expect and demand it. Low-paying organizations do poorly in competition with high-paying ones, but they do not have to do badly if the high-paying ones are banned.
We need the programmers desperately. If they demand that we stop helping our neighbors, we have to obey.
You're never so desperate that you have to obey this sort of demand. Remember: millions for defense, but not a cent for tribute!
Programmers need to make a living somehow.
In the short run, this is true. However, there are plenty of ways that programmers could make a living without selling the right to use a program. This way is customary now because it brings programmers and businessmen the most money, not because it is the only way to make a living. It is easy to find other ways if you want to find them. Here are a number of examples.
A manufacturer introducing a new computer will pay for the porting of operating systems onto the new hardware.
The sale of teaching, hand-holding and maintenance services could also employ programmers.
People with new ideas could distribute programs as freeware, asking for donations from satisfied users, or selling hand-holding services. I have met people who are already working this way successfully.
Users with related needs can form users' groups, and pay dues. A group would contract with programming companies to write programs that the group's members would like to use.
All sorts of development can be funded with a Software Tax:
Suppose everyone who buys a computer has to pay x percent of the price as a software tax. The government gives this to an agency like the NSF to spend on software development.
But if the computer buyer makes a donation to software development himself, he can take a credit against the tax. He can donate to the project of his own choosing--often, chosen because he hopes to use the results when it is done. He can take a credit for any amount of donation up to the total tax he had to pay.
The total tax rate could be decided by a vote of the payers of the tax, weighted according to the amount they will be taxed on.
The consequences:
In the long run, making programs free is a step toward the post-scarcity world, where nobody will have to work very hard just to make a living. People will be free to devote themselves to activities that are fun, such as programming, after spending the necessary ten hours a week on required tasks such as legislation, family counseling, robot repair and asteroid prospecting. There will be no need to be able to make a living from programming.
We have already greatly reduced the amount of work that the whole society must do for its actual productivity, but only a little of this has translated itself into leisure for workers because much nonproductive activity is required to accompany productive activity. The main causes of this are bureaucracy and isometric struggles against competition. Free software will greatly reduce these drains in the area of software production. We must do this, in order for technical gains in productivity to translate into less work for us.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
B.1 GNU GENERAL PUBLIC LICENSE B.2 GNU LIBRARY GENERAL PUBLIC LICENSE
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Copyright © 1989, 1991 Free Software Foundation, Inc. 59 Temple Place -- Suite 330, Boston, MA 02111-1307, USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. |
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Library General Public License instead.) You can apply it to your programs, too.
When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things.
To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it.
For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights.
We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software.
Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations.
Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all.
The precise terms and conditions for copying, distribution and modification follow.
Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does.
You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee.
These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it.
Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program.
In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License.
The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable.
If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code.
If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances.
It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice.
This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License.
Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms.
To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found.
one line to give the program's name and an idea of what it does. Copyright (C) 19yy name of author This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. |
Also add information on how to contact you by electronic and paper mail.
If the program is interactive, make it output a short notice like this when it starts in an interactive mode:
Gnomovision version 69, Copyright (C) 19yy name of author Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. |
The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, the commands you use may be called something other than `show w' and `show c'; they could even be mouse-clicks or menu items--whatever suits your program.
You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the program, if necessary. Here is a sample; alter the names:
Yoyodyne, Inc., hereby disclaims all copyright interest in the program `Gnomovision' (which makes passes at compilers) written by James Hacker. signature of Ty Coon, 1 April 1989 Ty Coon, President of Vice |
This General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Library General Public License instead of this License.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Copyright © 1991 Free Software Foundation, Inc. 59 Temple Place -- Suite 330, Boston, MA 02111-1307, USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. [This is the first released version of the library GPL. It is numbered 2 because it goes with version 2 of the ordinary GPL.] |
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public Licenses are intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users.
This license, the Library General Public License, applies to some specially designated Free Software Foundation software, and to any other libraries whose authors decide to use it. You can use it for your libraries, too.
When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things.
To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the library, or if you modify it.
For example, if you distribute copies of the library, whether gratis or for a fee, you must give the recipients all the rights that we gave you. You must make sure that they, too, receive or can get the source code. If you link a program with the library, you must provide complete object files to the recipients so that they can relink them with the library, after making changes to the library and recompiling it. And you must show them these terms so they know their rights.
Our method of protecting your rights has two steps: (1) copyright the library, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the library.
Also, for each distributor's protection, we want to make certain that everyone understands that there is no warranty for this free library. If the library is modified by someone else and passed on, we want its recipients to know that what they have is not the original version, so that any problems introduced by others will not reflect on the original authors' reputations.
Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that companies distributing free software will individually obtain patent licenses, thus in effect transforming the program into proprietary software. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all.
Most GNU software, including some libraries, is covered by the ordinary GNU General Public License, which was designed for utility programs. This license, the GNU Library General Public License, applies to certain designated libraries. This license is quite different from the ordinary one; be sure to read it in full, and don't assume that anything in it is the same as in the ordinary license.
The reason we have a separate public license for some libraries is that they blur the distinction we usually make between modifying or adding to a program and simply using it. Linking a program with a library, without changing the library, is in some sense simply using the library, and is analogous to running a utility program or application program. However, in a textual and legal sense, the linked executable is a combined work, a derivative of the original library, and the ordinary General Public License treats it as such.
Because of this blurred distinction, using the ordinary General Public License for libraries did not effectively promote software sharing, because most developers did not use the libraries. We concluded that weaker conditions might promote sharing better.
However, unrestricted linking of non-free programs would deprive the users of those programs of all benefit from the free status of the libraries themselves. This Library General Public License is intended to permit developers of non-free programs to use free libraries, while preserving your freedom as a user of such programs to change the free libraries that are incorporated in them. (We have not seen how to achieve this as regards changes in header files, but we have achieved it as regards changes in the actual functions of the Library.) The hope is that this will lead to faster development of free libraries.
The precise terms and conditions for copying, distribution and modification follow. Pay close attention to the difference between a "work based on the library" and a "work that uses the library". The former contains code derived from the library, while the latter only works together with the library.
Note that it is possible for a library to be covered by the ordinary General Public License rather than by this special one.
A "library" means a collection of software functions and/or data prepared so as to be conveniently linked with application programs (which use some of those functions and data) to form executables.
The "Library", below, refers to any such software library or work which has been distributed under these terms. A "work based on the Library" means either the Library or any derivative work under copyright law: that is to say, a work containing the Library or a portion of it, either verbatim or with modifications and/or translated straightforwardly into another language. (Hereinafter, translation is included without limitation in the term "modification".)
"Source code" for a work means the preferred form of the work for making modifications to it. For a library, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the library.
Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running a program using the Library is not restricted, and output from such a program is covered only if its contents constitute a work based on the Library (independent of the use of the Library in a tool for writing it). Whether that is true depends on what the Library does and what the program that uses the Library does.
You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee.
(For example, a function in a library to compute square roots has a purpose that is entirely well-defined independent of the application. Therefore, Subsection 2d requires that any application-supplied function or table used by this function must be optional: if the application does not supply it, the square root function must still compute square roots.)
These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Library, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Library, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it.
Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Library.
In addition, mere aggregation of another work not based on the Library with the Library (or with a work based on the Library) on a volume of a storage or distribution medium does not bring the other work under the scope of this License.
Once this change is made in a given copy, it is irreversible for that copy, so the ordinary GNU General Public License applies to all subsequent copies and derivative works made from that copy.
This option is useful when you wish to copy part of the code of the Library into a program that is not a library.
If distribution of object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place satisfies the requirement to distribute the source code, even though third parties are not compelled to copy the source along with the object code.
However, linking a "work that uses the Library" with the Library creates an executable that is a derivative of the Library (because it contains portions of the Library), rather than a "work that uses the library". The executable is therefore covered by this License. Section 6 states terms for distribution of such executables.
When a "work that uses the Library" uses material from a header file that is part of the Library, the object code for the work may be a derivative work of the Library even though the source code is not. Whether this is true is especially significant if the work can be linked without the Library, or if the work is itself a library. The threshold for this to be true is not precisely defined by law.
If such an object file uses only numerical parameters, data structure layouts and accessors, and small macros and small inline functions (ten lines or less in length), then the use of the object file is unrestricted, regardless of whether it is legally a derivative work. (Executables containing this object code plus portions of the Library will still fall under Section 6.)
Otherwise, if the work is a derivative of the Library, you may distribute the object code for the work under the terms of Section 6. Any executables containing that work also fall under Section 6, whether or not they are linked directly with the Library itself.
You must give prominent notice with each copy of the work that the Library is used in it and that the Library and its use are covered by this License. You must supply a copy of this License. If the work during execution displays copyright notices, you must include the copyright notice for the Library among them, as well as a reference directing the user to the copy of this License. Also, you must do one of these things:
For an executable, the required form of the "work that uses the Library" must include any data and utility programs needed for reproducing the executable from it. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable.
It may happen that this requirement contradicts the license restrictions of other proprietary libraries that do not normally accompany the operating system. Such a contradiction means you cannot use both them and the Library together in an executable that you distribute.
If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply, and the section as a whole is intended to apply in other circumstances.
It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice.
This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License.
Each version is given a distinguishing version number. If the Library specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Library does not specify a license version number, you may choose any version ever published by the Free Software Foundation.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
If you develop a new library, and you want it to be of the greatest possible use to the public, we recommend making it free software that everyone can redistribute and change. You can do so by permitting redistribution under these terms (or, alternatively, under the terms of the ordinary General Public License).
To apply these terms, attach the following notices to the library. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found.
one line to give the library's name and an idea of what it does. Copyright (C) year name of author This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. |
Also add information on how to contact you by electronic and paper mail.
You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the library, if necessary. Here is a sample; alter the names:
Yoyodyne, Inc., hereby disclaims all copyright interest in the library `Frob' (a library for tweaking knobs) written by James Random Hacker. signature of Ty Coon, 1 April 1990 Ty Coon, President of Vice |
That's all there is to it!
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Jump to: | .
A B C D E F G H I J K L M N O P R S T U V |
---|
Jump to: | .
A B C D E F G H I J K L M N O P R S T U V |
---|
[Top] | [Contents] | [Index] | [ ? ] |
In this book we use MS-Windows as the general name of all Microsoft operating systems which present windowed user interface, including Windows 3.X, Windows 9X, and Windows NT. Where the difference between these variants matters, we use their specific names.
Actually, this is not entirely true: the kernel of these operating systems supports both forward and backslashes, but many native DOS/Windows programs consider only backslash when they parse file names. In particular, the stock shell `COMMAND.COM' will not recognize Unix-style forward slashes as directory separators.
Windows 3.X includes versions 3.1 and 3.11 of Microsoft Windows.
These include Windows NT version 3.5 and later, and Windows 95, 98 and subsequent versions.
DPMI, the DOS Protected Mode Interface, provides a way to run protected-mode programs on top of MS-DOS, which is a real-mode operating system.
`COMMAND.COM' has a fixed-size environment which might be too small to accommodate the additional variables required by GNU programs.
In fact, the message itself is printed when `setup.bat' tries to put the necessary variables into the environment, to see whether it is large enough.
Some people say DVI is the plural of "devious."
The wording here was careless. The intention was that nobody would have to pay for permission to use the GNU system. But the words don't make this clear, and people often interpret them as saying that copies of GNU should always be distributed at little or no charge. That was never the intent; later on, the manifesto mentions the possibility of companies providing the service of distribution for a profit. Subsequently I have learned to distinguish carefully between "free" in the sense of freedom and "free" in the sense of price. Free software is software that users have the freedom to distribute and change. Some users may obtain copies at no charge, while others pay to obtain copies--and if the funds help support improving the software, so much the better. The important thing is that everyone who has a copy has the freedom to cooperate with others in using it.
This is another place I failed to distinguish carefully between the two different meanings of "free". The statement as it stands is not false--you can get copies of GNU software at no charge, from your friends or over the net. But it does suggest the wrong idea.
Several such companies now exist.
The Free Software Foundation raises most of its funds from a distribution service, although it is a charity rather than a company. If no one chooses to obtain copies by ordering them from the FSF, it will be unable to do its work. But this does not mean that proprietary restrictions are justified to force every user to pay. If a small fraction of all the users order copies from the FSF, that is sufficient to keep the FSF afloat. So we ask users to choose to support us in this way. Have you done your part?
A group of computer companies recently pooled funds to support maintenance of the GNU C Compiler.
[Top] | [Contents] | [Index] | [ ? ] |
Preface
Style Conventions1. Overview
Acknowledgments
Technical Non-Support
Reporting Bugs
Contacting the Foundation
What is in this Manual?2. Installing the Software
Hardware Requirements
Operating System Requirements
Programs to Try
Organization of the CD-ROM
Copying installation3. Documentation on the CD-ROM
Run-from-the-CD Installation
How automatic installation works
Installing some of the files on your hard disk
Manual Installation
Windows Programs
Setting up NTEmacsHow to rebuild a package from source code.
`.emacs' init file on Windows NT
Installing Cygnus ports of GNU Software
Troubleshooting
Installation Problems
Problems Running the Programs
How to Run4. Packages on this CDinfo
How to Read HTML-formatted Documentation
How to Read Man Pages
Formats that Produce Printed Manuals
A. Background Information
What This Software Won't DoB. Copying Conditions for GNU Software
What's GNU?
What is Free Software?
What Is the Free Software Foundation?
What is Copyleft?
Linux and the GNU Project
The GNU Manifesto
The GNU Manifesto
What's GNU? Gnu's Not Unix!
Why I Must Write GNU
Why GNU Will Be Compatible with Unix
How GNU Will Be Available
Why Many Other Programmers Want to Help
How You Can Contribute
Why All Computer Users Will Benefit
Some Easily Rebutted Objections to GNU's Goals
B.1 GNU GENERAL PUBLIC LICENSEIndex
B.1.1 PreambleB.2 GNU LIBRARY GENERAL PUBLIC LICENSE
B.1.2 How to Apply These Terms to Your New Programs
B.2.1 Preamble
B.2.2 How to Apply These Terms to Your New Libraries
[Top] | [Contents] | [Index] | [ ? ] |
Preface
1. Overview
2. Installing the Software
3. Documentation on the CD-ROM
4. Packages on this CD
A. Background Information
B. Copying Conditions for GNU Software
Index
[Top] | [Contents] | [Index] | [ ? ] |
Button | Name | Go to | From 1.2.3 go to |
---|---|---|---|
[ < ] | Back | previous section in reading order | 1.2.2 |
[ > ] | Forward | next section in reading order | 1.2.4 |
[ << ] | FastBack | previous or up-and-previous section | 1.1 |
[ Up ] | Up | up section | 1.2 |
[ >> ] | FastForward | next or up-and-next section | 1.3 |
[Top] | Top | cover (top) of document | |
[Contents] | Contents | table of contents | |
[Index] | Index | concept index | |
[ ? ] | About | this page |