next up previous contents
Next: 3. Basic Usage Up: Aspell .33.7.1 alpha A Previous: 1. Introduction
  Contents

Subsections

  * 2.1 Requirements
  * 2.2 Obtaining
  * 2.3 Support
  * 2.4 Helping Out
  * 2.5 Compiling & Installing
      + 2.5.1 Generic Install Instructions
      + 2.5.2 General Problems
      + 2.5.3 Curses Notes
      + 2.5.4 Win32 Notes
      + 2.5.5 Egcs 1.1 Notes
      + 2.5.6 Upgrading from version .33
      + 2.5.7 Upgrading from version .32.6
      + 2.5.8 Upgrading from version .32.1
      + 2.5.9 Upgrading from version .31.1
      + 2.5.10 Upgrading from version .30
      + 2.5.11 Upgrading from version .29.1
      + 2.5.12 Upgrading from version .29
      + 2.5.13 Upgrading from version .28.3
      + 2.5.14 Upgrading from version .28.2.1
      + 2.5.15 Upgrading from version .27.2
      + 2.5.16 Upgrading from version .25
      + 2.5.17 Upgrading from version .24

--------------------------------------------------------------------------

2. Getting Started


2.1 Requirements

Aspell requires gcc 2.95 (or better) as the C++ compiler. Other C++
compilers should work with some effort. Other C++ compilers for mostly
POSIX compliant (Unix, Linux, BeOS, CygWin) systems should work with out
any major problems provided that the compile can handle all of the
advanced C++ features Aspell uses. C++ compilers for non-Unix systems
might work but it will take some work. Aspell at very least requires a
Unix-like environment (sh, grep, sed, tr, etc...) in order to build.
Aspell also uses a few POSIX functions when necessary. Nevertheless,
Aspell will compile and run using the MinGW version of gcc provided that
the CygWin environment is used to to build it.

Aspell also requires the Portable Spell Checker Interface Library,
otherwise known as Pspell, to be installed on your system, in the same
location as Aspell will be installed in, before it will compile. Aspell
requires version .12.2 or better. You can obtain the latest version of
Pspell from http://pspell.sourceforge.net/

2.2 Obtaining

The latest version can always be found at Aspell's home page at http://
aspell.sourceforge.net.

2.3 Support

Support for Aspell can be found on the Aspell mailing lists. Instructions
for joining the various mailing lists (and an archive of them) can be
found off the Aspell home page at http://aspell.sourceforge.net. Please
use aspell-help for problems compiling and installing aspell, and
aspell-user for general questions.

2.4 Helping Out

The easiest thing you can do to help out it is too send me your .aspell.«
lang».prepl file located in your home directory every so often. (Email
kevina at users sourceforge net) The file contains data on which word
pairs aspell is unable to come up with the proper suggestion. If the file
does not exist is simply means that you were only using aspell in a
program such as emacs which does not communicate the replacement pairs
back to aspell. Sending me the file would help me improve aspell accuracy
as right now I don't have very much real data to work with.

If you are a good programmer and really want to help me consider doing one
of the tasks listed in a recent post:

From: Kevin Atkinson
Date: 07/18/2001
Subject: Serious Help Needed for Aspell and Pspell

In the past I have asked for help, but in specific areas and not very
forcefully. Well, now I really would appreciate some help with developing
Aspell and Pspell. I would like for Aspell to go to beta by the end of
this summer but I really don't see that happening unless I get some help.

Some of the areas I could use assistance in:

  * Adding Affix compression support for Aspell
  * Adding gettext support to Aspell and Pspell
  * Making Aspell and Pspell thread safe

And lots of other smaller areas. I am looking for people who are competent
programmers and have some experience with C++. I am also looking for
people which have a good deal of shell programming, Perl, and autotools
experience to help me clean up my build system.

Some areas such as thread safety will simply not happen until I get some
help because I really do not know enough about it.

I hate to whine. However, I have put an extremely large about of unpaid
time into Aspell and would appreciate some giving back from those who use
Aspell in there distribution or have used the Pspell library as part of
there applications, especially with those with the resources to do so such
as Open Source companies.

I release that my code, especially Aspell's, can be a bit scary with all
the complex C++, however I will be glade to help any one with this part
and for most of the tasks I need help with, one really don't even need to
know C++ that well. Here is a breakdown of the tasks I would like help
with and the skills required.

Task: Adding Affix compression support for Aspell

Skills: Competent programmer with some C++ knowledge. I know exactly what
needs to be done in this area so it will require very little knowledge of
how Aspell works.

Task: Adding gettext support to Aspell and Pspell

Skills: Competent programmer with C++ knowledge and gettext knowledge. I
don't know what needs to be done in this area however they shouldn't have
to study Aspell that intensely as most of my text strings are concentrated
together. They may also need to rework some of my strings into format
strings (ie convert cout < "Bla.." < name < "..bla.." to something like
"Bla.. $1 ..bla..") so that it can be translated correctly. However I have
an idea how this should be done.

Task: Making Aspell and Pspell thread safe.

Skills: Competent programmer with good C++ and thread safety knowledge.
This is the area where the C++ skills will probably be needed the most.
Even though Aspell itself is not multi-threaded I would like it to be
thread safe so that it can be used by multi-threaded programs. I have
several areas that are potently thread unsafe (such as accessing a global
pool) and need some one to give me advice on how to best do this. I also
have several classes which have the potential of being used by more than
one thread (such as the personal dictionary) and needs to be made thread
safe.

Task: Cleaning up the build system with Aspell and Pspell and similar
tasks

Skills: Competent shell programmer (preferably someone with more knowledge
than I have) and a good knowledge of how GNU autoconf, automake, and
libtool work.

Task: Help with making the Aspell Dicts build system more robust

Skills: Competent shell programmer (preferably someone with more knowledge
than I have) and a good enough knowledge of Perl to understand everything
in in my "proc" script (http://aspell.sourceforge.net/
aspell-gen-0.9.tar.bz2).

Task: Miscellaneous other programming Tasks as I (or someone else) thinks
of them

Skills: Competent programmer with good C++ knowledge.

Once Aspell is complete (ie gets into a beta state) you are really going
to appreciate it. It will be able to do everything ispell can do and a lot
more. However, I need some help in getting there.

With out some serious help it is highly likely that Aspell will not be
able to be complete (ie reach a beta state) till next summer as I won't be
able to work on Aspell a great deal once School starts up again.

Thanks in advance for anyone who can offer be some help.

--
Kevin Atkinson
kevina at users sourceforge net
http://www.ibiblio.org/kevina/

2.5 Compiling & Installing

2.5.1 Generic Install Instructions

Before Aspell is compiled Pspell must be installed. You can obtain the
latest version of Pspell from http://pspell.sourceforge.net/. Both Pspell
and Aspell must have the same prefix directory in order to function
correctly.

Once Pspell is installed and you have read the sections below to take care
of any special requirements for you system simply type

    ./configure && make

or

    ./configure --disable-static && make

to avoid making the static libraries on a system that supports shared
libraries. For additional configure options type ./configure --help. You
can control what C++ compiler is used by setting the environmental
variable CXX before running configure and you can control what flags are
passed to the C++ compile via the environmental variable CXXFLAGS.

Aspell should then compile with out any additional user intervention. If
you run into problems please first check the sections below as that might
solve your problem. If it doesn't please post a message to the aspell-help
mailing list with the compiler, system you are using and any error
messages that were produced. You can find more info on the aspell-help
mailing list info page at http://lists.sourceforge.net/lists/listinfo/
aspell-help.

To install the program simply type

    make install

And that's all there is too it for a basic installation.

If you do not have Ispell or the traditional Unix "spell" utility
installed on your system than you should also copy the compatibly scripts
"ispell" and "spell" located in the scripts/ directory into your
binary directory which is usually /usr/local/bin so that programs that
expect ispell or spell command will work correctly.

2.5.2 General Problems

Aspell requires a specific version of Pspell. If the wrong version of
Pspell is installed Aspell will not compile correctly. So before you try
anything else make sure you are using the correct version of Pspell as
stated in requirements (2.1) section.

Aspell does not use a released version of GNU Libtool. In previous
versions of aspell this will often create problems if you inadvertently
modify a file which causes Libtool to be called. However, as of Aspell
.33.6.1 this should no longer be a problem and automake, autoconf, or
libtool should not be called unless you specifically call them or if you
configure Aspell with --enable-maintainer-mode. If you do notice any of
these programs being called (and you did not configure with
--enable-maintainer-mode) please let me know about it. If you have a need
to modify configure.in or any of the Makefile.am's you should install the
multi-language-branch of the CVS version of libtool.

2.5.3 Curses Notes

If you are having problems compiling termios.cc than the most likely
reason is due to incompatibilities with the curses implementation on your
system. If this is the case than you can explicitly disable the curses
library with --disable-curses. By doing this you will lose the nice full
screen interface but hopefully you will be able to at least get Aspell to
compile correctly.

If the curses library is installed in a non-standard location than you can
specify the library and include directory with --enable-curses=«lib» and
--enable-curses-include=«dir». Lib can either be the complete path of the
library (for example "/usr/local/curses/libcurses.a"), the name of the
library (for example "ncurses") or a combined location and library in
the form "-L«lib dir» -l«lib»" (for example "-L/usr/local/ncurses/lib
-lncurses"). Dir is the location of the curses header files (for example
"/usr/local/ncurses/include").

2.5.4 Win32 Notes

Aspell is now able to compile on Win32 platforms using the Win32 version
of gcc. Aspell .30.1 can either be compiled with the Cgiwin or the Mingw
version of Gcc 2.95 using the Cgiwin development environment. The Mingw
version of Aspell will have slightly less functionality, but none of which
is noticeable to the end user. In order to get the nice full screen
interface with Mingw when spell checking files a curses implementation
that does not require Cygwin is required. The PDCurses (http://
www.lightlink.com/hessling/PDCurses/) implementation is known to work,
other implementations may work however they have not been tested. See the
previous section for information on specifying the location of the curses
library and include file.

When compiling Pspell I recommend you configure with --disable-shared and
--disable-ltdl. Shared libraries won't work correctly anyway on Win32 and
trying to compile the ltdl library can lead to unnecessary complications.
When compiling Aspell I recommend you configure with --disable-shared. If
you are planning to use Aspell outside if the Cygwin environment I
strongly recommend you install Aspell in its own location (ie prefix is
not /usr/local/) and compile it with --enable-win32-relocatable. Please
note that Pspell and Aspell must be installed in the same location. (ie
don't install Pspell in c:/pspell and Aspell in c:/aspell. Instead install
them both in c:/aspell)

If Aspell is compiled with --enable-win32-relocatable and the bindir is
set to the same value as prefix (ie not «prefix»/bin) then the Aspell
directory (what prefix is set to) can be relocated anywhere provided that
none of the data files are moved around within the Aspell directory.

The default paths for Aspell are designed for a Unix system and not a
Win32 system so you might want to specify different ones when compiling
Aspell. Also if the HOME environmental variable is not set Aspell will
assume it is the current working directly. This may lead to your personal
word lists being saved in unpredictable locations. To solve this either
compile with --enable-win32-relocatable (see above) or specify the
complete path of the personal and replacement word lists in aspell.conf.
If Aspell is compiled with --enable-win32-relocatable than the personal
word lists are saved in the prefix directory and the name is changed from
".aspell.<lang>.*" to" <lang>.*".

2.5.5 Egcs 1.1 Notes

Aspell should now be able work with Egcs 1.1 but I have not been able to
actually test it. If you have any luck one way or the other please let me
know.

2.5.6 Upgrading from version .33

Even though .33.5 is a minor release it will unfortunately break binary
compatibility with Aspell .33 due to the extensive changes needed to make
Aspell better C++ compliant. This means applications such as Gaspell will
need to be recompiled.

2.5.7 Upgrading from version .32.6

I have expanded the medium (*-med) word lists and decided to eliminate the
large word lists (*-lrg) for now. However, the installing process will not
automatically remove the large word lists so if you don't want them
hanging around you should delete them your self. To remove all the files
remove the following files from «library dir»/aspell:

    american-lrg-only british-lrg-only canadian-lrg-only english-lrg-only
    american-lrg.multi british-lrg.multi canadian-lrg.multi

and the following files from «share dir»/pspell:

    en-american-lrg-aspell.pwli en-canadian-lrg-aspell.pwli
    en-british-lrg-aspell.pwli

2.5.8 Upgrading from version .32.1

Even though .32.5 is a minor release it breaks binary compatibly which
means applications such as Gaspell will need to be recompiled.

2.5.9 Upgrading from version .31.1

The format and name of the main dictionary has changed yet again. The
install process will over write the old version, so unless you are using
dictionaries other than the one provided with aspell or want to have
multiple versions of aspell installed you should not have to worry about
this.

The apostrophe (') is no longer considered part of the word if it appears
at the end of a word. This means that you may have to manually remove
words from your personal word list if you get a message similar to:

    Invalid word "dogs'": The character "' may not appear at the end of a
    word.

To remove the word simply delete the line containing the word form the
personal word list ( normally called ".aspell.english.pws" ).

Aspell now uses a completely new word list. This means that same words
that were in the original word list may no longer appear in the current
one. You may now also chose from American, British, and Canadian spelling
and from two sizes medium and large. See section 5.4.1 for more
information on choosing among the different choices. The original source
that the word lists were created from is now found under the scowl/
directory.

2.5.10 Upgrading from version .30

The format of the main dictionary file has changed a bit. If you were able
to use Aspell .30 then the old format should work. The only time the old
format will NOT work is in the rare case the mmap fails. Previous version
of aspell will just abort with an error when the mmap fails but the new
version will attempt to read in the file using fread. Fread will fail with
the old version of the main word list.

2.5.11 Upgrading from version .29.1

The format (but not the name) of the main dictionary has changed yet
again. The install process will over write the old version, so unless you
are using dictionaries other than the one provided with aspell or want to
have multiple versions of aspell installed you should not have to worry
about this.

Aspell also now depends on Portable Spell Checker Interface Library
otherwise known as Pspell. Pspell must be installed before aspell will
compile, you can find it at http://pspell.sourceforge.net/.

2.5.12 Upgrading from version .29

The format and name of the main dictionary has changed which means it will
need to be recompiled. The install process will remove the old files for
you, so unless you are using dictionaries other than the one provided with
aspell or want to have multiple versions of aspell installed you should
not have to worry about this.

2.5.13 Upgrading from version .28.3

Aspell now uses namespaces which means egcs 1.0 and gcc 2.8 will no longer
cut it. If this becomes a serious problem let me know as it should not be
to difficult to get it working again with egcs 1.0 and gcc 2.8.

Due to the new soundslike code the the main dictionary will need to be
recompiled. The build process does this automatically so unless you want
to have more than one version of aspell around you should not need to
worry about this.

The format and file name of the personal dictionaries has also changed. In
most cases aspell will automatically detect this and convert it for you by
using the following algorithm.

 1. If no file exist of *.pws (for the personal word list) or *.prepl (for
    the personal replacement list) aspell will look for *.per or *.rpl
    respectfully. If that file is found it will read in the data using the
    old format.
 2. When saving the dictionary it will save is as *.pws or *.prepl
    respectfully.
 3. Once saved as the new format it will delete the old file.

If you have an older version of aspell around you can restore the old
dictionaries by using these command

    aspell.new dump personal | aspell.old create personal

    aspell.new dump repl | aspell.old create repl

The new version of aspell will then leave the old files alone as long as
*.pws and *.prepl exist.

Also, if the file does not end in .pws or .prepl it will try to read it in
using the new format and if that fails it will read in the old format.
When the file is saved it will be saved as the new format.

I am hopping I will not have to change the format of the personal
dictionaries again. However, the main word list however is very likely to
change in format.

2.5.14 Upgrading from version .28.2.1

The behavior of "aspell check" changed so that it will now over right
the original file as creating new file was creating too many problems when
used with programs like pine and vi.

2.5.15 Upgrading from version .27.2

The name of the personal word lists have changes from .aspell.per and
.aspell.rpl to .aspell.«lang».per and .aspell.«lang».rpl respectively. «
lang» is is the language name which will generally be "english". If you
wish to use your old word lists you will need to rename those files.

2.5.16 Upgrading from version .25

The format of the personal replacement dictionary has changed. So, you
will either need to rename or remove the file .aspell.rpl located in your
home directory. If you have information in this file you would like to
preserve please send me an email.

2.5.17 Upgrading from version .24

Because the location of the main word list moved you should probably do a 
make uninstall (with the old version of a Aspell) before upgrading to
remove the old word lists. A make uninstall will not remove any personal
word lists.

--------------------------------------------------------------------------
next up previous contents
Next: 3. Basic Usage Up: Aspell .33.7.1 alpha A Previous: 1. Introduction
  Contents
Kevin Atkinson 2001-08-19
