💻

FedoraのAlternativesを一般ユーザー権限で使う

に公開

FedoraのAlternatives

FedoraのAlternativesは、同一の機能を持つコマンドを同じシステム上に共存しやすくする仕組み。簡単に言えば、シンボリックリンクを使って実際に実行するコマンドを切り替えている。詳細はFedoraパッケージングガイドライン内のウェブサイトやmanpageを参照。

機能としては、システム管理者が用いることがメインだとは考えられるが、一般ユーザーが何らかのソフトウェアの開発版などを複数バージョン共存させる場合などにも使うことができる。

実例:Neovimの安定版とプレリリース版の共存

Fedora 42ではNeovimがneovimパッケージとして提供されている。そのNeovimとプレリリース版を共存するときの実例は以下のとおり。

準備

Alternatives用のディレクトリーを作成する。それぞれ設定を記載するファイルを格納するためのディレクトリーとシンボリックリンクを格納するためのディレクトリーとなる。

$ mkdir -p /home/user/.local/etc/alternatives
$ mkdir -p /home/user/.local/lib/alternatives

FedoraのNeovimをインストールする。

$ sudo dnf install neovim

Neovimのプレリリース版(AppImage)をインストールする。

$ test -d /home/user/bin || mkdir /home/user/bin
$ install -m0755 /path/to/nvim-linux-x86_64.appimage /home/user/bin

それぞれのNeovimをAlternativesで管理する

一般ユーザー権限で使うため、ホームディレクトリー以下にadmindirとaltdirを用意する。また、--installオプションの引数は順に「リンク」「名前」「パス」「優先度」を意味する。

ここではneovimパッケージで提供されるより、プレリリース版の優先度を高く設定する。

$ alternatives --admindir /home/user/.local/lib/alternatives \
--altdir /home/uesr/.local/etc/alternatives \
--install /home/user/bin/nvim nvim /usr/bin/nvim 20
$ alternatives --admindir /home/user/.local/lib/alternatives \
--altdir /home/user/.local/etc/alternatives \
--install /home/user/bin/nvim nvim /home/uesr/bin/nvim-linux-x86_64.appimage 30

以上で、/home/user/bin/nvimを実行すればNeovimプレリリース版が起動することになる。

設定を確認する

--displayオプションを使って現在の設定を確認することができる。

$ alternatives --admindir /home/user/.local/lib/alternatives \
--altdir /home/user/.local/etc/alternatives \
--display nvim

実行されるコマンドを切り替える

実行されるコマンドは--configオプションを使って切り替えることができる。

$ alternatives --admindir /home/user/.local/lib/alternatives --altdir /home/user/.local/etc/alternatives --config nvim

2 個の 'nvim' を提供するプログラムがあります。

  選択       コマンド
-----------------------------------------------
   1           /usr/bin/nvim
*+ 2           /home/user/bin/nvim-linux-x86_64.appimage

Enter を押して現在の選択 [+] を保持するか、選択番号を入力します: 

優先度が高いものを自動で設定する

--autoオプションを使えば優先度が一番高いものが設定される。

$ alternatives --admindir /home/user/.local/lib/alternatives \
--altdir /home/user/.local/etc/alternatives \
--auto nvim

Discussion