srsudar / eg

Useful examples at the command line.
MIT License
1.82k stars 99 forks source link

eg is not installed #5

Closed neovea closed 9 years ago

neovea commented 9 years ago

Hello, I tried installing eg on ubuntu 14.04 : git clone https://github.com/srsudar/eg ln -s eg/eg/eg_exec.py /usr/local/bin/eg tried the example eg find it returns : Le programme « eg » n'est pas encore installé. Vous pouvez l'installer en tapant : sudo apt-get install easygit in english : the "eg" program is not installed yet. You can install it by typing : sudo apt-get install easygit Any idea of what's wrong ? Thanks

srsudar commented 9 years ago

Interesting. It looks like maybe a couple things are going on. The first is that it seems to want to treat eg as a way to invoke easygit, which makes me think I may have stepped on another command that normally goes by eg, but first let's see if it's finding the symlink.

After running the ln command you showed above, try running: ls -l /usr/local/bin/eg.

It should show you that the command has been aliased, something like this for me when I do it for my go command:

$ ls -l /usr/local/bin/go
lrwxr-xr-x  1 sudars  admin  25 May 22  2014 /usr/local/bin/go@ -> ../Cellar/go/1.2.1/bin/go

Do you see something like that pointing to eg_exec.py? If not, then the creation of the symlink failed for some reason. You should try again but putting the link in the normal place for bin files on your machine. /usr/local/bin/ is a common place on OSX, but maybe /usr/bin or something is more common on Linux.

If you DO see the link pointing to the correct place, try invoking it directly to see if it works by running: /usr/local/bin/eg find. If that works, then it might be a path issue. In this case I would try moving /usr/local/bin/ earlier in your path and see if you can just run eg find then. If everything else is working, it sounds like maybe apt-get is in the habit of telling you immediately if you don't have a command that it thinks it is responsible for, even if you have it elsewhere on your path.

Let me know if any of that works.

neovea commented 9 years ago

Thanks for answering. I did ls -l /usr/local/bin/eg which returned lrwxrwxrwx 1 root root 16 avril 25 22:13 /usr/local/bin/eg -> eg/eg/eg_exec.py. I removed this symlink and put one in /usr/bin. Still cannot make it works. However, it works by typing python eg_exec.py find.

srsudar commented 9 years ago

What is the error when you try running eg find? Is it the same one about easygit, or is it something else?

neovea commented 9 years ago

The error remains the same.

srsudar commented 9 years ago

It sounds then like it works on your machine, we just have to get the links in the right place.

What is the output if you do /usr/bin/eg find? Does it work or is there an error?

What is the output of echo $PATH?

neovea commented 9 years ago

The output says (translation) : 'too many symbolic link levels' (Trop de niveaux de liens symboliques). Echoing the $PATH returns /home/user/.linuxbrew/bin:/home/user/.rvm/gems/ruby-2.1.3/bin:/home/user/.rvm/gems/ruby-2.1.3@global/bin:/home/user/.rvm/rubies/ruby-2.1.3/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/home/user/.rvm/bin:/home/user/.rvm/bin

srsudar commented 9 years ago

Hmm, how mysterious. I would remove the link with rm /usr/bin/eg.

Then try remaking it with the absolute path to eg_exec.py, starting at the root of the file system, like:

ln -s /home/user/full/path/to/eg/eg_exec.py /usr/bin/eg

You can get the full path by cd'ing into the directory with eg_exec.py and typing pwd, which should give you the full path to that folder and will end with eg/. Then put /eg_exec.py onto the end of it and create the symlink.

After you've done that, what is the output of ls -l /usr/bin/eg?

Try running /usr/bin/eg find again after doing that and see if you still get the same error about the symbolic link levels.

neovea commented 9 years ago

Ok absolute path solved the problem. Works like a charm now. Thank you !

srsudar commented 9 years ago

Great!