有馬総一郎のブログ

(彼氏の事情)

2022年12月11日 18:23:19 JST - 3 minute read - Linux

update-alternativesで選択肢に表示されないアプリを登録する

前回、sudo visudoをしてパスワード入力時にアスタリスクが表示されるようにしたけど、そのvisudoで起動されるのがnanoだった。おいおい冠に付いてるviはハッタリかよ。

よく分からないのはSUDO_EDITOREDITORnvimを指定していたにも拘わらずだ。

$ echo $SUDO_EDITOR
/usr/local/nvim-linux64/bin/nvim
$ echo $EDITOR
/usr/local/nvim-linux64/bin/nvim

解決方法は Ubuntuのvisudoエディタが変nanoになる - それマグで!に書いてある。/usr/bin/select-editorを実行して選択すれば良いだけらしい。しかし…

$ /usr/bin/select-editor
Select an editor. To change later, run 'select-editor'.
  1. /bin/nano        <---- easiest
  2. /usr/bin/mcedit
  3. /usr/bin/vim.tiny
Choose 1-3 [1]: ^C

nvimが選択肢として表示されない。だから、変数でnvimを設定しているのに、駄目だったのだろうか?

ということで update-alternativesの使い方(vimをeditorグループに登録する) - やってみるを参照に選択肢に追加させようとする。sudo update-alternatives --install /usr/bin/editor editor /usr/local/nvim-linux64/bin/nvim 50を実行。優先度によっては、これによってエディタのデフォルトがnvimになっている。

一応、確認する。

$ sudo update-alternatives --install /usr/bin/editor editor /usr/local/nvim-linux64/bin/nvim 50
update-alternatives: /usr/bin/editor (editor) を提供するために自動モードで /usr/local/nvim-linux64/bin/nvim を使います
$ /usr/bin/select-editor

Select an editor.  To change later, run 'select-editor'.
  1. /usr/local/nvim-linux64/bin/nvim
  2. /bin/nano        <---- easiest
  3. /usr/bin/mcedit
  4. /usr/bin/vim.tiny

Choose 1-4 [2]: 1

/etc/alternatives/配下のeditornvimにリンクされている。

$ ls -l /etc/alternatives/editor 
lrwxrwxrwx 1 root root 32 12月 10 01:28 /etc/alternatives/editor -> /usr/local/nvim-linux64/bin/nvim

失敗例

上で参考にしたサイトにあるとおり、以下のような引数で登録する。

–install <リンク> <名前> <パス> <優先度>

<リンク> は /etc/alternatives/<名前> を指すシンボリックリンクです。 (例: /usr/bin/pager)

当初、リンクを何処にすれば良いのか分からなくて、sudo update-alternatives --install /etc/alternatives/nvim nvim /usr/local/nvim-linux64/bin/nvim 50なんてやっちゃったんだよね。

これだと、突っ込みたいところ満載だし、当然エラーになる上に中途半端にリンクが残る。editorグループじゃなくて、nvimグループが登録/etc/alternatives/nvimされて、/etc/alternatives/nvimが更に/etc/alternatives/nvimにリンクしようとする変なリンクが残存してしまう。なのでsudo update-alternatives --remove-all nvimで削除できなくて、sudo rm /etc/alternatives/nvimで削除した。

もし、本当にnvimのバージョンを幾つもインストールしてそれを管理するためにnvimグループを登録するとしたら、sudo update-alternatives --install /usr/local/bin/nvim nvim /usr/local/nvim-v9.0.0-dev/bin/nvim 50という形で登録することになる。

これで、/usr/local/bin/nvim/usr/local/nvim-v9.0.0-dev/bin/nvimへのリンクが貼られて、更に/etc/alternatives/nvimにも、登録しているのが一つ、もしくは再優先度なので/usr/local/nvim-v9.0.0-dev/bin/nvimがリンクが貼られることなる。

正しく登録できている場合は、sudo update-alternatives --remove-all nvimで両方のリンクを削除することが出来る。

何か、それまでエディタ、ターミナルの設定が上手く行かなかったりしたのは、変数だけでなく、ここらへん/etc/alternativesの登録などが上手く行ってなかったのかも知れない…