0
$\begingroup$

I am trying to install bowtie2 aligner from sources without the root access. Bowtie2 needs tbb package to be installed and it is recommended to install oneTBB.

# install one TBB
mkdir -p SHOME/soft
cd $HOME/soft
git clone https://github.com/oneapi-src/oneTBB.git
cd oneTBB
make

Then I add C_INCLUDE_PATH to .bashrc:

echo "export C_INCLUDE_PATH=$HOME/soft/oneTBB/include" >> ~./bashrc

and continue to install bowtie2:

# install bowtie2
mkdir -p $HOME/soft/bowtie/source
cd $HOME/soft/bowtie/source
wget https://sourceforge.net/projects/bowtie-bio/files/bowtie2/2.4.1/bowtie2-2.4.1-source.zip
unzip bowtie2-2.4.1-source.zip -d ..
cd ../bowtie2-2.4.1
make

TBB library is recognized but in the end I get this error:

/usr/bin/ld: cannot find -ltbb
/usr/bin/ld: cannot find -ltbbmalloc_proxy
collect2: error: ld returned 1 exit status

ltbb and ltbballoc_proxy are not in TBB but libtbb and libtbballoc_proxy instead. I also tryed to add variables to .bashrc:

TBB_LIB_PATH=$HOME/soft/oneTBB
TBB_INCLUDE_PATH=$HOME/soft/oneTBB/include
TBB_RELEASE_DIR=$HOME/soft/oneTBB/build/home/suvar/apps/oneTBB/build/linux_intel64_gcc_cc9.3.0_libc2.31_kernel5.4.0_release

but seems it does not help.

I need help to complete the installation of bowtie2 on our server.

$\endgroup$
4
1
$\begingroup$

You need to give the path to the source files for the compiler and the full path to the compiled libraries (all parent directories included) for the linker. You also need to use either CPATH or CPLUS_INCLUDE_PATH instead of C_INCLUDE_PATH to point to the oneTBB source, since bowtie2 is C++ and C_INCLUDE_PATH will only have an effect for C (see Environment Variables Affecting GCC in the GCC documentation for more info.)

For example like this, inside bowtie2-2.4.1, without making any lasting changes to the shell's setup in this case:

$ ONETBB=$HOME/soft/oneTBB
$ export LIBRARY_PATH=$ONETBB/build/linux_intel64_gcc_cc5.4.0_libc2.23_kernel4.4.0_release
$ export LD_LIBRARY_PATH=$LIBRARY_PATH
$ export CPATH=$ONETBB/include
$ make

After it's built you'll still need the library path to oneTBB defined (via LD_LIBRARY_PATH) so bowtie2 can find it at run-time.

But if you don't have a specific reason to compile from source I'd recommend avoiding it. You could go with what h.mon suggested and use an existing binary, or use a package manger to install it like zorbax suggested. Conda has a package for bowtie2 in the bioconda channel, up through and beyond version 2.4.1, and you can use that as a package manager without root access.

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.