# Developing as non root Many examples tell you to do things like sudo python setup.py install or sudo gem install foo or ./configure --prefix=/ make install While this is o.k. if you know what you're doing and you give a crap about package management risking to break other scripts and tools by introducint new library versions it is often much better to not install the libraries into a location where other tools can setp on it (e.g. /usr/lib, /usr/bin or /usr/local/\*). ## Ruby Use bundler to pull Gems from [rubygems.org](http://rubygems.org). The *Gemfile* describes what you want to pull in: source 'https://rubygems.org' group :development, :test do gem 'puppetlabs_spec_helper', :require => false gem 'puppet-lint', :require => false gem 'puppet', puppetversion, :require => false gem 'rake', '~> 10.1.0', :require => false gem 'rspec-puppet', :require => false gem 'simplecov', :require => false end With that in place you can run sudo apt-get install bundler bundle install --path=vendor and it will fetch the gems and put them into vendor/. No cluttering of any directories outside your project. You can run commands from that via bundle exec e.g. bundle exec rake spec ## NodeJS npm ## GNOME jhbuild ## Generic C/C++ project For a limited set of libs you can do: PREFIX=$PWD/../installed ./configure --prefix=$PREFIX make install export LD_LIBRARY_PATH=$PREFIX see e.g. libplanfahr's ./run ## Python For Python there's virtualenv virtualenv newtestenv source newtestenv/bin/activate From there on you can use the new environment already, e.g. install a module into it: cd mymodule python setup.py install This would install the module (along with it's dependenies) into you new *testenv*.