Installing Etherpad on Windows (CYGWIN)

The new documentation for how to deploy Etherpad Lite on Windows is available here — You should refer to this.

BELOW IS THE OLD DOCUMENTATION FOR ETHERPAD FULL

Grab the latest Etherpad .zip from http://etherpad.org and extract to c:\etherpad

Download and install Cygwin from http://www.cygwin.com/ – use defaults

Download Scala from http://www.scala-lang.org/sites/default/files/linuxsoft_archives/downloads/distrib/files/scala-2.7.7.final.zip and extract to c:\etherpad\scala-2.7.7

Download and install MySQL server from http://dev.mysql.com/downloads/mysql/
Create a MySQL database “etherpad” and a database user “etherpad”

Download the MySQL connector from http://dev.mysql.com/downloads/mirror.php?id=402367 and extract to c:\etherpad\mysql-connector-java-5.1.16

Download Java from http://www.oracle.com/technetwork/java/javase/downloads/jdk-6u25-download-346242.html and extract to c:\etherpad\JDK1.6_23

Open Cygwin (doubleclick on icon)

Change directory to Etherpad:

cd /cygdrive/c/Etherpad/

Copy the Libraries from one folder to another (temp fix):

cp /cygdrive/c/Etherpad/infrastructure/lib/* /cygdrive/c/Etherpad/infrastructure/ace/lib

Begin your build (if this errors check your task manager and check there are no java instances running that may cause a conflict):

bin/build.sh

Copy the default config to the correct location:

cp etherpad/etc/etherpad.localdev-default.properties etherpad/etc/etherpad.local.properties

Edit etherpad/etc/etherpad.local.properties and set
etherpad.SQL_JDBC_URL = jdbc:mysql://localhost:3306/etherpad
etherpad.SQL_PASSWORD = yoursqlpassword
etherpad.SQL_USERNAME = etherpad
etherpad.adminPass = somestrongpassword
topdomains = yourhostname.com,localhost

You can now run etherpad via:

bin/run.sh

Access your Etherpad server at:
http://localhost:9000/

BELOW IS THE OLD DOCUMENTATION THAT I AM LEAVING FOR THE SAKE OF HISTORY AND FOR REFERENCE. DAVE. WE CAME A LONG WAY DAVE.. IT’S BEEN EMOTIONAL :~

Below is my documentation that is sketchy, you should follow this guide instead.

In Windows:
– Install Java, Scala, MySQL, mysqlconnector and Mercurial under Windows.
– JAVA should be set to the java executable.
– JAVA_HOME should be set to the main jdk directory.
– SCALA should be set to the scala executable.
– SCALA_HOME should be set to the main scala distribution directory.
– PATH should contain $JAVA, $SCALA, and mysql
– MYSQL_CONNECTOR_JAR should be set to the mysql-connector JAR file included in the mysql-connector download.

– Install Cygwin.

These Files are needed in /etherpad/trunk/ since the archive holds files both in the etherpad and the infrastructure subfolder.

  1. Make a backup of your bin folder
  2. Extract the contents of the above .Rar file to the bin folder
  3. Run bin/rebuildjar.sh
  4. After installation run bin/run-local.sh
Full docs coming later. Post questions as comments and I should be able to answer.
All props goto Jutsi for discovering the solution. Feeling confident without the full docs? Follow the unix docs for config settings and you should be good to go.

See also:
Etherpad-win repository all props to Gyokuro:  http://bitbucket.org/gyokuro/etherpad-win/overview/
Etherpad-win wiki all props to Gyokuro: http://bitbucket.org/gyokuro/etherpad-win/wiki/)

21 thoughts on “Installing Etherpad on Windows (CYGWIN)

  1. Hi John,
    thank for the adjusted files. I had still no luck in running rebuildjar.
    Could it be problematic that I'm using the windows installed java? I also run mysql from the windows xampp package.

    Do you or anyone could get the standalone pne (personal network edition) running?
    There is a thread in google groups with patches but I couldn't puzzle it together.

    The standalone jar would be awesome, would run in all environments, has build in derby db and you could use mysql as option.

    If you have time and interest we could talk about it.

  2. I just updated the files today, let me know if you still have a problem, we are working on this on IRC, freenode.net #etherpad

  3. Hi John,
    thank for the updated files.
    What java version do you use, have you exported the the windows directory as JAVA_HOME?

    Whats your IRC nick, and at what time (GMT+0 since you are in the UK) are you typically online?

  4. My IRC Nick is JohnMcLear – I'm on always and I have pidgin on that account so just pmsg me and it will beep me

  5. Etherpad PNE working on windows with cygwin. The progress can be followed at googlegroups:
    http://groups.google.com/group/etherpad-open-source-discuss/browse_thread/thread/9fa93d03ab33db3e

    Tested on:
    Os: Microsoft Windows XP Professional x64 Edition Version 2003 Service Pack 2
    Cygwin: 1.7.1-1
    Java:java version "1.6.0_18" Java(TM) SE Runtime Environment (build 1.6.0_18-b07) Java HotSpot(TM) 64-Bit Server VM (build 16.0-b13, mixed mode)
    Application Server: Apache Tomcat 6.0.24 Server
    Database: MySQL 5.1.43-winx64

    Post questions there, attach your system specs and any output with your errors.

  6. Step 1:
    Read carfully the offical installing instructions:
    http://code.google.com/p/etherpad/wiki/Instructions

    Step 2:
    Check the file rights we encountered problems on a windows 7 box with enabled UAC.
    We recommend windows XP with admin/write rights.

    Step 3:
    Install
    cygwin (http://www.cygwin.com/)
    java (http://java.sun.com/javase/downloads/widget/jdk6.jsp)
    scala (http://www.scala-lang.org/downloads)
    mysql server (http://dev.mysql.com/downloads/mysql/5.1.html#downloads)
    mysql connector (http://dev.mysql.com/downloads/connector/j/)

    I would recommend to install all programs in a path which contains no spaces.
    If you wan't to install everything in your "Program Files" or any other folder with spaces,
    you can use one of the following tricks:
    Use junction from sysinternals (http://download.sysinternals.com/Files/Junction.zip)
    and create on your NTFS! drive a Win2K NTFS symbolic link like C:\Progs.
    Use the environment variable %ProgramFiles% or the dos short path "c:\progra~1"

    Windows environment variables
    Make sure under "Control Panel->System->Advanced->Environment Variables"
    to setup your path correctly with all of the following:
    C:\YourPathTo\Java\jdk1.6.0_18\bin
    C:\YourPathTo\Scala\bin
    C:\YourPathTo\MySQL\MySQL Server 5.1\bin
    C:\YourPathTo\mysql-connector-java-5.1.10-bin.jar

    Replace your YourPathTo with the actual path on your machine.

    Pull the source with mercurial and apply the fixed files from:
    http://primaryschoolict.com/epad_cygwin.rar

    Step 4:
    Fire up the cygwin shell from the startmenu
    Set up the following Export pathes

    export JAVA_HOME="C:\YourPathTo\Java\jdk1.6.0_18"
    export SCALA_HOME="C:\YourPathTo\scala"
    export JAVA="C:\YourPathTo\Java\jdk1.6.0_18\bin\java"
    export SCALA="C:\YourPathTo\scala\bin\scala"
    export MYSQL_CONNECTOR_JAR="C:\YourPathTo\mysql-connector-java-5.1.10-bin.jar"

    Replace your YourPathTo with the actual path on your machine.

    Step 5:
    Setup mysql database
    # create the etherpad mysql db and privelidges
    mysql -u root -p
    # enter your password when prompted
    create database etherpad;
    grant all privileges on etherpad.* to 'etherpad'@'localhost' identified by 'password';
    quit
    (Source: http://www.mclear.co.uk/2009/12/installing-etherpad-on-debian.html)

    Step 6:
    Navigate to YourEtherpadPath/trunk/etherpad and run
    bin/rebuild-jar.sh

    If you encounter a cp error
    open C:\YourEtherpadPath\trunk\infrastructure\bin\

    replace the lines:
    cp ${MYSQL_CONNECTOR_JAR} lib/
    cp ${MSSQL_CONNECTOR_JAR} lib/

    with:
    cp `cygpath -u "${MYSQL_CONNECTOR_JAR}"` lib/
    #cp `cygpath -u "${MYSQL_CONNECTOR_JAR}"` lib/

    After a successful run
    bin/run-local.sh

    Finally I want to thank Jutsi, mad props for your excellent work to adjust the paths in the source whenever needed and I also want to thank JohnMcLear for support and motivation.

    I intend to put up a repository under http://bitbucket.org/gyokuro/etherpad-win/
    This repositoy should contain a fixed package usable out of the box.
    Perhaps we can also create a version with batch files, that compiles without the cygwin shell.

    -Gyokuro

  7. Thank you all.
    Last minor problem:
    “$ bin/makejar.sh: line 44: jar: command not found”
    solved by exporting:
    PATH=$JAVA_HOME/bin:$PATH
    export PATH

  8. I’m having a slight issue, any help?

    $ ./rebuildjar.sh
    using cached JAR…
    compiling…
    compiling with ‘fsc’…
    compiling common…
    Note: net.appjet.common\util\HttpServletRequestFactory.java uses or overrides a deprecated API
    .
    Note: Recompile with -Xlint:deprecation for details.
    Note: net.appjet.common\util\HttpServletRequestFactory.java uses unchecked or unsafe operation
    s.
    Note: Recompile with -Xlint:unchecked for details.
    bin/comp.sh: line 76: fsc: command not found
    which: no growlnotify in (C:\Java\jdk1.6.0_19/bin:/usr/local/bin:/usr/bin:/bin:/cygdrive/e/Col
    dfusion9/verity/k2/_nti40/bin:/cygdrive/e/ColdFusion8/verity/k2/_nti40/bin:/cygdrive/c/WINDOWS
    /system32:/cygdrive/c/WINDOWS:/cygdrive/c/WINDOWS/System32/Wbem:/cygdrive/c/Program Files/Nmap
    )

  9. Hello,

    I’m using the latest trunk from http://bitbucket.org/gyokuro/etherpad-win end I’m having the following error while compiling under CYGWIN:

    $ ./bin/rebuildjar.sh
    unzipping JARs…
    java.io.FileNotFoundException: cygdrivecEtherpadscalalibscala-library.jar
    (Le chemin d’accÞs spÚcifiÚ est introuvable)
    at java.io.FileInputStream.open(Native Method)
    at java.io.FileInputStream.(FileInputStream.java:106)
    at java.io.FileInputStream.(FileInputStream.java:66)
    at sun.tools.jar.Main.run(Main.java:238)
    at sun.tools.jar.Main.main(Main.java:1149)

    but when I do a ls of the SCALA path everything is ok:

    $ ls $SCALA_HOME/lib/scala-library.jar
    /cygdrive/c/Etherpad/scala/lib/scala-library.jar

    Do anybody knows how to fix the forward/back slash issue ?

  10. OK!

    I fixed my problem with the following line in the makejar.sh:

    $JAR xf `cygpath -wp $SCALA_HOME/lib/scala-library.jar`

    to be continued!

  11. I install etherpad on windows, while trying to rebuild the file the following error occured

    how to solve this problem
    $ bin/rebuildjar.sh
    which: no fastjar in (/usr/local/Java/jdk1.6.0_21/bin:/usr/local/Java/jdk1.6.0_2
    1/bin:/usr/local/MySQL/MySQLServer5.1/bin:/usr/local/Java/jdk1.6.0_21/bin:/usr/l
    ocal/scala/scala-2.8.0.final/bin:/usr/local/bin:/usr/bin:/bin:/cygdrive/c/WINDOW
    S/system32:/cygdrive/c/WINDOWS:/cygdrive/c/WINDOWS/System32/Wbem:/cygdrive/c/Pro
    gram Files/QuickTime Alternative/QTSystem:/cygdrive/c/Program Files/Mercurial/:/
    cygdrive/c/Program Files/MySQL/MySQL Server 5.1/bin)
    using JAR jar…
    unzipping JARs…
    java.io.FileNotFoundException: \usr\local\scala\scala-2.8.0.final\lib\scala-libr
    ary.jar (The system cannot find the path specified)
    at java.io.FileInputStream.open(Native Method)
    at java.io.FileInputStream.(FileInputStream.java:106)
    at java.io.FileInputStream.(FileInputStream.java:66)
    at sun.tools.jar.Main.run(Main.java:238)
    at sun.tools.jar.Main.main(Main.java:1149)
    which: no growlnotify in (/usr/local/Java/jdk1.6.0_21/bin:/usr/local/Java/jdk1.6
    .0_21/bin:/usr/local/MySQL/MySQLServer5.1/bin:/usr/local/Java/jdk1.6.0_21/bin:/u
    sr/local/scala/scala-2.8.0.final/bin:/usr/local/bin:/usr/bin:/bin:/cygdrive/c/WI
    NDOWS/system32:/cygdrive/c/WINDOWS:/cygdrive/c/WINDOWS/System32/Wbem:/cygdrive/c
    /Program Files/QuickTime Alternative/QTSystem:/cygdrive/c/Program Files/Mercuria
    l/:/cygdrive/c/Program Files/MySQL/MySQL Server 5.1/bin)

    Where to inserrt this command
    JAR xf `cygpath -wp $SCALA_HOME/lib/scala-library.jar`

  12. While at the time of rebuild the file the following error occurs

    $ ./bin/rebuildjar.sh
    which: no fastjar in (/usr/local/bin:/usr/bin:/bin:/cygdrive/c/WINDOWS/system32:
    /cygdrive/c/WINDOWS:/cygdrive/c/WINDOWS/System32/Wbem:/cygdrive/c/Program Files/
    QuickTime Alternative/QTSystem:/cygdrive/c/Program Files/Mercurial/:/usr/bin:/us
    r/local/java/jdk1.6.0_21/bin:/usr/local/scala/scala-2.8.0.final/bin:/usr/local/M
    ySQL/MySQLServer5.1/bin:/usr/local/mysql-connector-java-5.1.13/mysql-connector-j
    ava-5.1.13-bin:/cygdrive/c/Program Files/apache-tomcat-7.0.2/apache-tomcat-7.0.2
    /bin:/usr/lib/lapack)
    using JAR jar…
    lib/mysql-connector-java-5.1.13-bin.jar has changed, rebuilding JAR
    unzipping JARs…
    making cached JAR….
    compiling…
    compiling with ‘fsc’…
    compiling common…
    net.appjet.common\util\HttpServletRequestFactory.java:19: package javax.servlet.
    http does not exist
    import javax.servlet.http.HttpServletRequest;
    ^
    net.appjet.common\util\HttpServletRequestFactory.java:20: package javax.servlet.
    http does not exist
    import javax.servlet.http.HttpServletResponse;
    ^
    net.appjet.common\util\HttpServletRequestFactory.java:45: cannot find symbol
    symbol : class HttpServletRequest
    location: class net.appjet.common.util.HttpServletRequestFactory
    public static HttpServletRequest createRequest(String uri, Map headers,
    ^
    net.appjet.common\util\HttpServletRequestFactory.java:51: cannot find symbol
    symbol : class HttpServletRequest
    location: class net.appjet.common.util.HttpServletRequestFactory
    public static HttpServletRequest createRequest(HttpServletRequest req)
    ^
    net.appjet.common\util\HttpServletRequestFactory.java:51: cannot find symbol
    symbol : class HttpServletRequest
    location: class net.appjet.common.util.HttpServletRequestFactory
    public static HttpServletRequest createRequest(HttpServletRequest req)
    ^
    net.appjet.common\util\HttpServletRequestFactory.java:65: cannot find symbol
    symbol : class HttpServletResponse
    location: class net.appjet.common.util.HttpServletRequestFactory
    public static HttpServletResponse createResponse() {
    ^
    net.appjet.common\util\HttpServletRequestFactory.java:36: cannot find symbol
    symbol : class HttpServletRequest
    location: class net.appjet.common.util.HttpServletRequestFactory.RequestResponse

    public final HttpServletRequest request;
    ^
    net.appjet.common\util\HttpServletRequestFactory.java:37: cannot find symbol
    symbol : class HttpServletResponse
    location: class net.appjet.common.util.HttpServletRequestFactory.RequestResponse

    public final HttpServletResponse response;
    ^
    net.appjet.common\util\HttpServletRequestFactory.java:39: cannot find symbol
    symbol : class HttpServletRequest
    location: class net.appjet.common.util.HttpServletRequestFactory.RequestResponse

    private RequestResponse(HttpServletRequest req, HttpServletResponse res)
    {
    ^
    net.appjet.common\util\HttpServletRequestFactory.java:39: cannot find symbol
    symbol : class HttpServletResponse
    location: class net.appjet.common.util.HttpServletRequestFactory.RequestResponse

    private RequestResponse(HttpServletRequest req, HttpServletResponse res)
    {
    ^
    net.appjet.common\util\HttpServletRequestFactory.java:80: cannot find symbol
    symbol : class HttpServletRequest
    location: class net.appjet.common.util.HttpServletRequestFactory
    private static class InnerHttpServletRequest implements HttpServletRequest {

    ^
    net.appjet.common\util\HttpServletRequestFactory.java:148: package javax.servlet
    .http does not exist
    public javax.servlet.http.Cookie[] getCookies() { return new javax.servl
    et.http.Cookie[0]; }
    ^
    net.appjet.common\util\HttpServletRequestFactory.java:174: package javax.servlet
    .http does not exist
    public javax.servlet.http.HttpSession getSession(boolean create) { retur
    n null; }
    ^
    net.appjet.common\util\HttpServletRequestFactory.java:175: package javax.servlet
    .http does not exist
    public javax.servlet.http.HttpSession getSession() { return null; }
    ^
    net.appjet.common\util\HttpServletRequestFactory.java:194: package javax.servlet
    does not exist
    public javax.servlet.ServletInputStream getInputStream() throws java.io.
    IOException{
    ^
    net.appjet.common\util\HttpServletRequestFactory.java:232: package javax.servlet
    does not exist
    public javax.servlet.RequestDispatcher getRequestDispatcher(String path)
    { return null; }
    ^
    net.appjet.common\util\HttpServletRequestFactory.java:240: cannot find symbol
    symbol : class HttpServletResponse
    location: class net.appjet.common.util.HttpServletRequestFactory
    private static class InnerHttpServletResponse implements HttpServletResponse
    , ServletAccessor {
    ^
    net.appjet.common\util\HttpServletRequestFactory.java:259: package javax.servlet
    .http does not exist
    public void addCookie(javax.servlet.http.Cookie cookie) { }
    ^
    net.appjet.common\util\HttpServletRequestFactory.java:282: package javax.servlet
    does not exist
    private final javax.servlet.ServletOutputStream sostream =
    ^
    net.appjet.common\util\HttpServletRequestFactory.java:295: package javax.servlet
    does not exist
    public javax.servlet.ServletOutputStream getOutputStream() { return sost
    ream; }
    ^
    net.appjet.common\util\HttpServletRequestFactory.java:148: package javax.servlet
    .http does not exist
    public javax.servlet.http.Cookie[] getCookies() { return new javax.servl
    et.http.Cookie[0]; }

    ^
    net.appjet.common\util\HttpServletRequestFactory.java:195: package javax.servlet
    does not exist
    return new javax.servlet.ServletInputStream() {
    ^
    net.appjet.common\util\HttpServletRequestFactory.java:283: package javax.servlet
    does not exist
    new javax.servlet.ServletOutputStream() {
    ^
    23 errors
    which: no growlnotify in (/usr/local/bin:/usr/bin:/bin:/cygdrive/c/WINDOWS/syste
    m32:/cygdrive/c/WINDOWS:/cygdrive/c/WINDOWS/System32/Wbem:/cygdrive/c/Program Fi
    les/QuickTime Alternative/QTSystem:/cygdrive/c/Program Files/Mercurial/:/usr/bin
    :/usr/local/java/jdk1.6.0_21/bin:/usr/local/scala/scala-2.8.0.final/bin:/usr/loc
    al/MySQL/MySQLServer5.1/bin:/usr/local/mysql-connector-java-5.1.13/mysql-connect
    or-java-5.1.13-bin:/cygdrive/c/Program Files/apache-tomcat-7.0.2/apache-tomcat-7
    .0.2/bin:/usr/lib/lapack)

    How to over come this problem.

  13. Following up on my issues, here is what I got so far:

    $ ./bin/rebuildjar.sh
    lib/mysql-connector-java-5.1.13-bin.jar has changed, rebuilding JAR
    unzipping JARs…
    making cached JAR….
    compiling…
    compiling with ‘fsc’…
    using cached common…
    compiling sars…
    java.lang.NoClassDefFoundError: scala/collection/Seq
    at java.lang.Class.getDeclaredConstructors0(Native Method)
    at java.lang.Class.privateGetDeclaredConstructors(Class.java:2389)
    at java.lang.Class.getConstructor0(Class.java:2699)
    at java.lang.Class.getConstructor(Class.java:1657)
    at scala.tools.nsc.plugins.Plugin$.instantiate(Plugin.scala:149)
    at scala.tools.nsc.plugins.Plugins$$anonfun$loadRoughPluginsList$1.apply
    (Plugins.scala:29)
    at scala.tools.nsc.plugins.Plugins$$anonfun$loadRoughPluginsList$1.apply
    (Plugins.scala:28)
    at scala.List.map(List.scala:812)
    at scala.tools.nsc.plugins.Plugins$class.loadRoughPluginsList(Plugins.sc
    ala:28)
    at scala.tools.nsc.Global.loadRoughPluginsList(Global.scala:34)
    at scala.tools.nsc.plugins.Plugins$class.roughPluginsList(Plugins.scala:
    38)
    at scala.tools.nsc.Global.roughPluginsList(Global.scala:34)
    at scala.tools.nsc.plugins.Plugins$class.loadPlugins(Plugins.scala:91)
    at scala.tools.nsc.Global.loadPlugins(Global.scala:34)
    at scala.tools.nsc.plugins.Plugins$class.plugins(Plugins.scala:123)
    at scala.tools.nsc.Global.plugins(Global.scala:34)
    at scala.tools.nsc.plugins.Plugins$class.computePhaseDescriptors(Plugins
    .scala:155)
    at scala.tools.nsc.Global.computePhaseDescriptors(Global.scala:34)
    at scala.tools.nsc.Global.phaseDescriptors(Global.scala:442)
    at scala.tools.nsc.Global$Run.(Global.scala:490)
    at scala.tools.nsc.StandardCompileServer.session(CompileServer.scala:118
    )
    at scala.tools.util.SocketServer$$anonfun$run$1.apply(SocketServer.scala
    :81)
    at scala.tools.util.SocketServer$$anonfun$run$1.apply(SocketServer.scala
    :81)
    at scala.util.DynamicVariable.withValue(DynamicVariable.scala:73)
    at scala.Console$.withOut(Console.scala:84)
    at scala.Console$.withOut(Console.scala:102)
    at scala.tools.util.SocketServer.run(SocketServer.scala:80)
    at scala.tools.nsc.StandardCompileServer.main(CompileServer.scala:157)
    at scala.tools.nsc.CompileServer.main(CompileServer.scala)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.
    java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
    sorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at scala.tools.nsc.ObjectRunner$$anonfun$run$1.apply(ObjectRunner.scala:
    75)
    at scala.tools.nsc.ObjectRunner$.withContextClassLoader(ObjectRunner.sca
    la:49)
    at scala.tools.nsc.ObjectRunner$.run(ObjectRunner.scala:74)
    at scala.tools.nsc.MainGenericRunner$.main(MainGenericRunner.scala:154)
    at scala.tools.nsc.MainGenericRunner.main(MainGenericRunner.scala)
    Caused by: java.lang.ClassNotFoundException: scala.collection.Seq
    at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
    … 38 more
    error: fatal error (server aborted): scala/collection/Seq
    one error found

    And i’m running the following version:
    JAVA: jdk1.6.0_21
    SCALA: scala-2.7.7.final
    mysql-connector-java-5.1.13-bin.jar

    If somebody could point me in the right direction.

  14. OK the errors I got above, get fixed by re-installing my SCALA version… might have been some leftovers from the v2.8.

  15. BTW when you change your version of SCALA or whatever dependency version for that matter, don’t forget to use the clearcache option.

    ./bin/rebuildjar.sh clearcache

  16. please can you help me in this problem
    I followed your instructions

    but when I come to $ bin/build.sh
    the result is:
    -bash: bin/build.sh: No such file or directory
    please tell me what to do
    i am running win7
    thanks in advance
    Dr.Amal

Leave a Reply

Your email address will not be published. Required fields are marked *