Estou tentando instalar o pacote exuberant-ctags no Linux Mint. Para fazer isso, executei:

$ sudo apt-get install exuberant-ctags Reading package lists... Done Building dependency tree Reading state information... Done The following NEW packages will be installed: exuberant-ctags 0 upgraded, 1 newly installed, 0 to remove and 81 not upgraded. Need to get 0 B/120 kB of archives. After this operation, 334 kB of additional disk space will be used. Selecting previously unselected package exuberant-ctags. (Reading database ... 339129 files and directories currently installed.) Preparing to unpack .../exuberant-ctags_1%3a5.9~svn20110310-7ubuntu0.1_amd64.deb ... Unpacking exuberant-ctags (1:5.9~svn20110310-7ubuntu0.1) ... Processing triggers for man-db (2.6.7.1-1ubuntu1) ... Setting up exuberant-ctags (1:5.9~svn20110310-7ubuntu0.1) ... update-alternatives: using /usr/bin/ctags-exuberant to provide /usr/bin/ctags (ctags) in auto mode 

A última linha sugere que ctags-exuberant seja usado em vez de ctags.

Quando, entretanto, reinicio o bash e executo ctags -e, recebo o erro:

ctags: invalid option -- "e" 

Embora a opção -e esteja disponível em exuberant-ctags.

Por quê hasn “t exuberant-ctags substituído ctags?

$ command -v ctags /usr/local/bin/ctags 

Este é não é o que eu quero

$ ls -l /usr/bin/ctags lrwxrwxrwx 1 root root 23 Dec 28 2015 /usr/bin/ctags -> /etc/alternatives/ctags 
$ ls -l /etc/alternatives/ctags lrwxrwxrwx 1 root root 24 Aug 9 21:22 /etc/alternatives/ctags -> /usr/bin/ctags-exuberant 
$ ctags --version ctags (GNU Emacs 24.5) Copyright (C) 2015 Free Software Foundation, Inc. This program is distributed under the terms in ETAGS.README 

Comentários

  • Atualize a pergunta com o resultado de command -v ctags e ls -l /usr/bin/ctags e ls -l /etc/alternatives/ctags e ctags --version
  • @StephenHarris concluído.

Resposta

É possível que sua instalação tenha adicionado exuberant-ctags como uma opção para alte rnatives.

/usr/bin/update-alternatives --display ctags 

Se estiver apontando para a versão errada, você pode definir manualmente a alternativa

sudo /usr/bin/update-alternatives --set ctags /usr/bin/ctags-exuberant 

No seu caso, porém (com base na atualização da sua pergunta), você tem uma versão não empacotada de ctags em seu PATH (/usr/local/bin/ctags) antes da versão ctags-exuberant e alternatives empacotada, então isso está sendo chamado primeiro.

Você também precisa para remover essa versão, modifique seu $PATH ou adicione um link simbólico para /usr/bin/ctags anteriormente em seu caminho (talvez $HOME/bin) para que você “esteja executando a versão que deseja executar.

Comentários

  • Obrigado. Porém, está apontando para a versão correta. link currently points to /usr/bin/ctags-exuberant.
  • Quando executo /usr/bin/ctags-exuberant -e ele funciona. Como um hack rápido, posso criar um alias como este: alias ctags='/usr/bin/ctags-exuberant'. Editar: isso não funciona porque o emacs aparentemente usa outro shell.
  • Obrigado. Remover esta versão local do ctags resolveu o problema. Muito obrigado pela ajuda! Fico feliz em ter aprendido o comando command.

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *