I have user access to a Ubuntu instance and I'd like to use CTags. The error says:

The program 'ctags' can be found in the following packages:
 * exuberant-ctags
 * emacs22-bin-common
 * emacs21-bin-common
 * elvis-tools
 * emacs-snapshot-bin-common
Ask your administrator to install one of them
-bash: ctags: command not found

This and all the instructions online indicate that I need to be root. Is there a way to install it as a user?

7 Answers 7



You will need to compile it yourself and install it in your home directory.

Download ctags source: http://prdownloads.sourceforge.net/ctags/ctags-5.8.tar.gz

In hour shell:

$ tar zxf ctags-5.8.tar.gz
$ cd ctags-5.8
$ ./configure --prefix=$HOME
$ make && make install

This will compile and install ctags in your home directory. The resulting binary will be: $HOME/bin/ctags

You will now have to modify your PATH environment variable prior to launching vim.

$ vim $HOME/.bashrc (or whichever shell you're using)

put this line in your .bashrc

export PATH="$HOME/bin:$PATH"

You will now need to resource your .bashrc (remember that .bashrc is normally only loaded from non-interactive shells. Make sure that you source .bashrc from .bash_profile)

If you need to, modify your .bash_profile and make sure it has a line like:

. $HOME/.bashrc


source $HOME/.bashrc

To continue without closing your shell, simply type:

$ . $HOME/.bashrc

You can now launch vim and ctags will be working.

  • No --- the point of Ubuntu and Debian is that you have more than 20,000 sanely built and configured packages available.
    – Dirk Eddelbuettel
    Nov 5, 2009 at 20:33
  • 4
    Yes, sometimes you don't have permission to run apt-get install, like when you have an account with a hosting provider where you share the machine with many other users. I find sometimes I need to install a source tarball this way, and these instructions are solid.
    – Harold L
    Nov 5, 2009 at 20:40
  • debian packages are wonderful and all, but any unix user should know how to install packages from source into a local directory. It's useful for testing packages before installing globally, compiling a personal version that's different from the local version (I always compile a custom mutt for myself), and it works on every unix-like operating system.
    – user16952
    Nov 5, 2009 at 21:44
  • For me it looks like .bash_profile already gets loaded even with just a terminal login (setup by the admin sometime ago). So adding that line made a circular reference, and locked up bash! Using scp, I got rid of .bash_profile and fixed it. Your post is helpful in general. Just wanted to point out the possible problem with pointing to bashrc from bash_profile.
    – phyatt
    Oct 22, 2015 at 14:08
  • Nevermind. I had another portion of my bashrc that was sensitive to being loaded twice. Not related to your answer. Sorry for the misinformation on my part.
    – phyatt
    Oct 29, 2015 at 15:08

You don't have to compile anything. Ctags is just a single binary program, so you can download the appropriate package, unpack it and put the binary in your path. Like that:

mkdir tmp
cd tmp 
wget http://mirrors.kernel.org/ubuntu/pool/main/e/exuberant-ctags/exuberant-ctags_5.5.4-1_i386.deb
dpkg -x exuberant-ctags_5.5.4-1_i386.deb .
mkdir ~/bin
cp usr/bin/ctags-exuberant ~/bin
cd ~/bin
ln -sf ctags-exuberant ctags
export PATH=$PATH:$HOME/bin
  • +1 good idea. May not always work for software that has loads of dependencies (then compiling from source will be easier), but if it works it's simpler than compiling.
    – sleske
    Dec 27, 2009 at 14:32

You should be able to do it yourself if you compile and install your own copy of the editor. You're not going to be able to install a system-wide package like the ones it's asking for without being root.


If you are the one who installed this Ubuntu machine, then you are the user with uid 1000 meaning that you can run commands requiring root via the sudo command, e.g.

sudo app-get install exuberant-ctags

You may need to precede this with

sudo apt-get update

to get fresh package information.

  • You fail at reading the question. He said he doesn't have root access. Nov 5, 2009 at 20:39

Certainly, just install it in your home directory from source.

Go to http://ctags.sourceforge.net/ and download the latest version. Expand it, open a terminal and go to the directory where you expanded it, then do this:

./configure --prefix=`( cd ~ ; pwd ~ )`
make all
make install

Now, edit your PATH with this (assuming bash, which is probably what you are using if you don't know how to do this without help):

export PATH=$PATH:`( cd ~ ; pwd ~ )`/bin

You might want to add that last line into your .bashrc or .bash_profile file as well for that matter.

  • How does pwd ~ differ from just pwd? Why not just $HOME?
    – Harold L
    Nov 5, 2009 at 20:41

You can always install it localy, say under your home directory. After that add the directory where ctags resides to yout shell PATH environment variable.


Definitely, you can compile it, and install it to a specific directory without root permission.

If you're already using Anaconda, you can install ctags with anaconda

conda install -c conda-forge ctags


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.