Organizing tools/ software
3
1
Entering edit mode
5.6 years ago
shibl_a ▴ 20

I constantly download tools and programs to work with. I don't want to have to create a new PATH every time. How can I organize ALL my tools/ programs/ scripts (old and new) into one place so that I don't have to worry about running commands from anywhere on my terminal? any ideas?

software error • 1.5k views
ADD COMMENT
0
Entering edit mode

How is this a software error? Please use logical tags.

ADD REPLY
0
Entering edit mode

Thank you for your suggestion. It was the closest I could find to describe my question. If there were other tags I would've used them.

ADD REPLY
0
Entering edit mode

You can just use whatever you want as a tag and don't have to use the suggestions.

ADD REPLY
0
Entering edit mode

I actually enjoy installing and organising these programs but I never store their location in my PATH (a few rare exceptions). I use them with the absolute paths in all scripts and rely on an initial well-organised file system to avoid headaches later down the line.

ADD REPLY
3
Entering edit mode
5.6 years ago
kloetzl ★ 1.1k

Personally, I try to avoid make install from any software like the plague. Usually, I forget about the software so it just ends up filling my disk space and leading to other issues (not receiving any updates etc.). Instead these days I have a directory with a bunch of 3rd party software source files (commonly also git repo clones). There I build the tools and have a symbolic link from $HOME/bin to each tool with $HOME/bin being in my $PATH. That way uninstalling is easy, updating is easy (git pull && make), and I even have the source code at hand if I stumble upon a bug. This scheme is almost as good as making my own package via makepkg or smthn similar.

ADD COMMENT
0
Entering edit mode

I use this slightly modified: $HOME/usr and ./configure --prefix=$HOME/usr or make --prefix=$HOME/usr. This way I can safely execute make install and keep source and binaries separated.

The advantage is that all (bin, lib, man, etc...) will end up in $HOME/usr. The disadvantage is that you'd still have to link each executable to one folder that you add to you're path. Or add each path in $HOME/usr/bin to your profile/bashrc

ADD REPLY
3
Entering edit mode
5.6 years ago

If working with Linux, copy the binaries in a path included into your path. I use to use /usr/local/bin You need to be superuser to be able to do it

Another possibiity is to add the export PATH command in a file such as .bashrc that is read every time you initiate Linux.

ADD COMMENT
3
Entering edit mode
5.6 years ago

Use tools like conda, docker to manage software installations. Containerized software is better for version management and reproducibility of workflows

ADD COMMENT
0
Entering edit mode

Hi- I'm not very familiar with docker and friends (they have been on my todo list for quite a while...). Are you suggesting that every time you start a new project you should create a docker instance with all the necessary tools in it (like bwa, bedtools, R & packages, custom scripts etc)? Then when the project is finished you distribute the docker container?

ADD REPLY
0
Entering edit mode

I like the idea of being able to have everything I need for a project in one place. I'll check out docker. Thanks for the inspiration.

ADD REPLY
0
Entering edit mode

Containerized software is better for version management and reproducibility of workflows

That really depends on the person and how organised they are.

ADD REPLY

Login before adding your answer.

Traffic: 2793 users visited in the last hour
Help About
FAQ
Access RSS
API
Stats

Use of this site constitutes acceptance of our User Agreement and Privacy Policy.

Powered by the version 2.3.6