def _install_setuptools(): version = "0.6c11" python_version = "2.6" url = "http://pypi.python.org/packages/%s/s/setuptools/setuptools-%s-py%s.egg#md5=bfa92100bd772d5a213eedd356d64086" % (python_version, version, python_version) with _make_tmp_dir() as work_dir: with cd(work_dir): run("wget %s" % url) sudo("sh %s" % os.path.split(url)[1].split('#')[0]) print(green("----- setuptools installed -----"))
def _install_r_packages(): f = tempfile.NamedTemporaryFile() f.write(r_packages_template) f.flush() with _make_tmp_dir() as work_dir: put(f.name, os.path.join(work_dir, 'install_packages.r')) with cd(work_dir): sudo("R --vanilla --slave < install_packages.r") f.close() print(green("----- R packages installed -----"))
def _get_sge(): sge_dir = 'ge6.2u5' url = "%s/ge62u5_lx24-amd64.tar.gz" % CDN_ROOT_URL install_dir = env.install_dir if not exists(os.path.join(install_dir, sge_dir, 'ge-6.2u5-bin-lx24-amd64.tar.gz') or \ os.path.join(install_dir, sge_dir, 'ge-6.2u5-common.tar.gz')): with _make_tmp_dir() as work_dir: with contextlib.nested(cd(work_dir), settings(hide('stdout'))): run("wget %s" % url) sudo("chown %s %s" % (env.user, install_dir)) run("tar -C %s -xvzf %s" % (install_dir, os.path.split(url)[1])) print(green("----- SGE downloaded and extracted to '%s' -----" % install_dir)) else: print(green("SGE already exists at '%s'" % install_dir))
def _install_postgresql(): version = "8.4.4" url = "http://wwwmaster.postgresql.org/redir/198/h/source/v%s/postgresql-%s.tar.gz" % (version, version) install_dir = os.path.join(env.install_dir, "postgresql") with _make_tmp_dir() as work_dir: with contextlib.nested(cd(work_dir), settings(hide('stdout'))): run("wget %s" % url) run("tar xvzf %s" % os.path.split(url)[1]) with cd("postgresql-%s" % version): run("./configure --prefix=%s" % install_dir) with settings(hide('stdout')): print "Making PostgreSQL..." run("make") sudo("make install") sudo("cd %s; stow postgresql" % env.install_dir) print(green("----- PostgreSQL installed -----"))
def _install_nginx(): version = "1.2.0" upload_module_version = "2.2.0" upload_url = "http://www.grid.net.ru/nginx/download/" \ "nginx_upload_module-%s.tar.gz" % upload_module_version url = "http://nginx.org/download/nginx-%s.tar.gz" % version install_dir = os.path.join(env.install_dir, "nginx") remote_conf_dir = os.path.join(install_dir, "conf") # skip install if already present if exists(remote_conf_dir) and contains(os.path.join(remote_conf_dir, "nginx.conf"), "/cloud"): return with _make_tmp_dir() as work_dir: with contextlib.nested(cd(work_dir), settings(hide('stdout'))): run("wget %s" % upload_url) run("tar -xvzpf %s" % os.path.split(upload_url)[1]) run("wget %s" % url) run("tar xvzf %s" % os.path.split(url)[1]) with cd("nginx-%s" % version): run("./configure --prefix=%s --with-ipv6 --add-module=../nginx_upload_module-%s " "--user=galaxy --group=galaxy --with-http_ssl_module --with-http_gzip_static_module " "--with-cc-opt=-Wno-error --with-debug" % (install_dir, upload_module_version)) run("make") sudo("make install") with settings(warn_only=True): sudo("cd %s; stow nginx" % env.install_dir) nginx_conf_file = 'nginx.conf' url = os.path.join(REPO_ROOT_URL, nginx_conf_file) with cd(remote_conf_dir): sudo("wget --output-document=%s/%s %s" % (remote_conf_dir, nginx_conf_file, url)) nginx_errdoc_file = 'nginx_errdoc.tar.gz' url = os.path.join(REPO_ROOT_URL, nginx_errdoc_file) remote_errdoc_dir = os.path.join(install_dir, "html") with cd(remote_errdoc_dir): sudo("wget --output-document=%s/%s %s" % (remote_errdoc_dir, nginx_errdoc_file, url)) sudo('tar xvzf %s' % nginx_errdoc_file) cloudman_default_dir = "/opt/cloudman/sbin" sudo("mkdir -p %s" % cloudman_default_dir) if not exists("%s/nginx" % cloudman_default_dir): sudo("ln -s %s/sbin/nginx %s/nginx" % (install_dir, cloudman_default_dir)) print(green("----- nginx installed and configured -----"))
def _install_proftpd(): version = "1.3.4a" postgres_ver = "9.1" url = "ftp://ftp.tpnet.pl/pub/linux/proftpd/distrib/source/proftpd-%s.tar.gz" % version install_dir = os.path.join(env.install_dir, 'proftpd') remote_conf_dir = os.path.join(install_dir, "etc") # skip install if already present if exists(remote_conf_dir): print(green("ProFTPd seems to already be installed in {0}".format(install_dir))) return with _make_tmp_dir() as work_dir: with cd(work_dir): run("wget %s" % url) with settings(hide('stdout')): run("tar xvzf %s" % os.path.split(url)[1]) with cd("proftpd-%s" % version): run("CFLAGS='-I/usr/include/postgresql' ./configure --prefix=%s " \ "--disable-auth-file --disable-ncurses --disable-ident --disable-shadow " \ "--enable-openssl --with-modules=mod_sql:mod_sql_postgres:mod_sql_passwd " \ "--with-libraries=/usr/lib/postgresql/%s/lib" % (install_dir, postgres_ver)) sudo("make") sudo("make install") sudo("make clean") # Get the init.d startup script initd_script = 'proftpd.initd' initd_url = os.path.join(REPO_ROOT_URL, 'conf_files', initd_script) remote_file = "/etc/init.d/proftpd" sudo("wget --output-document=%s %s" % (remote_file, initd_url)) sed(remote_file, 'REPLACE_THIS_WITH_CUSTOM_INSTALL_DIR', install_dir, use_sudo=True) sudo("chmod 755 %s" % remote_file) # Set the configuration file conf_file = 'proftpd.conf' conf_url = os.path.join(REPO_ROOT_URL, 'conf_files', conf_file) remote_file = os.path.join(remote_conf_dir, conf_file) sudo("wget --output-document=%s %s" % (remote_file, conf_url)) sed(remote_file, 'REPLACE_THIS_WITH_CUSTOM_INSTALL_DIR', install_dir, use_sudo=True) # Get the custom welcome msg file welcome_msg_file = 'welcome_msg.txt' welcome_url = os.path.join(REPO_ROOT_URL, 'conf_files', welcome_msg_file) sudo("wget --output-document=%s %s" % (os.path.join(remote_conf_dir, welcome_msg_file), welcome_url)) # Stow sudo("cd %s; stow proftpd" % env.install_dir) print(green("----- ProFTPd %s installed to %s -----" % (version, install_dir)))
def _install_samtools(): version = "0.1.18" vext = "" mirror_info = "?use_mirror=cdnetworks-us-1" url = "http://downloads.sourceforge.net/project/samtools/samtools/%s/" \ "samtools-%s%s.tar.bz2" % (version, version, vext) install_dir = "/usr/bin" install_cmd = sudo if not exists(install_dir): install_cmd("mkdir -p %s" % install_dir) with _make_tmp_dir() as work_dir: with cd(work_dir): run("wget %s%s -O %s" % (url, mirror_info, os.path.split(url)[-1])) run("tar -xjvpf %s" % (os.path.split(url)[-1])) with cd("samtools-%s%s" % (version, vext)): run("sed -i.bak -r -e 's/-lcurses/-lncurses/g' Makefile") run("make") for install in ["samtools", "misc/maq2sam-long"]: install_cmd("mv -f %s %s" % (install, install_dir)) print "----- SAMtools %s installed to %s -----" % (version, install_dir)