WeBWorK Install Script
Perl Shell
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.
bin Merge pull request #87 from aorinevo/patch-1 Jul 6, 2015
conf Start implementing ssl option. Created extra/ dir for post-install op… Sep 19, 2013
deb Started templates file for deb conf Mar 21, 2014
extra Fixed MathJax installation to match webwork 2.8. Simplified Dec 20, 2013
lib tweaked weait times Dec 19, 2014
rpms @ 1c6cc2c Added mhamrick's webwork rpm project as a submodules and updated READ… Mar 21, 2014
.gitignore Adding POD documentation to ww_install.pl. Also fix .gitignore Jul 11, 2013
install_webwork.sh Final changes to make installer work once relase/2.10 is in master. Jan 2, 2015


WARNING: This repository is out of date. Use the openwebwork repository for the current installer: OpenWeBWorK Installation Scripts

WeBWorK Installation Script(s) (Outdated)

This repository consists of a perl script ww_install.pl, along with some supporting bash scripts, config files, and perl modules designed to work together install the open source online homework system WeBWorK.

The script has been updated to install WeBWorK 2.10 as of 12/22/2014.

It has been tested and supported on

  • Debian Wheezy
  • Fedora 20
  • Ubuntu 14.04
  • CentOS 7

On these systems it did install webwork.


  • There is currently no package in Fedora 21 which provides the pnmtops program. The installer will fail when checking for required modules and programs. Once this bug is fixed the installer '''should''' work.


To install WeBWorK:

  1. Get the install_webwork.sh script:

    wget --no-check-certificate https://raw.github.com/aubreyja/ww_install/master/install_webwork.sh

    or if you prefer

    curl -ksSO https://raw.github.com/aubreyja/ww_install/master/install_webwork.sh

  2. As root (or with sudo) do

    bash install_webwork.sh

Note that if you use sudo, then you must be a sudoer with sufficient administrative rights (probably ALL=(ALL) ALL) for install_webwork.sh to work properly. If not, run this command as root.

For more control over the process you can clone this repository with

git clone https://github.com/aubreyja/ww_install.git

and then run the scripts individually as needed.



This script is the 'controller' that ties together the other scripts. It opens an install log, downloads this repo and opens it in (typically) /tmp. Then it runs install_prerequisites.sh followed by ww_install.pl. When ww_install.pl exits, it attempts to open webwork in the system's default web browser, copies webwork_install.log to your top level webwork directory (e.g. /opt/webwork) and then deletes the downloaded installation package.


If your system does not have all of the prerequisites installed, then the install_prerequisites.sh script might help. The goal of that script is to install all of the software that WeBWorK depends on. This is also the script most likely to be incomplete or fail in some way on your system. For systems based on Debian (Ubuntu,etc.) and Red Hat (CentOS, Scientific Linux, etc.) it will do everything needed. We're working on getting it to install prereqs on other systems such as OpenSUSE and Magia, but for now other systems will need to have these prerequisites already installed. If you would like to fill it out for your favorite linux distro or unix system, I will happily accept pull requests.


The goal of ww_install.pl is to install WeBWorK on any system on which the prerequisites are already installed.

It is an interactive script based on the core perl module Term::UI, and is written with the goal of being cross-platform. It does use some linux built-ins, and work is needed to ensure that this script will work as well on unix machines. Again, contributions of work in this direction would be welcome.

Other files

The extra/ subdirectory contains scripts which help with optional post install tasks. These are not currently hooked into the other scripts, so you'll need to run them separately. Currently contains

  • iptables_rules.sh

    Sets up an iptables firewall which only allows network services necessary for running WeBWorK.

  • generate_ssl_cert.sh

    Steps user through generating an ssl cert. Under construction.

  • install_chromatic.pl

    Standalone script to compile pg/lib/chromatic/color.c so the NAU library graph theory problems work. This functionality has been incorporated into ww_install.pl, so it should not be necessary to run this script. However, if you find the NAU graph theory problems are complaining that pg/lib/chromatic/color doesn't exist, then you can run this script to compile it for you.

The lib/ subdirectory contains copies of any perl modules the script uses but which don't need to be installed on your system for webwork to run.

The conf/ subdirectory contains copies of config files or snippets of config files that this installation package will ask to modify.

The deb/ subdirectory contains work (in progress) toward creating a debian archive for installing webwork.

The rpms/ subdirectory is Mark Hamrick's work toward creating a webwork rpm (as a submodule, so I can easily get a hold if it when/if I eventually start looking at it).

Other Resources

Please report any problems on the issues page for this repository.

Questions and comments about this installer can be directed to me on the webwork-devel mailing list. For a recent discussion see [1].

Information and documentation about WeBWorK itself can be found at http://webwork.maa.org/wiki


Jason Aubrey aubreyja@gmail.com

If you use the script, please email me to let me know what OS you installed it on so I can add a notation to the list of tested distributions above and address any problems you run into. I'd also be happy to hear suggestions for improvement.




This script was inspired by Tom Haggedorn's automatic installer for WeBWorK 2.4 on Mac OS 10.5 for Intel processors bash script. Valuable feedback and testing has been provided by Danny Glin, Djun Kim, Geoff Gohle, John Travis, Peter Staab, Arnie Pizer, Paul Pearson, Christina Kayastha, and Nathaniel Case (Qalthos).

Copyright and Disclaimer

This program is Copyright 2013 by Jason Aubrey. This program is free software; you can redistribute it and/or modify it under the terms of the Perl Artistic License or 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.

If you do not have a copy of the GNU General Public License write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.