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/
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.
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.
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.
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.
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'').
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>.*''.
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.
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.
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:
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.
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.
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/.
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.
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.
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.
When saving the dictionary it will save is as *.pws or *.prepl
respectfully.
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.
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.
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.
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.
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.