Differences between revisions 27 and 28
Revision 27 as of 2010-07-02 05:35:31
Size: 8293
Editor: c-24-7-212-58
Revision 28 as of 2010-07-02 17:17:20
Size: 3774
Editor: c-24-7-212-58
Deletions are marked like this. Additions are marked like this.
Line 2: Line 2:

There are no Ubuntu packages for Etherpad yet. If you want to help package Etherpad in Ubuntu see:
Line 48: Line 45:
Line 116: Line 110:
== Get Etherpad code ==

There are no releases of Etherpad at the moment, so we grab directly from mercurial.
== Build from source ==
If you want the latest an greatest from the etherpad foundation you have to use git.
Don't worry git is super cool and easy.
Line 121: Line 114:
hg clone etherpad $cd ~
$git clone
Line 123: Line 117:

If you are running this command from behind an office firewall, you might run into a bug in Python for HTTPS from behind a proxy ( Clone from the http URL instead.

hg clone etherpad

You might want to patch the etherpad code to build on Ubuntu:
The description below shows the difference between the original file and changes, leading + shows where lines are added or changed. This example show two changes to trunk/infrastructure/bin/, both removing /lib from a path.
diff -r 81287c8af1ac trunk/infrastructure/bin/
--- a/trunk/infrastructure/bin/ Fri Dec 18 18:44:23 2009 +1100
+++ b/trunk/infrastructure/bin/ Sat Dec 19 09:50:05 2009 -0500
@@ -32,11 +32,11 @@
 TMPSTORE=/tmp/ajbuild-tmpstore-`date +%s`
-JARFILES=`echo $SCALA_HOME/lib/scala-library.jar lib/*.jar lib/manifest`
+JARFILES=`echo $SCALA_HOME/scala-library.jar lib/*.jar lib/manifest`
 function genjar {
     echo "unzipping JARs..."
     pushd $1 >> /dev/null
- $JAR xf $SCALA_HOME/lib/scala-library.jar
+ $JAR xf $SCALA_HOME/scala-library.jar
     rm -rf META-INF
     for a in ../../lib/*.jar; do
        $JAR xf $a

(As of Dec. 23, 2009 the patching instructions above are either incomplete or do not provide any explanation on what to do. Typing the first command directly into the command line produces a "not found" error. Please revise these instructions to be more clear in a step-by-step fashion rather than assuming a user should know what to do.) Yes and Update would be nice :)

 Gee, this is not a script, it's a [[|diff]] file. See `man patch`.

What these patching instructions means is to edit the file (for example : trunk/infrastructure/bin/ )
and find the lines starting with a - and replace them with the line starting with a +. If there's only a line with a +, that means add that line to where it is shown in the file.

Alternatively (and to avoid modifying the source file), you could use a symbolic link pointing to the desired directory:
ln -s /usr/share/java /tmp/lib
export SCALA_HOME=/tmp

If your mysql was updated you may need to restart mysql now.
sudo /etc/init.d/mysql start

Be sure to add you domain to the list of SUPERDOMAINs:
diff -r 81287c8af1ac trunk/etherpad/src/etherpad/globals.js
--- a/trunk/etherpad/src/etherpad/globals.js Fri Dec 18 18:44:23 2009 +1100
+++ b/trunk/etherpad/src/etherpad/globals.js Sat Dec 19 09:50:05 2009 -0500
@@ -29,6 +29,8 @@
   '': true,
   'localhost': true,
+ '': true,
+ '': true,
   '': true

== Configure Environment ==

$ export JAVA_HOME=/usr/lib/jvm/java-6-sun
$ export JAVA="$JAVA_HOME/bin/java"
$ export SCALA_HOME=/usr/share/java # or =/tmp – see above
$ export SCALA="$SCALA_HOME/bin/scala" # Shouldn’t it be =/usr/bin/scala ?
$ export PATH="$JAVA_HOME/bin:$SCALA_HOME/bin:$PATH"
$ export MYSQL_CONNECTOR_JAR=/usr/share/java/mysql-connector-java.jar

== Configure MySQL ==

Set the variable "mysql" in the db setup script, to the name of your mysql client executable.

diff -r 81287c8af1ac -r 5ea3ba9d10f7 trunk/etherpad/bin/
--- a/trunk/etherpad/bin/ Fri Dec 18 18:44:23 2009 +1100
+++ b/trunk/etherpad/bin/ Sun Dec 20 15:53:08 2009 +0530
@@ -19,6 +19,7 @@
   exit 1
 echo "Creating etherpad ${db}..."

Alternatively, you also could simply enter {{{export mysql=/usr/bin/mysql}}} without editing the source file.

Run the db setup script.

$ cd trunk/etherpad
$ sudo bin/

Note if you had setup a password for the root account on the mysql server, then this won't work directly. You can edit the as needed to fix this. For example (there are two instances of this in the file)

- echo "create database ${db};" | ${mysql} -u root
+ echo "create database ${db};" | ${mysql} --user=root --password=secret
#and same for the other instances of ${mysql}

Alternatively, you could setup your ~/.my.cnf accordingly:
user = root
password = secret
You should now have a directory with the etherpad source!
Line 242: Line 120:
From trunk/etherpad: From pad/:
Line 244: Line 122:
$ bin/ $ bin/
Line 249: Line 127:
$ bin/ $ bin/

Install packages

Install pre-requisite packages for getting and building Etherpad.

sudo apt-get install sun-java6-jdk scala mysql-server mysql-client libmysql-java mercurial

Etherpad will not build or run with openjdk-6-jdk or openjdk-6-jre. It also is best to use Sun's jar since fastjar seems to have some issues.

If you get this error:

Package sun-java6-jdk is not available, but is referred to by another package.
This may mean that the package is missing, has been obsoleted, or
is only available from another source
E: Package sun-java6-jdk has no installation candidate

Checkout /etc/apt/sources.list and add this line if missing:

deb hardy multiverse


apt-get update

and try again.

It is necessary to ensure that the server's host name is in the /etc/hosts for the IP . If this is not there you will have a compile time error like this :

"Unable to establish connection to compilation daemon

  • Compilation failed."

Furthermore, it might be necessary to tell Ubuntu to switch from OpenJDK to Sun’s Java:

update-java-alternatives -s java-6-sun

New Installation Instructions

There is now an apt source that you can put in your /etc/apt/sources.list

sudo echo "deb all ." >> /etc/apt/sources.list
sudo echo "deb hardy multiverse" >> /etc/apt/sources.list

Then do the following commands

$sudo apt-get update
$sudo apt-get install etherpad

You will get the following message.

$ apt-get install etherpad
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following NEW packages will be installed:
0 upgraded, 1 newly installed, 0 to remove and 1 not upgraded.
Need to get 0B/31.5MB of archives.
After this operation, 45.0MB of additional disk space will be used.
WARNING: The following packages cannot be authenticated!
Install these packages without verification [y/N]? 

Type Y because you trust the etherpad foundation. Smile :)

Now for some mysql magic.

$mysql -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 205
Server version: 5.1.41-3ubuntu12.3 (Ubuntu)

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> CREATE DATABASE etherpad;
mysql> GRANT ALL PRIVILEGES ON *.* TO 'etherpad'@'localhost' IDENTIFIED BY 'some_password_here' 
mysql> quit

Now the etherpad database is done. Give yourself a pat on the back. Now depending on the speed of box server you might want to get a drink right now. Or read while the code is compiling.

$cd /usr/share/etherpad

In your favorite editor or nano

nano /etc/etherpad/

Edit the line topdomains = <YOUR DOMAIN HERE>, Ubuntu,localhost,localhost.localdomain To include your Fully Qualified Domain Name(FQDN) of your box. then run

$sudo bin/

YAY You did it. Be the only kid on your block that has installed etherpad.

Build from source

If you want the latest an greatest from the etherpad foundation you have to use git. Don't worry git is super cool and easy.

$cd ~
$git clone

You should now have a directory with the etherpad source!

Compiling Etherpad

From pad/:

$ bin/

Running Etherpad

$ bin/

Etherpad (last edited 2012-02-15 09:24:13 by 135)