ctags: Unknown option: --kinds-c

在本地搭建 Bootlin elixir 查阅内核代码的时候,每当执行到 python3 update.py 这一步骤的时候,终端上总会报“ctags: Unknown option: --kinds-c”这个warning,执行完成以后在浏览器打开bootlin的页面,会发现ident功能不能用(无法在网页上直接点击函数名/变量名去查看函数/变量的定义和调用)。

搭建本地bootlin elixxir的方法可以参考一下两个链接:

https://barryx.cn/build_bootlin_elixir/

https://github.com/bootlin/elixir

 

根据搭建的步骤,明明已经安装了特殊版本的ctags(universal-ctags_0+git20200526-0ubuntu1_amd64.deb),为啥还是不行呢?

查看elixir/script.sh,发现使用的命令就是ctags 。

执行 dpkg -X universal-ctags_0+git20200526-0ubuntu1_amd64.deb ./ 把deb包解压缩,发现它的usr/bin/目录下有ctags-universal、readtags两个可执行程序。

# which ctags
/usr/bin/ctags
# ls -l /usr/bin/ctags
lrwxrwxrwx 1 root root 23 12月 18  2021 /usr/bin/ctags -> /etc/alternatives/ctags
# ls -l /etc/alternatives/ctags
lrwxrwxrwx 1 root root 24 12月 16 14:26 /etc/alternatives/ctags -> /usr/bin/ctags-exuberant

是不是发现点什么了?是的,系统里原先安装有ctags,特殊版本的ctags虽然安装了但是并没有使用到。

那就重定向/etc/alternatives/ctags到/usr/bin/ctags-universal呗。

先 rm /etc/alternatives/ctags 删除,再 ln -s /usr/bin/ctags-universal /etc/alternatives/ctags 重新生成。

这样,再调用ctags的时候,由于 /usr/bin/ctags -> /etc/alternatives/ctags -> /usr/bin/ctags-universal,调用的就是特殊版本的ctags(/usr/bin/ctags-universal)了。

这时再执行python3 update.py,就不会再报“ctags: Unknown option: --kinds-c”的warning了。索引生成完成以后,ident功能也可以正常使用了。

 

posted @ 2022-12-16 15:00  闹闹爸爸  阅读(215)  评论(0编辑  收藏  举报