# Linux #### Preparation The following list is what you need to install on your development machine. **You should install all of them before you build Seafile**. Package names are according to Ubuntu 14.04. For other Linux distros, please find their corresponding names yourself. * autoconf/automake/libtool * libevent-dev ( 2.0 or later ) * libcurl4-openssl-dev (1.0.0 or later) * libgtk2.0-dev ( 2.24 or later) * uuid-dev * intltool (0.40 or later) * libsqlite3-dev (3.7 or later) * valac (only needed if you build from git repo) * libjansson-dev * qtchooser * qtbase5-dev * libqt5webkit5-dev * qttools5-dev * qttools5-dev-tools * valac * cmake * python-simplejson (for seaf-cli) * libssl-dev * libargon2-dev === "Ubuntu" ```bash sudo apt-get install autoconf automake libtool libevent-dev libcurl4-openssl-dev libgtk2.0-dev uuid-dev intltool libsqlite3-dev valac libjansson-dev cmake qtchooser qtbase5-dev libqt5webkit5-dev qttools5-dev qttools5-dev-tools libssl-dev libargon2-dev ``` === "Fedora 20/23" ```bash $ sudo yum install wget gcc libevent-devel openssl-devel gtk2-devel libuuid-devel sqlite-devel jansson-devel intltool cmake libtool vala gcc-c++ qt5-qtbase-devel qt5-qttools-devel qt5-qtwebkit-devel libcurl-devel openssl-devel argon2-devel ``` #### Building First you should get the latest source of libsearpc/ccnet/seafile/seafile-client: Download the source tarball of the latest tag from * (use v3.2-latest) * * For example, if the latest released seafile client is 8.0.0, then just use the **v8.0.0** tags of the four projects. You should get four tarballs: * libsearpc-v3.2-latest.tar.gz * seafile-8.0.0.tar.gz * seafile-client-8.0.0.tar.gz ```sh # without alias wget= might not work shopt -s expand_aliases export version=8.0.0 alias wget='wget --content-disposition -nc' wget https://github.com/haiwen/libsearpc/archive/v3.2-latest.tar.gz wget https://github.com/haiwen/ccnet/archive/v${version}.tar.gz wget https://github.com/haiwen/seafile/archive/v${version}.tar.gz wget https://github.com/haiwen/seafile-client/archive/v${version}.tar.gz ``` Now uncompress them: ```sh tar xf libsearpc-3.2-latest.tar.gz tar xf ccnet-${version}.tar.gz tar xf seafile-${version}.tar.gz tar xf seafile-client-${version}.tar.gz ``` To build Seafile client, you need first build **libsearpc** and **ccnet**, **seafile**. ##### set paths ```bash export PREFIX=/usr export PKG_CONFIG_PATH="$PREFIX/lib/pkgconfig:$PKG_CONFIG_PATH" export PATH="$PREFIX/bin:$PATH" ``` ##### libsearpc ```bash cd libsearpc-3.2-latest ./autogen.sh ./configure --prefix=$PREFIX make sudo make install cd .. ``` ##### seafile In order to support notification server, you need to build libwebsockets first. ```bash git clone --branch=v4.3.0 https://github.com/warmcat/libwebsockets cd libwebsockets mkdir build cd build cmake .. make sudo make install cd .. ``` You can set `--enable-ws` to no to disable notification server. After that, you can build seafile: ```bash cd seafile-${version}/ ./autogen.sh ./configure --prefix=$PREFIX --disable-fuse make sudo make install cd .. ``` #### seafile-client ```bash cd seafile-client-${version} cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=$PREFIX . make sudo make install cd .. ``` #### custom prefix when installing to a custom `$PREFIX`, i.e. `/opt`, you may need a script to set the path variables correctly ```bash cat >$PREFIX/bin/seafile-applet.sh <$PREFIX/bin/seaf-cli.sh <