らくがきちょう

なんとなく ~所属組織/団体とは無関係であり、個人の見解です~

CentOS8 へ Universal Ctags をインストールする

CentOS8 へ Universal Ctags をインストール手順をメモしておきます。 CentOS8 のリポジトリでは Universal Ctags が提供されていませんので以下、いずれかの方法でインストールします。

  1. Snap でインストールする
  2. ソースコードからインストールする

Snap でインストールする

Snap でインストールします。

結論

dnf -y install epel-release
dnf -y install snapd
systemctl enable --now snapd.socket
ln -s /var/lib/snapd/snap /snap
snap install universal-ctags

Step.1

Sanp は EPEL リポジトリで提供されている為、最初に EPEL を追加します。

dnf -y install epel-release

Step.2

現時点ではバージョン 2.43.3 でした。

# dnf info snapd
Last metadata expiration check: 0:01:31 ago on Wed Apr 29 11:55:03 2020.
Available Packages
Name         : snapd
Version      : 2.43.3
Release      : 1.el8
Architecture : x86_64
Size         : 18 M
Source       : snapd-2.43.3-1.el8.src.rpm
Repository   : epel
Summary      : A transactional software package manager
URL          : https://github.com/snapcore/snapd
License      : GPLv3
Description  : Snappy is a modern, cross-distribution, transactional package manager
             : designed for working with self-contained, immutable packages.

Snap をインストールします。

dnf -y install snapd

Step.3

Snap を利用する為にソケットを開始しておきます。

systemctl enable --now snapd.socket

ここまでの手順で、以下のように表示されるようになりました。

# snap --version
snap    2.43.3-1.el8
snapd   2.43.3-1.el8
series  16
centos  8
kernel  4.18.0-147.8.1.el8_1.x86_64

Step.4

Classic Snap 用に /snap ディレクトリを作成しておきます。

ln -s /var/lib/snapd/snap /snap

Step.5

(Ubuntu とは異なり) CentOS の場合は Snap 関連の設定を /etc/profile.d/snapd.sh で実施しているようです。 初期状態でこのファイルは以下の内容でした。

# shellcheck shell=sh

# Expand $PATH to include the directory where snappy applications go.
snap_bin_path="/var/lib/snapd/snap/bin"
if [ -n "${PATH##*${snap_bin_path}}" -a -n "${PATH##*${snap_bin_path}:*}" ]; then
    export PATH=$PATH:${snap_bin_path}
fi

# Ensure base distro defaults xdg path are set if nothing filed up some
# defaults yet.
if [ -z "$XDG_DATA_DIRS" ]; then
    export XDG_DATA_DIRS="/usr/local/share:/usr/share"
fi

# Desktop files (used by desktop environments within both X11 and Wayland) are
# looked for in XDG_DATA_DIRS; make sure it includes the relevant directory for
# snappy applications' desktop files.
snap_xdg_path="/var/lib/snapd/desktop"
if [ -n "${XDG_DATA_DIRS##*${snap_xdg_path}}" -a -n "${XDG_DATA_DIRS##*${snap_xdg_path}:*}" ]; then
    export XDG_DATA_DIRS="${XDG_DATA_DIRS}:${snap_xdg_path}"
fi

この内容を反映させる為、シェルへログインし直します (ログアウト&ログインします)。

Step.6

Universal Ctags をインストールします。

snap install universal-ctags

これで Universal Ctags を利用出来るようになりました。

# ctags --version
Universal Ctags 0.0.0(e0a976d7), Copyright (C) 2015 Universal Ctags Team
Universal Ctags is derived from Exuberant Ctags.
Exuberant Ctags 5.8, Copyright (C) 1996-2009 Darren Hiebert
  Compiled: Dec 16 2019, 17:58:44
  URL: https://ctags.io/
  Optional compiled features: +wildcards, +regex, +iconv, +option-directory, +xpath, +json, +interactive, +yaml, +packcc

ソースコードからインストールする

ソースコードからインストールしていきます。

結論

dnf -y install autoconf automake libtool
git clone --depth 1 https://github.com/universal-ctags/ctags.git
cd ctags
./autogen.sh
./configure
make
sudo make install

Step.1

依存しているパッケージをインストールしておきます。

dnf -y install autoconf automake libtool

Step.2

GtiHub から Shallow Clone し、インストールします。

git clone --depth 1 https://github.com/universal-ctags/ctags.git
cd ctags
./autogen.sh
./configure
make
sudo make install

インストールされました。

# ctags --version
Universal Ctags 0.0.0(f66acf7), Copyright (C) 2015 Universal Ctags Team
Universal Ctags is derived from Exuberant Ctags.
Exuberant Ctags 5.8, Copyright (C) 1996-2009 Darren Hiebert
  Compiled: Apr 29 2020, 11:40:43
  URL: https://ctags.io/
  Optional compiled features: +wildcards, +regex, +iconv, +option-directory, +packcc